历史上的今天

今天是:2024年10月06日(星期日)

2018年10月06日 | keil5.24创建uCOSIII工程实现stm32实时操作系统(环境配置)

发布者:太和清音 来源: eefocus关键字:keil5  uCOSIII  stm32  实时操作系统 手机看文章 扫描二维码
随时随地手机看文章

自从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(最近在看这个,就顺手下了).

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


2: Keil创建工程

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

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

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


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

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


3:工程文件预览

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

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

记住里面的带锁的文件是不建议你修改的,这些文件是你的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波形图,如果有串口,还能监测串口。

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


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

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


关键字:keil5  uCOSIII  stm32  实时操作系统 引用地址:keil5.24创建uCOSIII工程实现stm32实时操作系统(环境配置)

上一篇:STM32跑RTOS操作系统之ucosii串口中断实现
下一篇:关于stm32HardFault_Handler异常(死机)的处理

推荐阅读

最近通过专业综合实验接触单片机编程。对历程中的Delay函数有所疑问。写笔记备忘一下。问题的出现:不管是郭老师的单片机初学教程,还是各种开发板配套资料,一般都会用到类似函数来完成延时:void Delay(unsigned int t){unsigned int k;while(t--){for(k=0; k<80; k++);}}例如在按键检测中,线delay一会儿来完成去抖动,检测按下后再delay一会儿...
翻译自——spectrum,Jeremy Hsu 中文和英文密码的差异对现在流行的Web服务有很大的安全影响。 无论语言和文化有何不同,中、英文互联网用户都能在通过使用“123456”等密码变体时找到共同点。但最近研究发现,从比较两种语言密码模式来看,中文密码具有显著而独特的特点,对中国以外的互联网安全具有重大影响。 令人惊讶的是,由于使用中文用户的密码只...
国家统计局公布,2020年1-8月全国规模以上工业企业实现利润总额3兆7,166.5亿元,年减4.4%,降幅较1-7月收敛3.7个百分点,呈连六月回升。其中,8月全国规模以上工业企业利润年增19.1%,增速较7月下降0.5个百分点,但仍连4个月呈年增长,延续稳定增长态势。大陆国家统计局工业司高级统计师朱虹指出,8月企业生产经营状况好转,供需循环已逐步改善...
来源:学习军团·解放军新闻传播中心融媒体作者:解放军报记者 韩 成 通讯员 于 晨“机器人技术正在深刻改变着人类的生产和生活方式,中国空间站机械臂也助力我们完成了两次出舱任务。”9月中旬,在北京亦庄开幕的2021世界机器人大会上,神舟十二号飞行乘组3位航天员聂海胜、刘伯明、汤洪波从中国空间站传来“太空点赞”。被表扬的主角,是我国自主研...

史海拾趣

问答坊 | AI 解惑

模拟的今年找工作是啥情况啊

模拟的今年找工作是啥情况啊…

查看全部问答∨

应网友要求,分享赛灵思中国通讯2009年秋电子季刊

本期概要                                                   & ...…

查看全部问答∨

转:看看开关电源厂家是如何骗人的

把主机拆开除灰尘,想想顺便也把电源也除除灰,拆开一看,感觉哪个PFC有点不对,顺便拆开看看,由于这台电脑是第一次配的,是一款杂牌电源,当时那JS说230块机箱电源随便选,觉得有问题,不过当时没经验,也就没管那么多~ 凡来坛里的一看就知道, ...…

查看全部问答∨

STM32F103RC的USB与PC连不通

STM32F103RC的USB与PC连不通芯片可以认到,D+加了1.5k上拉,D+,D-匹配电阻22ohm,程序用的是最新STM32_USB-FS-Device_Lib_V3.3.0 晶振用的是6M的,程序里面时钟配置都改了,usb时钟是48M 急求高人帮助啊~~…

查看全部问答∨

头文件里0x0001u 十六进制数后加u是什么意思?

#define IE2_                (0x0001u)  /* Interrupt Enable 2 */DEFC(   IE2            ...…

查看全部问答∨

Quartus 并转串

代码如下:   always @(negedge clk or negedge rst_n)   begin     if(!rst_n)       begin         address      <=  1 ...…

查看全部问答∨

Beaglebone学习之5-外围电路设计完成(含原理图和PCB)

最近公司事情太忙,迟到这么久的设计终于完成了,不然真的辜负EEWORLD和大家的信任了(板子和奖金都到手了),今天已经把板子发出去做,周末应该就能回来了,到时再分享硬件调试和软件开发细节 另外板子做了10块,有兴趣的我可以赠送几块出来,还有 ...…

查看全部问答∨

使用Ultra Librarian转换成altium designer的文件出问题

我在TI的28335DSP网页下载了bxl的封装文件,然后使用Ultra Librarian转换成altium designer的文件出问题,由于28335DSP原理图库是分部分的,但转换后只能出来第一部分,怎么解决这个问题啊?谢谢。…

查看全部问答∨

在COLD中Fit失败,换一个引脚就OK,这是什么情况?

在COLD中Fit失败,换一个引脚就OK,两个都是用户IO,这是什么情况? \0\0\0eeworldpostqq…

查看全部问答∨

一本好书《笑谈热设计》部分章节

本帖最后由 qwqwqw2088 于 2015-6-16 10:05 编辑 《笑谈热设计》作者摒弃了科技图书一贯的公式推导加之仿真测试的写作形式,转而巧妙地利用高手过招聊天的方式向读者全面而立体地分享了他多年来的热设计经验,加之译者准确到位的翻译,可以让您在 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved