打印
[应用方案]

APM32 Freertos中断处理

[复制链接]
738|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mollylawrence|  楼主 | 2022-12-12 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、问题背景
APM32的中断优先级是用bit[7:5]来管理的,理论上只能有8个优先级。STM32优先级用bit[7:4]来管理,理论上有16个优先级。

APM32优先级寄存器的bit[4]没有用,读出默认是0.

但cube只要选了freertos后,优先级分组只能选NVIC_PRIORITYGROUP_4,不能改为NVIC_PRIORITYGROUP_3. 但似乎也没啥大影响,只是会对优先级进行截断,比如设置的优先级是5,实际是4,设置为11,实际是10。所以在cube里默认配置,同时编程人员自己心理清楚真实的优先级就行了。

但实际运行中,发现freertos启动不起来。和官方历程对比后,发现需要在“FreeRTOSConfig.h”中,手动屏蔽configASSERT即可 。如下所示:

// #define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );}
1
二、原因
如果开启了configASSERT, freertos中,会到处检查优先级的配置是否正确。cube中启动了rtos后,只能设置stm32的优先级分组为NVIC_PRIORITYGROUP_4,而实际APM32的优先级分组为NVIC_PRIORITYGROUP_3,所以导致很多configASSERT检查失败,跳到了死循环里。
原文链接:https://blog.csdn.net/chshch83/article/details/126678771

使用特权

评论回复
沙发
Undshing| | 2023-1-3 15:28 | 只看该作者
为啥会对优先级进行截断?

使用特权

评论回复
板凳
lzbf| | 2023-1-5 12:18 | 只看该作者
使用操作系统,为什么要使用中断呢?

使用特权

评论回复
地板
timfordlare| | 2023-1-6 12:52 | 只看该作者
这个中断怎么和freertos结合起来?

使用特权

评论回复
5
janewood| | 2023-1-6 15:45 | 只看该作者
还可使用cube?              

使用特权

评论回复
6
wangdezhi| | 2023-1-6 17:42 | 只看该作者
这个中断会不会影响节奏?              

使用特权

评论回复
7
olivem55arlowe| | 2023-1-9 10:13 | 只看该作者
这个为什么要添加中断呢?              

使用特权

评论回复
8
maqianqu| | 2023-1-9 12:40 | 只看该作者
Freertos的教程在哪里下载的

使用特权

评论回复
9
earlmax| | 2023-1-9 13:31 | 只看该作者
中断会不会影响代码的执行呢?              

使用特权

评论回复
10
ccook11| | 2023-1-9 16:33 | 只看该作者
Freertos可以使用哪些中断呢?

使用特权

评论回复
11
lzmm| | 2023-2-7 20:32 | 只看该作者
Freertos中断最好不要使用。

使用特权

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

本版积分规则

30

主题

1655

帖子

1

粉丝