×
单片机 > 单片机程序设计 > 详情

keil5.24创建uCOSIII工程实现stm32实时操作系统(环境配置)

发布时间:2020-06-16 发布时间:
|

自从ARM keil升级到keil5系列版本后,Keil工具对操作系统,以及各种库文件的移植大大简化了

只需要动动手指,勾选一些库文件就能实现移植工作了。

1:假设你安装了keil 5.24(稍早点版本支持的os偏少),并且下载了你需要的支持包。

首先,安装KEIL5,简单 不作描述

其次,下载 PACK 简单不作描述(根据具体的STM32期间选型相应的DFP文件)

下载需要的middle

下载需要的ucosiii

 假设你用MCU芯片是stm32f10x,就点击pack install 左边选择器件stm32f1系列,右边把你要用的OS,arm基本库,stm32f10x_DFP就是stm的库支持包,以及编译器自动在线更新好。

 例如下图,我选择了DFP,CMSIS,编译器,middleware,uCOSIII, freertos9(最近在看这个,就顺手下了).




2: Keil创建工程

    依次project-new project- 选择位置,选择器件,直到出现下面窗口,以前的教程都是让你直接点击cancel,然后去手动移植uCOS,手动安装库文件,这不是傻么。

    按下图勾上core,startup,uCOSIII(还可以不用uCOS或者选择华为的liteOS,或者热门的FREERtos,前提是你在pack intall里面先在线安装了),点击确认,第一个工程就建设好了。

  


  请注意上面的蓝色部分,stdPeriph Drivers ,这就是ST的官方库,点击进入,用到IO就勾上GPIO,用到串口就勾上Usart... 其中有2个是选了其他的就必选的。

一个是RCC,一个是framwork,记得只要都变绿了就正常了,如果没有,就看看坐下,那些是关联的,也勾上。


3:工程文件预览

  下面是我的示例工程,我用到了GPIO口输出LED,模拟的时候可以看我的程序是否正常工作。



记住里面的带锁的文件是不建议你修改的,这些文件是你的keil工程公用的,在Keil目录下。

不带锁的文件都是给你修改的

RTE_Device.h是你的外设配置文件,打开后点击下面的config wizard标签,可以通过勾选来配置你的外设参数,例如使用端口,频率,复用映射之类的。

设置后会关联stm32f10x.conf.h,所以后者你不用管。

system_stm32f10x.c是系统初始化程序,新版本systeminit是自动调用,然后跳到main(的,你如果需要在main前初始化系统某些参数可以修改。

startup_stm32f10x_hd.s NVIC的中断映射表,非常关键,需要修改,后面会提到。

RTOS下面是uCOSIII的文件。

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

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

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

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

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


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

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

   例如任务1创建任务23,2亮闪烁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。 这个目的和结果和改名是一样的。

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

     5.24是没有stm32f10x_it.c,bsp.c之类文件的。如果你没用到uCOS,就需要自己写这些函数了。


5 模拟仿真

   按下面配置就能模拟仿真,并且监视IO波形图,如果有串口,还能监测串口。




上面的图2的配置是可以随时修改的,也就是你想加个ADC,勾上,想用其他的外设库,勾上,前提是你知道你勾上的是啥。。。。

Keil会自动把文件加到你的工程。牢记,带锁的文件肯定是不建议你修改的。


关键字:keil5  24  uCOSIII  stm32  实时操作系统

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单