【蓝桥杯嵌入式】【HAL库】一、LED流水灯

原理图分析

在这里插入图片描述
74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”,led此时不会改变状态,所以可通过led对应的八个引脚的电平来控制led的状态,原理图分析可知,PC脚低电平时led导通。

STM32CubeMX配置

时钟配置,选择高速时钟HSE——C/C R(晶体/陶瓷振荡器),时钟频率改为80MHz(直接在HCLK空处输入80+回车键即可)
在这里插入图片描述
在这里插入图片描述
GPIO的配置,将8个LED和LE对于的引脚配置如下:
在这里插入图片描述
注:建议给每个引脚重命名一下,方便单独调试等,当然,不重命名也是没关系的。

引脚的配置,如:PC8 configuration
GPIO output level:引脚初始状态的电平,此处为low低电平,因为我们要实现流水灯的效果需要八个LED一开始就要全亮!不理解的小伙伴思考一下就懂辽。
GPIO mode:引脚的模式,因为我们要改变高、低电平,所以要“发出”信号,即输出模式。
GPIO Pull-up/Pull-dowm:上拉还是下拉,还是都不。一般来说,需要区分这个GPIO口用于输入还是输出。如果是output,一般选择no pull,这样,引脚才能根据你的output数据,进行正确输出。如果是input,那么需要看具体应用的默认输入值是0还是1. 如果默认是输入0,则最好配置为pull down,反之则配置为pull up.这样做,主要是为了外部电路在没有上下拉的情况下,出现不确定情况。有许多硬件工程师设计电路时,会在GPIO口的外部设计上下拉电阻,这和内部配置pull up/down是一个目的,且效果相同。
GPIO speed:速度选Low即可。
User Label:重复名

生成代码:注:路径不要有中文!!!会报错的
在这里插入图片描述
在这里插入图片描述
点击右上角的GENERATE CODE 即可生成keil工程。

代码

以下为部分main代码,找到位置粘贴即可。

  /* USER CODE BEGIN 2 */
  HAL_GPIO_WritePin(LE_GPIO_Port , LE_Pin , GPIO_PIN_SET);//LE引脚置高,锁存器导通

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  //翻转LD1的状态,并延迟100ms,以下LD2~LD8同理
		HAL_GPIO_TogglePin(LD1_GPIO_Port , LD1_Pin);
		HAL_Delay(100);
	  
	  	HAL_GPIO_TogglePin(LD2_GPIO_Port , LD2_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD3_GPIO_Port , LD3_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD4_GPIO_Port , LD4_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD5_GPIO_Port , LD5_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD6_GPIO_Port , LD6_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD7_GPIO_Port , LD7_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD8_GPIO_Port , LD8_Pin);
		HAL_Delay(100);

  }
  /* USER CODE END 3 */

版权声明:本文为CSDN博主「学不会又咋了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FORWARDGOOD/article/details/122569335

原理图分析

在这里插入图片描述
74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”,led此时不会改变状态,所以可通过led对应的八个引脚的电平来控制led的状态,原理图分析可知,PC脚低电平时led导通。

STM32CubeMX配置

时钟配置,选择高速时钟HSE——C/C R(晶体/陶瓷振荡器),时钟频率改为80MHz(直接在HCLK空处输入80+回车键即可)
在这里插入图片描述
在这里插入图片描述
GPIO的配置,将8个LED和LE对于的引脚配置如下:
在这里插入图片描述
注:建议给每个引脚重命名一下,方便单独调试等,当然,不重命名也是没关系的。

引脚的配置,如:PC8 configuration
GPIO output level:引脚初始状态的电平,此处为low低电平,因为我们要实现流水灯的效果需要八个LED一开始就要全亮!不理解的小伙伴思考一下就懂辽。
GPIO mode:引脚的模式,因为我们要改变高、低电平,所以要“发出”信号,即输出模式。
GPIO Pull-up/Pull-dowm:上拉还是下拉,还是都不。一般来说,需要区分这个GPIO口用于输入还是输出。如果是output,一般选择no pull,这样,引脚才能根据你的output数据,进行正确输出。如果是input,那么需要看具体应用的默认输入值是0还是1. 如果默认是输入0,则最好配置为pull down,反之则配置为pull up.这样做,主要是为了外部电路在没有上下拉的情况下,出现不确定情况。有许多硬件工程师设计电路时,会在GPIO口的外部设计上下拉电阻,这和内部配置pull up/down是一个目的,且效果相同。
GPIO speed:速度选Low即可。
User Label:重复名

生成代码:注:路径不要有中文!!!会报错的
在这里插入图片描述
在这里插入图片描述
点击右上角的GENERATE CODE 即可生成keil工程。

代码

以下为部分main代码,找到位置粘贴即可。

  /* USER CODE BEGIN 2 */
  HAL_GPIO_WritePin(LE_GPIO_Port , LE_Pin , GPIO_PIN_SET);//LE引脚置高,锁存器导通

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  //翻转LD1的状态,并延迟100ms,以下LD2~LD8同理
		HAL_GPIO_TogglePin(LD1_GPIO_Port , LD1_Pin);
		HAL_Delay(100);
	  
	  	HAL_GPIO_TogglePin(LD2_GPIO_Port , LD2_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD3_GPIO_Port , LD3_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD4_GPIO_Port , LD4_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD5_GPIO_Port , LD5_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD6_GPIO_Port , LD6_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD7_GPIO_Port , LD7_Pin);
		HAL_Delay(100);

	  	HAL_GPIO_TogglePin(LD8_GPIO_Port , LD8_Pin);
		HAL_Delay(100);

  }
  /* USER CODE END 3 */

版权声明:本文为CSDN博主「学不会又咋了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FORWARDGOOD/article/details/122569335

生成海报
点赞 0

学不会又咋了

我还没有学会写个人说明!

暂无评论

相关推荐