一、基于HAL库的LED流水灯
1.利用CubeMX创建项目
1)新建工程
2)选择芯片
3)配置GPIO
引脚配置
1 A4,B9,C15输出控制灯的亮灭,设置为GPIO_Output
2 A1,A7同样设置为GPIO_Output,A1设置为高电平,A7设置为低电平
3 C13作为指示灯,设置为GPIO_Output
4 B5模拟开关,设置为GPIO_EXTI5,中断配置设置成上升沿和下降沿都触发
User Label设置别名,方便以后调用。
下图为设置触发模式。
4)配置SYS
5)配置RCC
6)配置NVIC
7)时钟配置
8)生成代码
2.进入Keil修改代码
1)寻找中断处理函数
2)在main.c重写中断处理
代码如下:
uint16_t flag=0; //声明变量,作为开关标志
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_5){ //确认中断位置
GPIO_PinState pinState = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5); //获取B5当前电位
if(pinState==GPIO_PIN_SET)//高电位流水灯亮
{
flag=1;
}
else if(pinState==GPIO_PIN_RESET)//低电位流水灯灭
{
flag=0;
}
}
}
3)流水灯的实现代码
代码如下(替换原while):
while (1)
{
if(flag==1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4亮灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
HAL_Delay(500);//延时0.5s
}
else if(flag==0){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
HAL_Delay(500);//延时0.5s
}
if(flag==1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9亮灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
HAL_Delay(500);//延时0.5s
}
else if(flag==0){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
HAL_Delay(500);//延时0.5s
}
if(flag==1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15亮灯
HAL_Delay(500);//延时0.5s
}
else if(flag==0){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
HAL_Delay(500);//延时0.5s
}
}
3.电路连接
4.效果展示
黑线接A7,低电平,红线接A1,高电平,棕线接B5,为开关。
接A1,灯亮;接A7,灯灭。
二、观察管脚的时序波形
1.相关配置