HOME> 东京世界杯> 浅谈对ucosii的应用

浅谈对ucosii的应用

东京世界杯 2025-07-19 22:29:39
[STM32F1] 浅谈对ucosii的应用 [复制链接] 2437|12 手机看帖扫描二维码随时随地手机跟帖 ywlzh 当前离线 关注TA 发消息 15 主题279 帖子873 积分 高级技术...

[STM32F1]

浅谈对ucosii的应用

[复制链接]

2437|12

手机看帖扫描二维码随时随地手机跟帖

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

电梯直达

楼主

ywlzh|

楼主

|

2016-1-22 13:32

|

只看该作者

|倒序浏览

|阅读模式

ucosii, 移植, 模板, 快速入门, ucosiiv

本帖最后由 ywlzh 于 2016-1-22 14:04 编辑

本人用的是ucosiiV2.91,工程自己建的,ucosii是照搬网上原子哥的,反正他写好了,看的懂就可以用,在这里也建议哪些想要快速入门ucosii的朋友,你们就先弄懂ucosii,先别管移植的问题,不要操心自己怎么移植,用别人的工程,然后写出适合自己的东西,先给出自己整个工程模板,想用的朋友可以直接用!

ucosii.part01.rar

2016-1-22 14:03 上传

点击文件名下载附件

5 MB

ucosii.part02.rar

2016-1-22 14:03 上传

点击文件名下载附件

5 MB

ucosii.part03.rar

2016-1-22 14:03 上传

点击文件名下载附件

3.36 MB

使用特权

评论回复

赏

标题置顶

标题高亮

点赞共0人点赞

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

沙发

ywlzh|

楼主

|

2016-1-22 13:39

|

只看该作者

发这个的意思就是告诉大家,先不要太死磕程序是怎么走的,我们先知道我们要怎么使用,先看这本书,任哲先生的,对入门有极大的帮助

嵌入式实时操作系统μCOS-II原理及应用(第2版).part01.rar

2016-1-22 13:36 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part02.rar

2016-1-22 13:37 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part03.rar

2016-1-22 13:37 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part04.rar

2016-1-22 13:37 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part05.rar

2016-1-22 13:37 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part06.rar

2016-1-22 13:37 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part07.rar

2016-1-22 13:38 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part08.rar

2016-1-22 13:38 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part09.rar

2016-1-22 13:38 上传

点击文件名下载附件

5 MB

嵌入式实时操作系统μCOS-II原理及应用(第2版).part10.rar

2016-1-22 13:38 上传

点击文件名下载附件

4.24 MB

使用特权

评论回复

赏

点赞共0人点赞

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

板凳

ywlzh|

楼主

|

2016-1-22 14:12

|

只看该作者

本帖最后由 ywlzh 于 2016-1-22 14:14 编辑

现在说说怎么使用这个工程,这个工程面对的是stm32f1系列的单片机。

进入主函数之后最开始还是对时钟做处理,我选择的是外部时钟,8M的晶振,如果你们用的是其他的晶振可以在

if(RCC_WaitForHSEStartUp() == SUCCESS)

{

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

FLASH_SetLatency(FLASH_Latency_2);

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

RCC_PLLCmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource() != 0x08);

}

中的 RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); 做处理,这句话的意思就是将外部的8M的晶振先不分频,然后9倍频,到了72M了,

接着做各个外设的初始,

做完初始化了之后就开始进入ucosiil

OSInit();

OSTaskCreate(start_task,

(void *)0,

(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],

START_TASK_PRIO );

OSStart();

至于怎么创建任务,任务怎么通信,任务怎么调度,这些个问题,我想只要你开始用ucosii做项目,你就回慢慢明白的!不要一次性贪大,一步一步的来。先看入门的书,然后对单片机开始操作,你会发现,原来这么简单!

使用特权

评论回复

赏

点赞共0人点赞

夜色风满楼

当前离线

关注TA

发消息

1

主题234

帖子730

积分

高级技术员

高级技术员, 积分 730, 距离下一级还需 270 积分

高级技术员, 积分 730, 距离下一级还需 270 积分

积分730

在线时间243 小时

精华0

注册时间2014-10-24

最后登录2019-2-23

打赏5.00受赏17.00

地板

夜色风满楼|

|

2016-1-27 23:06

|

只看该作者

楼主有没有hal库移植ucos的工程呢 搞了两天了 一直不能成功

使用特权

评论回复

赏

点赞共0人点赞

ccw1986

当前离线

关注TA

发消息

84

主题925

帖子2822

积分

初级工程师

初级工程师, 积分 2822, 距离下一级还需 178 积分

初级工程师, 积分 2822, 距离下一级还需 178 积分

积分2822

在线时间42 小时

精华0

注册时间2015-1-27

最后登录2016-7-11

5楼

ccw1986|

|

2016-1-28 20:49

|

只看该作者

开始觉得ucos ii很简单,现在觉得越学不会的越多

使用特权

评论回复

赏

点赞共0人点赞

ofsummer

当前离线

关注TA

发消息

10

主题71

帖子213

积分

中级技术员

中级技术员, 积分 213, 距离下一级还需 87 积分

中级技术员, 积分 213, 距离下一级还需 87 积分

积分213

在线时间2 小时

精华0

注册时间2015-12-12

最后登录2016-11-28

6楼

ofsummer|

|

2016-1-29 15:02

|

只看该作者

听说ucos ii 2.91版本要比2.86版本稳定

你有没有用过软件定时器的啊?

使用特权

评论回复

赏

点赞共0人点赞

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

7楼

ywlzh|

楼主

|

