HAL库LED点灯


一、HEL库GPIO端口3只LED红绿灯的周期闪烁

1.CubeMX建项目

1.创建新项目
在这里插入图片描述
2.选择芯片(STM32F103C8T6)
在这里插入图片描述

3.SYS选择
在这里插入图片描述
4.RCC选择
在这里插入图片描述
5.设置对应的引脚
在这里插入图片描述
6.时钟设置
在这里插入图片描述
7.文件路径及命名
在这里插入图片描述
8.生成项目
在这里插入图片描述

2.main.c中写入代码

    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灭


3.编译下载

在这里插入图片描述

4.烧录现象

HAL库流水灯

二、采用中断模式编程,当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库开发可以再之后的项目中大大增加其便捷性。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值