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连接位置与原理图:

我要赚赏金
