![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UCOS
文章平均质量分 74
玩玩嵌入式
一名还在读书的研究生,记录一些平时的项目笔记
展开
-
uCOS-II实时操作系统移植的大致步骤
uCOS-II移植的大致步骤1、配置滴答定时器(配置时钟节拍ISR)在使用UCOS时,其中心跳时钟是由Systick来提供的,因此要实现任务调度,那么首先得配置systick时钟:主要是根据时钟节拍数(配置文件中)和systick时钟源来配置systick的LOAD值(重装载值);同时开启systick中断;使能时钟开始工作。由于上面开启了systick中断,那么就要编写中断服务函数(异常服务函数)SysTick_Handler()在该函数中,主要是做了一件事:如果当前OS在正常运行,那么进入中断,原创 2021-09-18 21:03:36 · 2297 阅读 · 0 评论 -
UCOSII中消息邮箱的使用方法详解
UCOS中到底如何使用邮箱来进行任务间通信?1、在中断服务程序中(ISR)可不可以发送消息?在ISR中,是可以发送消息的。类似的,也可以发送信号量、消息队列等。这里需要注意的一点是不能在ISR中请求消息,即不能调用OSXXXPend()函数。原因是在该函数中首先要判断中断的嵌套层数,如果当前的嵌套层数大于0,那么会直接返回空,如下图(UCOSII源码:OSXXXPend()函数)这里另外说一下,判断某个函数能否在中断中使用,这里需要去看源代码,在该函数真正执行相应动作之前都会先进行一系列的判断操作,原创 2021-04-29 11:41:50 · 4789 阅读 · 0 评论 -
UCOSII中断和任务调度
在UCOS中断服务程序中调用发送函数OSXXPost()是否会引发一次调度?例:在中断中发送一个信号量,此时会不会进行任务切换?答:不会,必须在中断服务程序执行完毕,退出中断的时候才会进行任务切换,原因如下:发送函数OSXXPost()之所以可以实现任务切换,是调用了OS_Sched()函数。但是从下面OS_Sched()函数的源代码中可以看到,真正进行任务切换的函数是OS_TASK_SW()。而执行该函数的前提是中断嵌套层数等于0,即:if (OSIntNesting == 0)。因此在中断服务函数原创 2021-01-11 21:31:32 · 1167 阅读 · 1 评论