汽车电子MCU开发之FreeRtos中断优先级设置的重要性

1. 项目背景

     项目是基于Nxp Mcu+FreeRtos,成品是车机(车载导航系统),也是刚入职接手的项目,机器总是无缘无故的重启,没有规律

2. 问题结果

     Mcu代码里面驱动中断优先级设置不对,全部都是默认的优先级,并且有些调用了系统API函数,所以机器会不定时产生重启

3. 分析和说明

      1.对比FreeRtos和Ucos的明显区别

               关于Mcu中断的设置,FreeRtos和Ucos有着明显的区别,其中FreeRtos是可以设置一个中断优先级界限的(#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 0x03),不同芯片的优先级大小不一样(有些芯片是优先级越高,数值越低,有些是优先级越高,数值越高),基于这个优先级我们就可以设定某些驱动不受系统切换时禁止中断的管制。

      2.关于FreeRtos优先级设置

              这里我们以优先级越高,数值越低的芯片进行说明,S32K就是如此

              上面我们已经提到FreeRtos有个设置优先级界限的#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 0x03,即小于3的优先级是不受系统管制的,但是不可以调用系统Api函数,大于3的可以调用系统Api函数。而且这里得提出有些芯片提供的SDK包里面的驱动是带有Blocking功能的,那你就得特别注意了,这里肯定是使用了系统API函数的,中断优先级必须设置在 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY之后

              所以如果你是在使用FreeRtoss,并且遇到了同样的问题,请记住千万要检查中断优先级设置对不对,希望对你们有帮助

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城事讲嵌入式开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值