![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UCOSIII
不会写代码的美年达
这个作者很懒,什么都没留下…
展开
-
【UCOSIII】【初始化五个内部任务】中断服务服务管理任务0、时钟节拍任务1、定时任务2、统计任务62、空闲任务63
五个内部任务初始化://UCOSIII中以下优先级用户程序不能使用,将这些优先级分配给了UCOSIII的5个系统内部任务:理论上任务数可以无限,但因为RAM、ROM等的限制,定为最大64个任务(OS_CFG_PRIO_MAX = 64)main()函数中调用OSInit():os_core.c中定义OSInit()://优先级0:中断服务服务管理任务 OS_IntQTask() 在os_in...原创 2018-05-25 14:42:22 · 995 阅读 · 0 评论 -
【UCOSIII】操作系统的作用
μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统性能相当的实时操作系统(RTOS)。1、增强实时性:传统的中断设置标志位,然后在主函数中,判断标志位去执行无法获知中断响应时间操作系统:可以在中断中把高优先级的任务置于就绪态,实...原创 2018-06-01 14:59:47 · 2988 阅读 · 0 评论 -
【UCOSIII】【自建消息队列OSQ】 【任务内建消息队列OSTaskQ】1个字节变量传递引用地址、指针变量malloc传递指针地址
【自建消息队列】//消息队列OS_Q OSQ_KEY;OS_Q OSQ_DATA;#define OSQ_KEY_NUM 1#define OSQ_DATA_NUM 4 //创建消息队列OSQCreate((OS_Q *)&OSQ_KEY, (CPU_CHAR *)"OSQ KEY", (OS_MSG_QTY )O...原创 2018-06-01 12:09:08 · 1744 阅读 · 0 评论 -
【UCOSIII】【OS常用函数集合】时间管理、任务管理、信号量、软件定时器
时间管理/*时间管理*/OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err);//1s延迟任务操作/*任务操作:创建、删除、挂起、恢复*/OS_TCB Task1_TaskTCB;void task1_task(void *p_arg);#define TASK1_TASK_PRIO 5#define TASK1_STK_SIZE 6...原创 2018-06-01 10:05:32 · 342 阅读 · 0 评论 -
【UCOSIII】【普通信号量】访问共享资源、任务同步;【任务内嵌信号量】任务同步;【互斥信号量】防止优先级反转;
一、信号量实现 访问共享资源task4 task5共同需要访问共享资源区,都同时请求信号量其中一个在访问的时候,另一个只能处于等待状态。//task4、5:使用信号量访问共享资源区void task4_task(void *p_arg){ OS_ERR err; u8 str1[] = "task4 using share_resource"; while(1) { OSSemPe...原创 2018-05-31 17:08:25 · 935 阅读 · 0 评论 -
【UCOSIII】【软件定时器】OS_TMR tmr1 OSTmrCreate() tmr1_callback() OSTmrStart() OSTmrStop()
单片机的timer1-8:硬件定时器UCOSIII提供:软件定时器os_tmr.c文件中定义 软件定时器:本质,递减计数变量,当变量递减到=0,触发中断回调函数时间分辨率的定义:os_cfg_app.h中系统时钟周期:最小分辨率200HZ=5ms#define OS_CFG_TICK_RATE_HZ 200u 软件定时器:最小分辨率100HZ=10ms,必须小于系统时钟周期...原创 2018-05-31 10:24:49 · 7551 阅读 · 0 评论 -
【UCOSIII】【OS内存管理】内部SRAM64K、外部SRAM1M、OSMemGet、OSMemPut
学习STM32也会遇到这样的绝对定位的问题如下:uint8_t UART_RX_BUF[1024] __attribute__ ((at(0X20001000))); //就是将串口接收的数据定位到RAM中起始地址为0X20001000;绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明通过上面的分析可以看出 UCOSIII 的内 存管理很粗糙,不灵活...原创 2018-06-05 08:20:51 · 1471 阅读 · 0 评论 -
【UCOSIII】【基本任务操作总结】任务创建、删除、挂起、恢复 ,以及 3种任务调度器(时间片轮转调度)
一、UCOSIII启动与初始化:三步1.初始化UCOSIIIOSInit(&err); //1初始化UCOSIII2.创建开始任务 只创建一个start_task任务,其余在start_task这个任务里面创建①进入临界区②创建任务③退出临界区OS_CRITICAL_ENTER();//2进入临界区 OSTaskCreate((OS_TCB * )&StartTaskTCB, ...原创 2018-05-24 15:57:37 · 2367 阅读 · 0 评论 -
【UCOSIII】【同时等待多个内核对象】OSPendMulti
同时等待多个信号量:OSPendMulti()在 UCOSIII中只支持同时 等待多个信号量和消息队列,不支持同时等待多个事件标志组和互斥信号量 OS_OBJ_QTY obj; OS_PEND_DATA os_pend_data[3]; os_pend_data[0].PendObjPtr = (OS_PEND_OBJ*)&OS_SEM_1; os_pend_data...原创 2018-06-04 15:02:03 · 1045 阅读 · 0 评论 -
【UCOSIII】【总结】信号量(二值、互斥、内带)、消息队列(自建、内带)、事件标志组 的区别
多任务合作工作的过程中,操作系统应解决两个问题:一是各任务间应具有一种互斥关系,即对于某个共享资源,如果一个任务正在使用,则其他任务只能等待,等到该任务释放该资源后,等待的任务之一才能使用它;二是相关的任务在执行上要有先后次序,一个任务要等其伙伴发来通知,或建立了某个条件后才能继续执行,否则只能等到。任务之间的这种制约性的合作运行机制叫做任务间的同步任务间通信和同步机制:二值信号量、互斥信号量:对...原创 2018-06-04 10:06:39 · 1945 阅读 · 0 评论 -
【UCOSIII】【事件标志组】实现任务同步(普通信号量、互斥信号量也能实现任务同步)
事件标志组定义一个FLAG_GROUP定义1bit为1个标志位/*事件标志组*/ 实现任务同步OS_FLAG_GRP OS_Flag_Group;#define flag_key0 0x01#define flag_key1 0x02#define flag_none 0x00//创建事件标志组OSFlagCreate((OS_FLAG_GRP *)&OS_Flag_Grou...原创 2018-06-04 09:18:15 · 700 阅读 · 0 评论 -
【UCOSIII】【中断管理、时间管理】OS_CRITICAL_ENTER()、OS_CRITICAL_EXIT()、OSTimeDlyHMSM
中断管理2种方式:直接发布、延时发布OS_CFG_ISR_POST_DEFERRED_EN = 1 延时发布 中断消息 defer ISR POST En使能OS_CFG_ISR_POST_DEFERRED_EN = 0 直接发布 中断消息1.延时发布#if OS_CFG_ISR_POST_DEFERRED_EN > 0u /* De...原创 2018-05-26 12:06:20 · 1773 阅读 · 0 评论 -
ucosii操作系统下,exit中断跑飞
ucosii操作系统下,exit中断跑飞2017年12月20日 16:55:33 mlpx的专栏 阅读数:360硬件:stm32f106vc 操作系统:ucosii 实现功能:按键中断现象:配置完按键、中断后,进入中断死机。原代码如下:void EXTI0_IRQHandler(void)//WK_UP KEY3 PA0{ delay_ms(10); i...转载 2018-12-04 17:06:01 · 495 阅读 · 0 评论