打印
[应用相关]

stm32中断优先级

[复制链接]
708|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-10-21 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32中断优先级必须配置吗?
用到的是usart1,usart2和uart4,数据发送过快,程序很容易跑飞,连中断也进不去了。

工程用的寄存器配置的,没有用库函数。
求助各位大神,uart的中断优先级如何配置。

看了一下权威指南,还是不知道怎么下手。

使用特权

评论回复
沙发
呐咯密密| | 2024-10-22 10:51 | 只看该作者
可以看一下库函数,从里面找寄存器的配置

使用特权

评论回复
板凳
公羊子丹| | 2025-1-25 09:36 | 只看该作者
USART中断优先级确实很关键,特别是有多个串口同时工作的情况下。你可以试着把USART1的中断优先级设置为最高,USART2和UART4适当调低,优先级数值越小,优先级越高。

使用特权

评论回复
地板
周半梅| | 2025-1-25 09:38 | 只看该作者
看你说的情况,估计是中断被抢占或者没有正确配置优先级。建议先检查一下 NVIC 的配置,特别是 AIRCR 寄存器的分组设置。

使用特权

评论回复
5
帛灿灿| | 2025-1-25 09:39 | 只看该作者
兄弟,跑飞很可能是因为中断处理时间过长,导致系统堆栈溢出。你检查过中断服务程序的执行时间了吗?尽量保持ISR短小精悍。

使用特权

评论回复
6
童雨竹| | 2025-1-25 09:40 | 只看该作者
如果你是用寄存器配置的,检查下以下几点:1)NVIC 中的优先级分组是否配置好;2)各个串口的优先级是否合理分配;3)中断处理是否有逻辑死锁。

使用特权

评论回复
7
万图| | 2025-1-25 09:41 | 只看该作者
数据发送过快会不会是因为串口波特率不匹配或者硬件FIFO溢出?除了配置优先级,检查下USART的溢出标志和DMA能不能帮你减轻中断负担。

使用特权

评论回复
8
Wordsworth| | 2025-1-25 09:42 | 只看该作者
其实权威指南上关于优先级配置讲得有点晦涩。简单说就是先设好分组,然后在 NVIC 里配置每个中断的优先级。USART中断处理最好尽量缩短,复杂的逻辑放到主程序处理。

使用特权

评论回复
9
Bblythe| | 2025-1-25 09:44 | 只看该作者
如果你没有设置中断优先级,NVIC会默认所有中断优先级相同,可能就导致中断互相抢占或者无法进入。你可以先设置 PRIORITYGROUP 为 3,然后试试给USART1分配最高优先级。

使用特权

评论回复
10
Pulitzer| | 2025-1-25 09:45 | 只看该作者
我之前也遇到过类似的问题,后来发现是优先级分组和子优先级没配对好。建议你一步步来,先确认分组,再调优先级。

使用特权

评论回复
11
Uriah| | 2025-1-25 09:46 | 只看该作者
用寄存器配置中断优先级其实也不复杂,设置分组用 SCB->AIRCR,设置优先级用 NVIC->IPx,具体值可以根据实际需求调整。

使用特权

评论回复
12
Clyde011| | 2025-1-25 09:47 | 只看该作者
如果中断优先级配置正确还是不行,可以试着给数据收发加DMA,减少中断频率,或者增加接收缓冲区的大小,这样能缓解跑飞的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

445

主题

1700

帖子

1

粉丝