STM32中断与DMA通信

本文详细介绍了STM32中断驱动的LED点灯和串口通信,以及使用DMA进行数据传输的方法。通过STM32CubeMX配置中断和DMA,结合Keil代码修改,实现了中断控制LED、中断方式串口通信以及DMA向上位机发送数据的功能。内容涵盖了同步与异步中断、中断优先级、DMA工作原理及特点。
摘要由CSDN通过智能技术生成

Ⅰ-中断方式点灯

中断

中断通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。这样的事件与 CPU 芯片内外部硬件电路产生的电信号相对应。中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
我们可以通过中断使处理器转而去优先运行正常控制流之外的代码。

中断分为同步中断和异步中断:
同步中断:同步中断是当指令执行时由控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后 CPU 才会发出中断。
异步中断:异步中断是由其他硬件设备依照 CPU时钟信号随机产生的。
通常所说的中断指的是异步中断,我们将同步中断称为异常。(异常是由程序的错误产生的,或者是由内核必须处理的异常条件产生的)
硬中断:通过处理器中断信号线产生的中断
软中断:通过非法指令或特殊指令触发的中断

中断的优先级
多个中断同时出现时,处理器先响应高优先级的中断
低优先级中断的ISR执行时,可以被高优先级中断再次打断
ISR比App Code拥有更高的执行优先级

1.创建STM32CubeMX工程LED

开发板以STM32F103ZE为例
1.设置指示灯LED引脚PB5,设置引脚模式为输出模式GPIO_Output。
设置按键引脚PE8,设置引脚为外部中断功能,PE8与外部中断线EXTI8连接GPIO_EXTI8
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.
PE8对应的外部中断线 点击Enabled
在这里插入图片描述

3.命名 修改 生成代码
在这里插入图片描述
OpenProject
在这里插入图片描述

2.keil代码修改LED

1.找到HAL_GPIO_EXTI_Callback 并重写
在这里插入图片描述

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
   
	if( GPIO_Pin == F8_EXTI_Pin)//判断外部中断源
	{
   
		HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);//翻转LED状态
	}
}

2build debug -run
烧录到开发板中
在这里插入图片描述

3.结果

在这里插入图片描述

Ⅱ-中断方式串口通信

1.创建STM32CubeMX工程USART

开发板STM32F407ZE
在这里插入图片描述
1.设置RCC
在这里插入图片描述
2.设置串口

mode设置为异步通信
在这里插入图片描述
在这里插入图片描述
3.设置时钟
在这里插入图片描述
4.命名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值