实验目的:
学习stm32中断、DMA通信原理和编程方法。使用stm32tubemx和HAL库分别完成以下编程练习:
-
用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
-
采用串口中断方式重做上周的串口通信作业。
-
STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。
什么是中断?
中断是当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理,CPU暂停当前的工作,转去处理事件B,当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A。
简单来说,就是停止做的事情,过会儿继续做。
实验步骤:
首先首先打开STM32CUBEMX,新建一个工程:
点击RCC中的Crystal
给工程命名,选择IDE型号:
打开工程,加入中断代码:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
for(long i = 1;i<72000;i++){}; //消除抖动
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==1)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
}
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
}
LED短脚接地,长脚接PB9,按键一端接3.3V,一端接PB8
烧录程序:
演示效果:
、