本帖最后由 lulugl 于 2023-2-18 17:08 编辑
【目的】用开发板的按键实现闪灯
【开发环境】MacOs 下STM32CubeIDE
【硬件资源】NUCLEO-U575ZI-Q开发板的板载LED灯(LED_RED、LED_BLUE)、板载的用户按键。
【步聚】
1、STM32CubeIDE新建NUCLEO-U575ZI-Q开发板空白工程。
2、主程序控制LED_RED,每秒闪一次。
3、配置用户按键每按一次实现LED蓝灯翻转。
【实现过程】
1、在STM32CubeIDE下面File->New->STM32 Project:
2、选择开发板,输入U575选择如下图的开发板,点Next:
3、填入项目名称,点Finsh完成项目创建:
4、在PinOut选项卡上找到GPIO的Configuration的NVIC下面把EXTI_LINE13的中断Enable选项勾上。
5、在Project Manager选项的Code Genarator上把分文件的选项钩上(当然也可以选择不钩,这样就在main.c中增加代码)
6、按键option+K生成代码。
7、增加红LED灯闪烁代码:
HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin);
/* Insert delay 100 ms */
HAL_Delay(1000);
8、打开gpio.c增加按键中断回调函数代码:
/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == USER_BUTTON_Pin)
{
/* Toggle LED1 */
HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin);
}
}
/* USER CODE END 2 */
9、编译生成工程,并下载到开发板。
10、程序运行效果,开发板上红色LED每1秒闪烁一次,按下用户按键,蓝色LED灯翻一次。
【小结】
1、stm32CubeIDE实现了对开发板的板载外设的初始化,比如3个LED灯、按键、USB、串口、时钟的配置与初始化,用户只要添加少量的代码就可以实现自己想要的功能。
2、这是使用了GPIO的中断输入功能,在中断回调函数中对LED外设进行控制输出。
|