FreeRTOS在PIC32MX系列微处理器上的调试心得

1. 引言

最近在调试程序时发现程序会在运行一段时间后崩溃。在仔细阅读FreeRTOS和PIC32MX的相关资料后,修改了FreeRTOS配置,调整了优先级设置,优化了关键区域的代码,显著降低了崩溃的概率。在这里分享一些心得。

想学习FreeRTOS的基础知识请阅读专栏:
1. FreeRTOS基础篇
2. FreeRTOS高级篇

2. 配置FreeRTOSConfig.h

这里主要提几个与PIC32MX微处理器的特性有关的配置项,其他通用的配置请参考 FreeRTOS系列第6篇—FreeRTOS内核配置说明

/* Interrupt nesting behaviour configuration. */

/* The priority at which the tick interrupt runs.  This should probably be kept at 1. */
#define configKERNEL_INTERRUPT_PRIORITY         1

/* The maximum interrupt priority from which FreeRTOS.org API functions can be called.  
Only API functions that end in ...FromISR() can be used within interrupts. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY    6

PIC32MX的中断优先级为1-7,其中1最低,7最高。低优先级的中断触发的中断服务程序可以被高优先级的中断打断,从而执行更紧急的中断服务程序。

系统定时器中断使用最低优先级1,其可以被中断优先级为2-7的中断嵌套。

优先级为2-6的中断触发的中断服务程序里,可以使用FreeRTOS提供的后缀为FromISR()的API函数。

优先级为7的中断触发的中断服务程序不受FreeRTOS的影响,且不可以使用后缀为FromISR()的API函数。

设置configMAX_SYSCALL_INTERRUPT_PRIORITY的意义在于,使一些中断服务函数可以使用自己的栈空间。不高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断服务程序都使用相同的中断栈空间。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值