你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407 DMA NVIC设置

[复制链接]
Verne 提问时间:2024-10-11 14:27 / 未解决

采用STM32F407, DMA1 stream5(request: usart2_rx) DMA1 stream6(usart2_tx), USART2 global interrupt优先级设置为1,1; STREAM5,STREAM6 GLOBAL INTERRUPT优先级设置为0,0;

请问:NVIC设置中DMA1 STREAM5 GLOBAL INTERRUPT 和DMA1 STREAM6 GLOBAL INTERRUPT都已经选择了ENABLED, 但是是灰色显示的,而USART2 global interrupt也选择了ENALBED,但是是可以修改的状态;灰色不可修改的状态是什么意思?

在串口有数据接收时,是怎么调用中断服务程序的,先调DMA1_stream5_IRQHandler(void)还是先调USART2_IRQHnalder(void)?

调试时只发现程序调用了USART2_IRQHANDLER?不知道正不正确?

谢谢指点!

收藏 评论2 发布时间:2024-10-11 14:27

举报

2个回答
xmshao 回答时间:2024-10-11 16:53:01
1、中断优先级你根据各个中断响应优先需求来设置。一般来讲,在中断事件不多且中断服务程序都比较简洁时,优先级都设置一样也问题不大。
在系统功能复杂,中断众多时,优先级的合理安排就显得很重要了。


2、你在cubeMx配置里看到DMA中断使能是灰色时,这里表示不能手动,CubeMx已经默认帮我使能DMA相关中断响应了。
不必太过担心。

rrr.png

3、你现在都开启了UART基于DMA方式的收发,当收到数据时无须手动去查询和提取数据了,因为DMA帮完成了数据搬运。我们只需基于
DMA接收完成中断去你设置的接收缓冲里提取数据并进行可能的后续处理。


建议稍微阅读下UART基于DMA接收的相关例程。
Verne 回答时间:2024-10-16 09:27:31

xmshao 发表于 2024-10-11 16:53
1、中断优先级你根据各个中断响应优先需求来设置。一般来讲,在中断事件不多且中断服务程序都比较简洁时,优 ...

感谢!

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版