如何利用kei mdk自带ucos

u/COS-III之移植

首先下载STM32编译器软件,这里选择KeiL MDK.其它人也可以选择IAR、或者其它编译器软件:

Keil MDK软件下载:官方链接:https://www.keil.com/demo/eval/arm.htm

下载完后:

安装教程,不在说明。

首先打开软件,创建工程如图:

如何利用kei mdk自带ucos_第1张图片

创建工程名称

如何利用kei mdk自带ucos_第2张图片

创建完成会跳出一个让窗口,这个窗口是让你选择所用的芯片。

 

选择自己需要的芯片

 如何利用kei mdk自带ucos_第3张图片

如果没找到自己的芯片,点击工具栏那个绿色图。然后选择自己的芯片。

如果还是没有如下,在官方网找对应的芯片库。一般更新就会有的。


 

选择完成后会再跳出一个窗口这时候,在下面我们看到有一个ROTS(实时操作系统),点击就能看到了ucos III

如何利用kei mdk自带ucos_第4张图片

注意:如果没有出现ROTS选项的话,退出创建工程,回到如下界面,点击Pack Instal蓝色图标出现图二界面,选择自己所需要的操作系统,这里我们选择Micrium ROTS 然后点击更新安装。安装完成后。重新回到上面步骤。

如何利用kei mdk自带ucos_第5张图片

选择完毕后出现如下:

如何利用kei mdk自带ucos_第6张图片

如何利用kei mdk自带ucos_第7张图片

现在基本已经移植完毕。

注意:RTOS下面是uCOSIII的文件。

其中app_cfg.c是空文件,是你的app.c的头文件,不过我们一般都是用main.cmain.h...

cpu_cfg.h lib_cfg.g 是几个简单的CPULib的参数,基本不用修改。

os_cfg.h OS的裁剪配置文件,就是关闭一些你用不上的函数和功能块,例如消息队列Q你没用这个功能,那么QQdel,abort函数等,都能禁止,主要是减少代码大小用的。按需要修改

os_app_cfg.h  系统心跳频率,以及几个系统任务stat systick tmr idle的优先级,堆栈大小等的配置参数。按需要修改。

os_cpu.c.c没错,整个OS就这一个.c能让你修改,因为这就是所有的空钩子函数,你需要用到就填写代码好了,还有systick中断处理函数也在这里。

4 创建app.c添加到sourcegourp1 喜欢就单击改个名字不叫sourcegroup1..

  写上你的main函数,创建你几个任务。

  例如任务1创建任务232亮闪烁LED1, 3闪烁LED2

  但是你会发现uCOS没工作。

  uCOS工作,需要几个条件。

  1:启用systick定时器。

      OS_CPU_SysTickInit(9000);                              //72M下,8分频,1ms心跳的初始值。
       SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);     //
上面自带的初始化频率是72M,这里选择外部时钟  HCLK/8

     然后OSInit();  创建主任务,OSStart();   

2 中断向量映射

    OS需要用到2个中断,一个是PendSV_handler,一个是SysTick_handler

    OS自带了这2个中断函数,但是名字是OS_CPU_PendSV_handler一个是OS_CPU_SysTick_handler.

    以前的做法之一是把后面的改成前面的名字。但是这个新版本os_cpu_a.s是禁止修改的,说明keil不建议这样做

    你如果不想用系统的,就得自己写2个同名函数,但是没必要。

    那么我们直接修改中断向量表文件,把startup_stm32f10x_hd.s 里面的PendSV_handler全替换成OS_CPU_PendSV_handler

    SysTick_handler全替换成OS_CPU_SysTick_handler这个目的和结果和改名是一样的。

    不同芯片的中断相连表文件会不同,如果不用OSstm标准库以前带了个stm32f10x_it.c文件,里面就是几个系统中断的同名函数。

 


你可能感兴趣的:(uCos,III,KEIL,MDK)