STM32CubeMX入门教程(二)——点灯

  • Post author:
  • Post category:其他

终于要点灯了!

在点灯之前,我们需要做的应该是看板子的原理图,找准LED的GPIO口,以及他的相关电路,以此我们才知道应该配置成什么,

上图!

 如图,LED模块有三个灯,LED0和LED1以及一个电源信号灯,而且LED1和LED0接的都是VCC,然后就去寻找LED0和LED1对应的引脚,对应的是PF9和PF10.

正因为LED接的是vcc,因此我们要想使其导通应该给低电平,这样才能使其导通。

明白了电路原理,紧接着就可以点开cubemx进行配置。

在FIle里点击新建,然后选择相应的芯片STM32F407ZGT6,然后队时钟进行配置。

 RCC选择高速时钟HSE,SYS的Debug选择Serial Tire(总线),如果这个不选择,而后续把程序烧录进芯片里了话,那板子就是一次性的,所以之后的每次配置一定要记得。

而TimeBase Source的意思,顾名思义,就是时钟来源,我们这里系统默认的是系统时钟,这里还可以选择定时器产生的时间信号,这个我们后续会介绍。       

 然后就是应该配置时钟树,这个是32的心跳,如果想进行任何操作,一定要首先给32提供心跳,在这里只要按照下图配置即可。主频8Mhz。

 

接下来应该配置GPIO,

在point view视窗里配置PF9和PF10为GPIO_OUTPUT 模式,

 

 输出电平为低电平,GPIO的模式选择为推挽输出,选择的是pull_up,在自己的GPIO备注里也可以自己定义,而速度则对应的是GPIO响应速率,选择低速即可,两个GPIO口都需要这样定义。

然后即可生成相应的文件,这里的ide看个人需求,我选择的是keil,然后生成代码,编译,无报错无警告,

 然后下载进开发板,两个灯都成功点亮!!!

(分别是红灯和黄灯,蓝灯是电源灯) 

本着模块化编程的原则,我们针对led的点亮,写一个函数,就不用每次调用hal库的函数了。

#ifndef KEY_LED_H
#define KEY_LED_H

#ifdef  LED1_Pin//LED1的控制,通过调用相关HAL库函数
  #define LED1_Toggle()  HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin)//翻转电平
	#define LED1_ON()    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET) //给低电平
  #define LED1_OFF()  HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET)  //给高电平
#endif

#ifdef LED0_Pin//LED0控制
  #define LED0_Toggle()  HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin)
  #define LED0_ON()  		HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET)
	#define LED0_OFF()     HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET)
#endif




#endif

引用Key_LED.h之后,直接在main函数里调用,即可熄灭LED1.

 大功告成!!!

然后我们可以简单利用HAL_Delay 函数做一个跑马灯

  下一期预告,按键点灯!!


版权声明:本文为m0_60853221原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。