STM32中断与DMA通信编程学习
STM32中断与DMA通信编程学习
1.stm32中断
1.中断原理
中断是由内核外部产生的,一般由硬件引起,比如外设中断和外部中断等。
处理器和外部设备的数据传输方式:
中断全过程:
中断过程执行示意图:
中断的作用:
中断优先级:
中断响应过程:
2. 通过中断控制LED灯(使用cubemx软件)
1.项目生成
1.新建项目选择自己的开发板型号
2.选择PC13(即板载的LED灯)设置为GPIO_Output输出模式,PB9设置为GPIO_EXTI9中断模式
3.设置PB9的GPIOmode
4.将PC13引脚默认设置为高
5.SYS配置为serialwire
6.在NVIC中开启中断
7.将项目名称等设置好生成代码。
2.编写代码
在main.c文件中加上如下代码,他是中断回调函数中断时便会调用这个函数。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4); //翻转电平
/* NOTE: This function Should not be modified, when the callback is needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
}
3.编译烧录运行观察结果
可以发现将PB9线接上拔掉都会使这个LED发生变化
3.编写代码实现串口中断
1.通过cubemx生成项目
依然是依靠cubemx创建一个项目
大部分设置照旧
这里要设置串口,选择USART1,将他设置成异步(Asynchronous)模式,在下方可以看到他的一些相关参数
2.设置使能中断
3.其他照旧设置,生成项目。
2.在keil中编写代码
在while中添加如下语句,通过串口发送“hello windows"
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
HAL_Delay(1000);
3.通过flymcu烧录
4.运行结果
五、总结
通过本次实验了解了中断的使用方法,学习了DAM发送数据。
4.参考文献
https://blog.csdn.net/m0_58414679/article/details/121060073?spm=1001.2014.3001.5501
https://blog.csdn.net/as480133937/article/details/104827639/