打印
[STM32F1]

浅谈对ucosii的应用

[复制链接]
2111|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ywlzh|  楼主 | 2016-1-22 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ywlzh 于 2016-1-22 14:04 编辑

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


ucosii.part01.rar

5 MB

ucosii.part02.rar

5 MB

ucosii.part03.rar

3.36 MB

沙发
ywlzh|  楼主 | 2016-1-22 13:39 | 只看该作者
发这个的意思就是告诉大家,先不要太死磕程序是怎么走的,我们先知道我们要怎么使用,先看这本书,任哲先生的,对入门有极大的帮助

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

5 MB

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

4.24 MB

使用特权

评论回复
板凳
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做项目,你就回慢慢明白的!不要一次性贪大,一步一步的来。先看入门的书,然后对单片机开始操作,你会发现,原来这么简单!
                                                                  

使用特权

评论回复
地板
夜色风满楼| | 2016-1-27 23:06 | 只看该作者
楼主有没有hal库移植ucos的工程呢  搞了两天了 一直不能成功

使用特权

评论回复
5
ccw1986| | 2016-1-28 20:49 | 只看该作者
开始觉得ucos ii很简单,现在觉得越学不会的越多

使用特权

评论回复
6
ofsummer| | 2016-1-29 15:02 | 只看该作者
听说ucos ii 2.91版本要比2.86版本稳定
你有没有用过软件定时器的啊?

使用特权

评论回复
7
ywlzh|  楼主 | 2016-1-29 17:35 | 只看该作者
ofsummer 发表于 2016-1-29 15:02
听说ucos ii 2.91版本要比2.86版本稳定
你有没有用过软件定时器的啊?

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

使用特权

评论回复
8
ywlzh|  楼主 | 2016-1-29 17:37 | 只看该作者
ccw1986 发表于 2016-1-28 20:49
开始觉得ucos ii很简单,现在觉得越学不会的越多

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

使用特权

评论回复
9
neeringstu| | 2016-1-30 20:15 | 只看该作者
邮箱和信号量把我搞糊涂了,我在中断里面发送邮箱,有时候总是响应不了,不知道为什么

使用特权

评论回复
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

使用特权

评论回复
11
LED吴生| | 2017-5-24 20:55 | 只看该作者

使用特权

评论回复
12
kkzz| | 2017-5-24 23:00 | 只看该作者
一般都是使用别人的工程文件。

使用特权

评论回复
13
kkzz| | 2017-5-24 23:03 | 只看该作者
ucos的变量共享还真不知道。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:兴趣是开端,成就是积累的动力

15

主题

279

帖子

3

粉丝