UCOSIII
蜘蛛208
这个作者很懒,什么都没留下…
展开
-
10-临界代码各种保护方式比较
UCOSIII 临界代码各种保护方式比较为什么要进行临界代码保护呢,打个比方。比如有两个任务都要使用打印机,根据常识应该知道肯定是一个任务用完后另外一个任务才能用,不然两个任务都有可能打印到同一张纸上,这肯定是我们不愿意看到的。这只是临界代码保护的其中一个例子--用于保护共享资源,除了打印机,还有IO外设等也是共享资源。有些对时间要求较高的时序也不能打断,必须连续运行,比如单总线协议。还...原创 2019-11-10 12:01:06 · 388 阅读 · 0 评论 -
9-钩子函数(介入函数)
UCOSIII 钩子函数(介入函数)UCOSIII的钩子函数有8个,有些书籍会翻译为介入函数,其实是同一个意思。什么是钩子函数呢,也许是因为函数名字直译过来就是钩子吧。具体作用还真的不好定义,还不如直接看这几个函数的具体功能作用来得快。在介绍具体的钩子函数前,先介绍下钩子函数的初始化函数,这个初始化函数可以一次性对所有钩子函数进行初始化,函数原型如下;void App_O...原创 2019-11-10 11:58:20 · 1142 阅读 · 1 评论 -
8-系统内部任务
UCOSIII 系统内部任务在一个带UCOS的工程中,除了我们创建的任务,UCOS其实也会自动地创建任务。就是说,UCOS运行的任务数等于我们创建的任务加上系统创建的任务。系统创建的任务有5个;空闲任务时钟节拍任务统计任务软件定时器任务中断服务管理任务其中两个是必须创建的,空闲任务和时钟节拍任务,只要我们使用了UCOS系统,那这两个任务就会被创建。另外...原创 2019-11-10 11:53:09 · 630 阅读 · 0 评论 -
7-时间片轮转调度
UCOSIII 时间片轮转调度在UCOS中,任务调度可以理解为任务切换,当心跳时钟到来时,系统就会把当前任务的现场保存起来,放到本任务的堆栈中,这个步骤和进中断前的push压栈很相似,不过现场状态是保存在本任务的堆栈中而不是中断堆栈中。然后CPU去执行高优先级的就绪任务。比如有两个任务,任务A和任务B。B的优先级比A的高,现在正在运行任务A,而任务B在等待延时结束。心跳时钟来了,系...原创 2019-11-10 11:15:49 · 2869 阅读 · 0 评论 -
6-临界代码保护
UCOSIII 临界代码保护在实际使用过程中,可能有些代码是需要连续运行,不能被打断的,这些代码局需要临界保护起来。常见的就是新建任务的时候一般都把代码保护起来,还有有些对时间要求很严格的协议传输的时候也不能被打断,比如说单总线时序、iic时序等,这些代码也是需要连续运行的。UCOS临界代码保护有两种方式,关中断和关调度器。至于是使用关调度器还是关中断的方式来保护临界代码,有宏O...原创 2019-11-10 11:05:25 · 394 阅读 · 0 评论 -
5-软件定时器
UCOSIII 软件定时器软件定时器原理 软件定时器相关函数汇总 总结函数的参数和用法及注意事项 举个栗子在不带操作系统的时候,如果想要定时一般会使用芯片上的硬件定时器,但是在UCOS中,我们可以使用软件定时器,而把硬件定时器留作他用,而且UCOS的软件定时器是没有数量限制的,当然前提是内存够大才行。虽然软件定时器不占用硬件定时器的资源,但是他也有个缺点,就是精度不高...原创 2019-11-10 11:01:29 · 896 阅读 · 1 评论 -
4-任务的挂起与解挂
UCOSIII 任务的挂起与解挂当某个任务在等待一些事情的时候,比如信号量、消息队列(以后会用到的)等,或者调用延时函数,该任务会进入挂起的状态,但是这是系统自动把任务挂起来的,不需要我们手动干预。虽然系统很多时候都可以把任务挂起来,但是有时候我们想手动把任务挂起来了该怎么办呢,其实UCOS已经给我们预留了任务挂起和解挂的API函数,1、OSTaskSuspend()2、OSTa...原创 2019-11-10 10:51:18 · 1977 阅读 · 0 评论 -
3-(时间管理)延时函数
UCOSIII 时间管理(延时函数)系统频率设置方法及延时函数原理 各个函数参数用法介绍,及注意事项 栗子功能+代码延时函数会涉及到系统滴答时钟,所以有必要介绍下系统滴答时钟的原理。系统里有一个计数变量OSTickCtr。系统滴答时钟是由滴答定时器产生的,其实也就是通过一个定时器来产生特定时间间隔的中断,每产生一个系统时钟中断这个变量就自加1。而延时函数就是用这个OSTick...原创 2019-11-10 10:46:30 · 3075 阅读 · 0 评论 -
2-中断处理
这个工程只有两个任务,第一个任务老规矩是用来创建其他任务的,第二个任务是LED闪烁任务,提示系统正在运行。所以任务1创建完LED任务后就把自己删除了,只有LED任务在正常运行。在main函数初始化的时候把定时器3初始化,在定时器3的中断处理函数中向串口发送一些信息,在电脑串口助手中可以查看中断处理是否正常Main.c文件#include "sys.h"#include "delay.h...原创 2019-11-10 10:28:42 · 161 阅读 · 0 评论 -
1-任务创建和删除
UCOSIII 任务创建和删除这篇总结只是概述任务的创建和删除,至于系统的原理、前后台系统的区别、系统移植、系统初始化配置等以后会用专门的文章来总结。系统初始化大概流程各个外设的初始化 系统初始化,其实就是调用一个系统初始化函数就好 OSInit() 进入临街代码保护 OS_CRITICAL_ENTER() 创建任务 OSTaskCreate() 退出临界代码保护 OS_...原创 2019-11-10 10:24:54 · 848 阅读 · 0 评论