STM32——HAL库LED点灯

一、STM32开发环境搭建

安装STM32CubeMX,配合Keil,完成实验。

参考链接:https://blog.csdn.net/qq_43279579/article/details/112213196

二、LED流水灯(HAL库) 

要求:(1)用GPIO端口完成3只LED灯的周期闪烁。(2)再用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。

1、用GPIO端口完成3只LED灯的周期闪烁。

1、在main.c中的while(1)循环中写入以下代码:(位置约在第95行) 

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // 灯1亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 灯1灭
	  
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);  // 灯2亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);  // 灯2灭
	  
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 灯3亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 灯3灭


2、然后进行编译烧录:

3、烧录结果:

4、在烧录时可能会遇到Cannot Load Flash Device Discription的报错,本人解决办法如下,供大家参考:

点击魔法棒选择Debug模块,点击右上方的Settings:

选择Flash Download模块,点击下方的Add,选择添加缺失的Flash即可:

2、用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。

1、中断引脚与输出引脚配置

2、优先级选择

3、代码实现

在 HAL _ GPIO _ EXTI _ Callback ()函数中设置标志位

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if (GPIO_Pin == GPIO_PIN_0)
  {
      index = 1; 
  }
   if(GPIO_Pin == GPIO_PIN_1)
   {
       index = 0; 
   }
}


在main函数中实现主要功能

 while (1)
  {
   if(index==0)
	 {
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
		HAL_Delay(100);

	 }
  }

三、使用Keil的软件仿真逻辑分析仪功能观察LED管脚的时序波形

1、环境配置

2、仿真结果

四、总结

       HAL库开发比起标准库开发更加便捷高效,利用HAL库开发可以再之后的项目中大大增加其便捷性。由于本人认知浅薄,上述内容或有诸多不详错漏之处,望各位海涵并指出批正。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值