• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

uCOS与FreeRTOS的区别

Spirit 2018-11-30 浏览量:1276

uCOS的中断服务中,必须用OSIntEnter()和OSIntExit()括起来。如下:

//USB唤醒中断服务函数
void USBWakeUp_IRQHandler(void)
{
    OSIntEnter();
 EXTI_ClearITPendingBit(EXTI_Line18);//清除USB唤醒中断挂起位
   
}

而FreeRTOS中就没有这种要求。是不是因为FreeRTOS有关任务的函数大多分普通和中断两种版本有关?比如:

xQueueSendFromISR和xQueueSend

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • freertos在中断中调用系统的API需要加上fromISR,这些函数本身就有中断保护功能的,因此freertos没有这个要求
    • 发布于 2018-12-11
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 应该是两个系统对中断的处理机制不同的,具体的还是去分析源码了
    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 没看过 ucos,但是 RTOS 这一类小的系统处理 中断服务,任务调度,应该都是一样的方式,毕竟硬件都i是一模一样的,OSIntEnter()和OSIntExit() 这些函数都仅仅是底层函数的接口,是个封装,一个 RTOS 可以把这些接口抽象成 5 层,另一个 RTOS 可以只把这些接口抽象成 2 层,就有 3 层接口的差异,实际上硬件操作还是一点都没变,因为不管哪个 RTOS 都是操作的同一套 arm 硬件核心。只是个人看法,没分析过代码,不保证这个观点正确,仅参考
    • 发布于2018-12-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 表示的是你的系统在任务切换的时候会对资源进行保护
    • 发布于2019-01-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 防止系统切换任务,用这个是不被打断
    • 发布于2018-12-01
    • 举报
    • 评论 0
    • -1
    • 0

  • 这个可以说是一个原子操作了,就是不可以打断的
    • 发布于2018-12-02
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

uCOS与FreeRTOS的区别