使用GPIO点亮LED,流程如下:
- 使能GPIOC模块:
//电源使能GPIOC
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- 初始化GPIOC:
//初始化GPIOC
GPIO_InitTypeDef GPIOInitStruct;
GPIOInitStruct.GPIO_Pin = GPIO_Pin_13;
GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_OD; //开漏模式
GPIOInitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIOInitStruct);
- 写入ODR,设置Pin13高点电平,点亮STM32自带LED
//方式1:
GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); //熄灭Bit_SET=1
GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);//点亮
//方式2:
GPIO_Write(GPIOC, 0x2000); //熄灭
GPIO_Write(GPIOC, 0x0000); //点亮
//方式3:
GPIO_SetBits(GPIOC, GPIO_Pin_13); //熄灭
GPIO_ResetBits(GPIOC, GPIO_Pin_13); //点亮
反转寄存器信号,以实现LED闪烁功能
//点亮Pin13
GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);
while(1)
{
//延时100ms
PAL_Delay(100);
//反转GPIOC中控制Pin13位置寄存器
if(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET)
{
GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);
}
else
{
GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);
}
}
PAL_Delay函数
static __IO uint64_t ulTicks;//系统当前时间
// @简介:毫秒级延迟
// @参数:Delay - 延迟时长,以毫秒为单位(千分之一秒)
// @返回值:无
// @注意:不允许在中断响应函数中调用此方法
void PAL_Delay(uint32_t Delay)
{
uint64_t expiredTime = ulTicks + Delay;
while(ulTicks < expiredTime){}
}
记于:2024/5/25日