嵌入式小白学习:stm32用HAL中断控制LED
这里写目录标题
Part1. stm32CubeMX的工程创建
本次实验依旧使用STM32CubeMX,HAL库方法完成。
首先,在STM32CubeMX中创建一个新工程文件,芯片选择STM32F103C8。
配置RCC:将High Speed Clock改为 Crystal/Ceramic Resonator。
配置时钟,将HCLK改为72,记得按回车确认。
配置SYS:
Debug处改为 Serial Wire
之后配置端口,将PA2端口改为 GPIO_OutPut
再将PB0端口改为 GPIO_EXTI0
再将PB0端口配置为如图:
之后进行常规的文件路径配置,完成之后生成Project, 打开Project.
Part2. Keil代码的编写与更改
打开keil工程之后,首先找到如下文件:
在这个文件里编写一个新的Callback函数:
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
UNUSED(GPIO_Pin);
}
之后打开main.c,在如图位置加入新的函数
代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
GPIO_PinState b0_pin = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);
switch (GPIO_Pin)
{
case GPIO_PIN_0:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, b0_pin);
break;
}
}
之后进行编译,无错误后生成Hex文件。
Part3.STM32开发板接线连接
大致如图,主要接法如下:
将A2口接到LED灯端,
3.3V电源口接到LED的另一端
之后B0当做中断触发,暂时悬空。其余STM32开发板与USB转TTL接口的接法这里不再赘述。
Part4. 程序烧录及结果展示
进行烧录之后,可以看到LED灯常亮。
然后当B0接线接触后,中断触发,LED灯灭。
Part5. 参考博客
本篇主要参考了如下博客:
链接: STM32之中断控制LED灯