1、在STM32F103C8T6微控制器上操作GPIO以点亮LED,您需要进行以下步骤:
步骤
选择LED连接的GPIO引脚:连接LED的GPIO引脚。在STM32F103C8T6中,GPIO引脚的编号采用端口字母和引脚号的组合,PA4表示A端口的第4号引脚。(我这里是板载LED,LED为绿色)
初始化GPIO引脚:
将选定的GPIO引脚配置为输出模式,以便能够通过控制其电平来控制LED的亮度。
控制LED状态:
设置GPIO引脚的输出电平,使LED点亮或熄灭。
2、示例代码
以下是一个简单的示例代码,演示如何在STM32F103C8T6微控制器上控制一个LED PA4引脚:
#include "stm32f1xx.h" void GPIO_Init(void); int main(void) { // 初始化GPIO引脚 GPIO_Init(); while (1) { // 点亮LED(设置引脚为低电平) GPIOA->BSRR = GPIO_BSRR_BR5; // 延时 for (int i = 0; i < 1000000; i++); // 熄灭LED(设置引脚为高电平) GPIOA->BSRR = GPIO_BSRR_BS5; // 延时 for (int i = 0; i < 1000000; i++); } } /** * GPIO初始化函数 */ void GPIO_Init(void) { // 使能GPIOA的时钟 RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // 配置PA5引脚为推挽输出模式,最大速度为50MHz GPIOA->CRL &= ~(GPIO_CRL_MODE5 | GPIO_CRL_CNF5); GPIOA->CRL |= (GPIO_CRL_MODE5_0); }
代码解释
GPIO_Init函数:配置PA5引脚为推挽输出模式,最大速度为50MHz。
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;:使能GPIOA的时钟。
GPIOA->CRL &= ~(GPIO_CRL_MODE5 | GPIO_CRL_CNF5);:清除PA5引脚的模式和配置位。
GPIOA->CRL |= (GPIO_CRL_MODE5_0);:设置PA5引脚为推挽输出模式,最大速度为50MHz。
main函数:在一个无限循环中交替点亮和熄灭LED。
GPIOA->BSRR = GPIO_BSRR_BR5;:使用位带操作清除PA5引脚,点亮LED(引脚输出低电平)。
GPIOA->BSRR = GPIO_BSRR_BS5;:使用位带操作设置PA5引脚,熄灭LED(引脚输出高电平)。
for (int i = 0; i < 1000000; i++);:简单的延时循环,控制LED的亮灭时间间隔。
3、个人绘画PCB板
4、驱动IO口点亮LED:
5、原理图:
PA4引脚位置:
LED连接位置与原理图: