uCOS
uCOS的学习及使用
C~Tian
CTian
展开
-
UCOSIII(3)——实现任务切换的多种方式
uCOS里面触发任务切换是通过触发PendSv异常,然后在PendSv异常服务函数里面实现的。在运行中实现任务切换的函数有两个:1、任务级任务切换 2、中断级任务切换任务级任务切换:OSCtxSw LDR R0, =NVIC_INT_CTRL ;把 NVIC_INT_CTRL寄存器值加载到R0 ; Trigger the PendSV exception (causes context switch) LDR R1, =NVIC_PENDSVSET ;触发P原创 2020-10-18 22:08:58 · 1481 阅读 · 0 评论 -
UCOSIII(2)——CPU_SR_Save与CPU_SR_Restore临界段代码的实现
临界段代码,也称作临界域,是一段不可分割的代码。我们都知道在进入中断函数或者异常的时候代码会被打断而进入中断服务函数。而有些代码是不允许被打断的,比如:一些外围器件的的初始化(LCD)、任务函数的创建等等。所以在 uCOS 中包含了很多临界段代 码来保护临界段。那么临界段函数是怎么操作的?简单啊——关中断关异常。临界端代码实现的汇编函数:CPU_SR_Save ;通过 MRS 指令将特殊寄存器 PRIMASK 寄存器的值读取到通用寄存器 R0。 MRS R0, PRIMA原创 2020-10-17 23:12:11 · 1610 阅读 · 1 评论 -
UCOSIII(1)——SVC与PenSV实现任务切换
本文基于STM32F407ZGT6——————————————SVC异常:SVC(系统服务调用,亦简称系统调用)用于产生系统函数的调用请求。SVC 异常是必须立即得到响应的应用程序执行 SVC 时都是希望所需的请求立即得到响应。在 UCOS 中并未使用 SVC 这个功能,了解一下即可。在 UCOS 中并未使用 SVC 这个功能,了解一下即可。在 UCOS 中并未使用 SVC 这个功能,了解一下即可。PendSv异常:由于SVC异常是必须立即得到响应的(若因优先级不比当前正处理的高,或是原创 2020-10-17 21:57:42 · 1030 阅读 · 0 评论