APM32 Freertos中断处理
一、问题背景APM32的中断优先级是用bit来管理的,理论上只能有8个优先级。STM32优先级用bit来管理,理论上有16个优先级。
APM32优先级寄存器的bit没有用,读出默认是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
为啥会对优先级进行截断? 使用操作系统,为什么要使用中断呢? 这个中断怎么和freertos结合起来? 还可使用cube? 这个中断会不会影响节奏? 这个为什么要添加中断呢? Freertos的教程在哪里下载的 中断会不会影响代码的执行呢? Freertos可以使用哪些中断呢? Freertos中断最好不要使用。
页:
[1]