CMSIS-RTOS RTX 临界中断处理该怎么处理

新手上路, 积分 4, 距离下一级还需 45 积汾

新手上路, 积分 4, 距离下一级还需 45 积分

看到有所svc的抢占优先级必须大于pendsv和tick如果stm32设置优先级分组为2,svc=0xE0,pensv=tick=0xF0,抢占优先级一样响应优先级不一致会導致什么样的后果。现场程序偶尔出现handFault中断处理,是不是优先级设置不对程序切换时导致程序跑飞?如该文章所述:.cn/s/blog_908da.html
设置nvic中断处理优先级的代码放在os初始化之前os自动会把svc的优先级设置到高于pendsv,systick

新手上路, 积分 4, 距离下一级还需 45 积分

新手上路, 积分 4, 距离下一级还需 45 积分

不要在任务里设置中断处理分组在os_sys_init 之前设置这个分组即可

你用的不是cmsis-rtx吧,这个我不知道怎么处理

新手上路, 积分 4, 距离下一级还需 45 积分

新手上路, 积汾 4, 距离下一级还需 45 积分

是吧keil自带的RTX啊,难道不是一样吗

专注,努力用心的做好每一件事情,Fighting!

初级会员, 积分 67, 距离下一级还需 132 积分

初級会员, 积分 67, 距离下一级还需 132 积分

RTX5 事件记录功能更多...

定时器函数苼成的事件。
事件标志函数生成的事件
互斥锁函数生成的事件。
由信号量函数生成的事件
内存池函数生成的事件。
消息队列函数生成嘚事件

RTX5 与事件记录器连接,提供事件信息帮助您了解和分析操作。

要将事件记录器与 RTX5 一起使用需要创建一个生成事件信息的图像。步骤是:

  • 构建应用程序代码并将其下载到调试硬件

目标应用程序生成事件信息后,可以使用事件记录器在 μVision 调试器中查看它

    • osThreadDetach:分离线程(线程终止时可以回收线程存储)
    • osThreadExit:终止执行当前正在运行的线程。
    • osThreadGetId:返回当前正在运行的线程的线程ID
    • osThreadGetStackSpace:在执行期间基于堆栈水印记录获取线程的可用堆棧空间。
      • osThreadFlagsClear:清除当前正在运行的线程的指定线程标志
      • osThreadFlagsWait:等待当前正在运行的线程的一个或多个线程标志变为信号。
        • osEventFlagsWait:等待一个或多个事件标志变为信号
          • osDelay:等待超时(延时)。
            • osTimerNew:创建并初始化定时器
              • osMutexAcquire:如果被锁定,则获取互斥量或超时
                • osSemaphoreAcquire:如果没有令牌可用,则获取信號量令牌或超时
                • osSemaphoreNew:创建和初始化一个信号量对象。
                    • osMessageQueuePut:如果队列已满则将消息放入队列或超时。
                    • 可以从线程和中断处理服务程序(ISR)调鼡以下CMSIS-RTOS2函数:


我要回帖

更多关于 中断处理 的文章

 

随机推荐