2016-1-29 17:35

|

只看该作者

ofsummer 发表于 2016-1-29 15:02

听说ucos ii 2.91版本要比2.86版本稳定

你有没有用过软件定时器的啊?

我用的就是V2.91,软件定时器,就是个定时器而已,也是个任务,优先级好像还是最高的

使用特权

评论回复

赏

点赞共0人点赞

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

8楼

ywlzh|

楼主

|

2016-1-29 17:37

|

只看该作者

ccw1986 发表于 2016-1-28 20:49

开始觉得ucos ii很简单,现在觉得越学不会的越多

那是因为你没有仔细琢磨过细节,但是也别太在意细节,不然会把自己绕晕的,操作系统就是为了让用户去很方便的使用的,要不然时间片论法搞定就可以了

使用特权

评论回复

赏

点赞共0人点赞

neeringstu

当前离线

关注TA

发消息

35

主题235

帖子722

积分

高级技术员

高级技术员, 积分 722, 距离下一级还需 278 积分

高级技术员, 积分 722, 距离下一级还需 278 积分

积分722

在线时间11 小时

精华0

注册时间2016-1-4

最后登录2016-11-26

9楼

neeringstu|

|

2016-1-30 20:15

|

只看该作者

邮箱和信号量把我搞糊涂了,我在中断里面发送邮箱,有时候总是响应不了,不知道为什么

使用特权

评论回复

赏

点赞共0人点赞

ywlzh

当前离线

关注TA

发消息

15

主题279

帖子873

积分

高级技术员

高级技术员, 积分 873, 距离下一级还需 127 积分

高级技术员, 积分 873, 距离下一级还需 127 积分

积分873

在线时间185 小时

精华0

注册时间2015-5-17

最后登录2023-6-7

10楼

ywlzh|

楼主

|

2016-1-30 20:57

|

只看该作者

本帖最后由 ywlzh 于 2016-1-30 20:59 编辑

neeringstu 发表于 2016-1-30 20:15

邮箱和信号量把我搞糊涂了,我在中断里面发送邮箱,有时候总是响应不了,不知道为什么 ...

邮箱就是一个字节,需要你在程序中自己设定数值大小,然后请求邮箱时的返回值就是邮箱的数值,根据这个数值再去做相应的操作,说白了,这也可以是一个通信协议,拿错误处理机制,就可以用邮箱,每一个错误对应一个数值,在请求邮箱是就会得到这个数值,你可以用switch,或者if ,else if来对错误的数值做出相应的操作,比如:在main函数之外写下:

OS_EVENT *Str_Box; //定义事件控制块指针 定义消息邮箱的指针

在统计任务之后写下:

Str_Box=OSMboxCreate((void *)0); //创建消息邮箱 返回值是指向创建消息邮箱的指针

//该函数的参数为void *msg 是消息指针,在这里(void *)0表示初始值为NULL 这样也就表示

//新创建的这个消息邮箱里没有内容l

以上,邮箱就创建成功!

怎么使用它,发送时,自己需要定以一个局部变量就可以了,

比如发生了一个错误,我将这个错误定为0x01,当程序走在了这个错误里的时候,

uint8_t err_value=0x01; //错误类型为0x01

OSMboxPost(Str_Box,&err_value); //发送消息err_value 其中两个参数Str_Box是OS_EVENT *pevent表示消

//息邮箱指针(是事件控制块指针),err_value是void *msg表示消息指针

//该函数表示把消息err_value发送到消息邮箱Str_Box中

请求时,在某个任务里,无限循环外或者在请求之前定义一个指针,

u8 *value;

u8 err;

value=OSMboxPend(Str_Box,0,&err);

//请求消息邮箱 参数表示:Str_Box是消息邮箱指针,0表示等待无限,

//err表示错误信息,返回值value是邮箱中的消息指针

其中不要把err与value搞混了,value是函数返回值,err是这个函数执行的结果,也就是这个函数执行完了之后会打印一些信息到err上,如果要求没什么意外,就不用管err,接下来就直接去处理指针value

使用特权

评论回复

赏

共1人点赞

LED吴生

当前离线

关注TA

发消息

8

主题84

帖子262

积分

中级技术员

中级技术员, 积分 262, 距离下一级还需 38 积分

中级技术员, 积分 262, 距离下一级还需 38 积分

积分262

在线时间161 小时

精华0

注册时间2016-12-27

最后登录2022-5-19

11楼

LED吴生|

|

2017-5-24 20:55

|

只看该作者

使用特权

评论回复

赏

点赞共0人点赞

kkzz

当前离线

关注TA

发消息

332

主题1万

帖子3万

积分

技术总监

技术总监, 积分 33821, 距离下一级还需 16179 积分

技术总监, 积分 33821, 距离下一级还需 16179 积分

积分33821

在线时间877 小时

精华0

注册时间2012-8-17

最后登录2025-7-19

打赏0.00受赏27.00

12楼

kkzz|

|

2017-5-24 23:00

|

只看该作者

一般都是使用别人的工程文件。

使用特权

评论回复

赏

点赞共0人点赞

kkzz

当前离线

关注TA

发消息

332

主题1万

帖子3万

积分

技术总监

技术总监, 积分 33821, 距离下一级还需 16179 积分

技术总监, 积分 33821, 距离下一级还需 16179 积分

积分33821

在线时间877 小时

精华0

注册时间2012-8-17

最后登录2025-7-19

打赏0.00受赏27.00

13楼

kkzz|

|

2017-5-24 23:03

|

只看该作者

ucos的变量共享还真不知道。

使用特权

评论回复

赏

点赞共0人点赞