历史上的今天
今天是:2024年12月18日(星期三)
2018年12月18日 | STM32使用freertos时在中断中调用系统函数的注意点
2018-12-18 来源:eefocus
CORTEX内核的优先级是数值越小优先级越高,即0是最高优先级。FreeRTOS正好相反,为了满足某些应用对中断实时性要求高的需求,使得中断优先级高于某个值之后,就不能调用操作系统的内核函数来提高实时性。而我们经常所犯的错误就是将中断的优先级设置的高于这个值,却还在中断中调用操作系统提供的API引起的。当把优先级改小也就是数值改大之后,程序能够正常运行。
注意点:
1:首先要将中断的嵌套设置为抢占优先级。
2:将freertos系统内核中断(configKERNEL_INTERRUPT_PRIORITY)的优先级设置成最低。
3:将freertos的最大系统调用中断优先级(configMAX_SYSCALL_INTERRUPT_PRIORITY)设置为合适的优先级,比如11。
4:如果有用户中断函数调用到freertos提供的系统函数,一定要使用带FromISR的freertos提供的系统函数,并且这个用户中断的优先级一定要在configKERNEL_INTERRUPT_PRIORITY和configMAX_SYSCALL_INTERRUPT_PRIORITY的优先级之间。
5:其他没有调用到freertos提供的系统函数的中断的优先级没有特别要求。
FREERTOS中的优先级数值设定的参数是configMAX_SYSCALL_INTERUPT_PRORITY。默认值是5,所以要想在中断中使用操作系统函数需要将中断的优先级设置的大于等于5.
史海拾趣
|
dBm=10log(Pout/1mW),其中Pout是以mW为单位的功率值dBmV=20log(Vout /1mV),其中Vout是以mV为单位的电压值dBuV=20log(Vout /1uV),其中Vout是以uV为单位的电压值换算关系:Pout=Vout×Vout/RdBmV=10log(R/0.001)+dBm,R为负载阻抗dBuV=60+dB ...… 查看全部问答> |
|
医用监护仪是一种能够对人体重要的胜利、生化指标有选择地进行经常性或连续的检测,并且具有存储、显示、分析和控制功能,对超出规定范围的参数发出警报的系统。由于它可以实时、连续、长时间地检测病人的重要的生命参数,因此,成为医院数量较大的 ...… 查看全部问答> |
|
STR710F的SPI接口驱动EEPROM型号为AT25128 STR710F的SPI接口驱动EEPROM型号为AT25128,时序也没什么问题,结果却不对,请高手指点 /**************************C文件****************************/ #include "at251.h" //#include "bspi.h" /////////////////// ...… 查看全部问答> |




