首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
ucosii专题
stm32f103zet6 DM9000 UCOSII LWIP 快速集成modus tcp
之前使用stm32f103rbt6芯片完成了集成 freemodbus modbus rtu参照:点击打开链接 现使用stm32f103zet6 DM9000 UCOSII LWIP 集成modus tcp,类似于集成modbus rtu 首先参照原子官方提供的战舰V3 UCOSII+LWIP试验 为基础模板 第二:添加modbus 、 port的C文件和H文件,参照 点击打开链接 第三
阅读更多...
如何将ucosii移植到vs2008中运行
本文介绍关于如何将ucosii移植到vs2008中运行,其中参考了CSDN下载频道xiahouzuoxin的一篇文章,在此对这哥们表示感谢。 step1:下载uCOS-II源码,只是一些源代码和文档,放在自己硬盘上即可,无需安装(原以为要安装什么操作系统呢)。 step2:新建vs工程 完了之后的vs界面如下: step3:将step1下载的文件中的源文件uCOS-
阅读更多...
为什么说Ucosii是可剥夺型内核?
为什么说Ucosii是可剥夺型内核? 因为它不仅可以实现高优先级任务可以剥夺低优先级任务的CPU使用权,还可以实现低优先级任务也可以剥夺高优先级任务的CPU使用权。 首先,在ucosii中,任务只有5种状态,分别是睡眠状态、就绪状态、运行状态、等待状态、中断状态。其次,在ucosii中有两种调度器:一种是任务级调度器OS_Sched。在OS_Sched中,会先查找优先级最高的任务,接着调用OSCt
阅读更多...
UCOSII_STM32F1移植详细过程(一)
UCOSII_STM32F1移植详细过程(一) 1、概述2、关于µC/OS3、移植过程(文件描述与提取)1.软件工程文件夹描述2.提取工程中有用的文件3.提取ST标准外设库有用的文件2.新建、修改文件 1、概述 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台: 系统平台:µC/OS-II (最新V2.92版) 硬件平台:
阅读更多...
UCOSII归纳四
一.OSQPost以FIFO(先进先出的方式)组织消息队列。OSQPostFront以LIFO(后进先出的方式)组织消息队列。 二.信号量定义,创建,使用简例。 1.信号量的定义 OS_EVENT *SEM1; 2.信号量的创建 SEM1=OSSemCreate(0); 3.等待一个信号量 INT8U err; OSSemPend(SEM1,0,&err); 4.
阅读更多...
UCOSII归纳三
1.OS_TCB任务控制块全部驻留在RAM中,这是值得注意的,特别是在RAM缺乏的时候。 2.任务的管理: 1:建立和删除任务。(注意:任务删除要考虑任务资源的释放。) 2:请求删除任务:如果任务A运行一段时间已经拥有了一些资源,而任务B想删除它,要是强制删除,这些资源可能没有释放。 3:改变任务优先级。 4:挂起和恢复任务。 3.信号量由两部分组成:信号量的计数值和等
阅读更多...
UCOSII归纳二
1.在UCOS中创建任务时,要注意堆栈的增长方式不要搞错。 2.0x12345678的存储大端格式: 低地址<--0x12|0x34|0x56|0x78-->高地址 3.0x12345678的存储小端格式: 低地址<--0x78|0x56|0x34|0x12-->高地址 4.MIPS/MHZ就是说每1MHZ频率能产生多大的MIPS。以前计算机大部分都是单线程,就是说1秒钟如果振荡周期是1
阅读更多...
ucosII移植笔记
μC/OS-II临界区管理机制 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL() 同样是通过关中断来保护临界区,OS_ENTER_CRITICAL/OS_EXIT_CRITICAL一共实现了三种实现方式,如下所示: #if OS_CRITICAL_METHOD == 1 #define OS_ENTER_CRITICAL() __asm__("cli"
阅读更多...
ucosII 应用设计笔记
1. 任务基本知识 1.1任务的划分 1.2任务的可调度性分析 2. 任务设计 2.1任务的结构 1).单次执行的任务 2).周期性执行的任务 3).事件触发执行的任务 2.2任务优先级的安排 1)ucos ii最多有64个优先级,(最高0~最低63) 2)在<OS_CFG.H>中可设置最低优先级 例: #define OS_
阅读更多...
移植ucosii遇到的问题 B OSStartHang
ucosii在STM32rbt6上可以正常地运行,工作需要,我将ucosii移植到STM32F103C8T6,更换了一下启动代码,结果程序 开始调度时就死在那了 OSStart(); 进去后void OSStart (void){ if (OSRunning == OS_FALSE) { OS_SchedNew();
阅读更多...
【ALIENTEK 战舰STM32开发板例程系列连载+教学】第五十八章 UCOSII实验1-任务调度
第五十八章 UCOSII实验1-任务调度 前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍UCOSII最基本也是最重要的应用:任务调度。本章分为如下几个部分: 58.1 UCOSII简介 58.2 硬件设计 58.3 软件设计 58.4 下载验证 58.1 UCOSII
阅读更多...
第五十八章 UCOSII实验1-任务调度
前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系统内核)的使用。本章,我们将向大家介绍UCOSII最基本也是最重要的应用:任务调度。本章分为如下几个部分: 58.1 UCOSII简介 58.2 硬件设计 58.3 软件设计 58.4 下载验证 58.1 UCOSII简介 UCOSII的前身是UCOS,最早出自于199
阅读更多...
[转]一些别人学习ucosii的笔记作为参考
一、uC/OSii 内核结构:任务管理,时间管理,中断处理,任务之间的通信与同步! 二、代码的临界区分析: 代码的临界区也称为临界区,指该代码在被处理时不能被分割,因此不能被中断打入!所以在进入该代码(临界区)时应该关中断,而执行完后再打开中断!而uC/OSii 用OS_ENTER_CRITICAL和OS_EXIT_CRITICAL这两个宏来开/关中断。而针对不同的处理器,这两个宏定义是不同的,
阅读更多...
ucosii 移植STM32笔记之入门篇一
10.31 今天接触了ucosii在STM32上面的移植,就碰到的几个问题进行总结: 1、工程输出文件出现错误,原因是没有添加相应设备芯片的启动文件; 2、出现undefined symbol ... refered from ...,原因是OS_CPU_A.ASM这个汇编文件没有添加; 3、启动函数(如下),主要用于系统启动之后进行调用的,也叫启动任务: 1 static void s
阅读更多...
UCOSII邮箱问题
学习ucosII的过程中,使用了邮箱,发送线程收到串口数据后,在收到结束符,完成一帧的收取后,动态开辟一个空间,将此空间的指针作为消息内容,发送到接收处理线程,处理线程处理完后,释放此空间,调试程序发现内存泄漏现象,经过分析发现是由于串口数据发送过快,在之前的邮箱消息还未处理的时候,新的邮箱消息又进行了发送,导致消息指针被覆盖,最后释放的是覆盖后的指针,之前的指针未释放,时间长之后内存满,导致无可
阅读更多...
STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复
本文结构 1.UCOSII原理2.UCOSII实验代码 1.UCOSII原理 UCOSII 是一个可以基于ROM 运行的、可裁减的、抢占式、实时多任务内核,具有高度可 移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统 (RTOS)。 UCOSII 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C 语言编写的。CPU 硬 件相关部分是用汇编
阅读更多...
ucosii学习小记
任务就绪列表及任务调度 八位二进制变量OSRdyGrp的每一位对应OSRdyTbl[]的一个元素,而OSRdyTbl[]的每一个元素是一个八位二进制数,每个位对应一个任务的状态,1为就绪,0为非就绪,因此ucosii共有8*8 = 64个任务。对应下图: 可以将优先级别看作是一个6位的二进制数,将高三位指明是OSRdyGrp的第几个元素,低三位指明是OSRdyTbl的第几位,如优先级别
阅读更多...
uCOSii消息邮箱管理
uCOSii消息邮箱管理 (MESSAGE MAILBOX MANAGEMENT) 消息邮箱主要用于中断和任务之间进行邮件传递,或者是在任务与任务之间进行邮件交换。 我个人觉得,了解uCOSii消息邮箱的几个重要函数,还是有必要的。不是所有人都给我们测试案例。 1、重点需要了解下面几个函数 消息邮箱指针=OSMboxCreate(消息邮箱数据块指针) 建立并初始化一个消息邮箱,在初始化时,
阅读更多...
基于ucosII的打蜜蜂小游戏
最近在学习ucosii的时候做的一个小东西,之前看到有人也发过类似的文章,这个程序的实现很简单,没有用到邮箱之类的东西,有能力的大神们可以做相应的扩展,下面是程序的运行截图: 附上相应源码:https://github.com/dxyou/Bee-Bee
阅读更多...
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(五)
继续...... 整个UCOSII嵌入式操作系统的任务调度策略便是如此,现在进行一个总结: 某个任务在执行中,每隔一定周期发生滴答时钟中断,在中断中遍历整个任务链表,更新每个任务的延时时间,修改就绪状态。任务执行完毕后,进入延时函数,在延时函数中会把当前任务挂起(清空当前任务的就绪状态,使其进入未就绪状态),然后根据查表发找到在就绪任务中,优先级最高的那一个任务。找到新任务以后,人工强制发生一
阅读更多...
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(四)
继续...... 再回到那个重要得函数: void OS_Sched (void){#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */OS_CPU_SR cpu_sr = 0u;#endifOS_ENTER_CRITICAL(
阅读更多...
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(三)
继续...... if (ticks > 0u) { /* 0 means no delay! */OS_ENTER_CRITICAL();y = OSTCBCur->OSTCBY; /* Delay current task
阅读更多...
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(二)
继续...... if (ticks > 0u) { /* 延时参数是否为0 */OS_ENTER_CRITICAL(); /* 禁止中断 */y = OSTCBCur->OSTCBY;OSRdyTbl[y] &= (OS_PRIO)~OSTCBCur->OSTCBBitX;if (OSRdyTb
阅读更多...
为什么说Ucosii是可剥夺型内核?
为什么说Ucosii是可剥夺型内核? 因为它不仅可以实现高优先级任务可以剥夺低优先级任务的CPU使用权,还可以实现低优先级任务也可以剥夺高优先级任务的CPU使用权。 首先,在ucosii中,任务只有5种状态,分别是睡眠状态、就绪状态、运行状态、等待状态、中断状态。其次,在ucosii中有两种调度器:一种是任务级调度器OS_Sched。在OS_Sched中,会先查找优先级最高的任务,接着调用OSCt
阅读更多...