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

发布者:太和清音最新更新时间:2018-10-06 来源: 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异常(死机)的处理

推荐阅读最新更新时间:2024-03-16 16:15

STM32系统学习——I2C (读写EEPROM)
I2C 通讯协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。 物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流, 协议层则规定我们用中文还是
[单片机]
判断STM32 GPIO输入口的输入状态
以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE- IDR& GPIO_IDR_IDR2) { 函数体; } 当PE2端口为高电平时,if条件为真;当PE2口为低电平时,if条件为假; ② 判断单个端口是否为低电平: if((~GPIOE- IDR)& GPIO_IDR_IDR2) { 函数体; } 分析:首先通过 &GPIO_IDR_IDR屏蔽掉PE2之外的其他PE口。当PE2为高电平时,GPIO-〉IDR的bit2为‘1’,取反后为‘0’,因此条件为假;当PE2为低电平时,GPIO-〉IDR的bit2为‘0’,取反后为‘1’,因此条件为真;通过此方法可以同时判断PE2或PE4(甚至更多PE口)是
[单片机]
stm32芯片启动文件类型的选择
首先看STM32最新固件库3.5中的启动文件。如图: 对应关系如下:
[单片机]
基于16位微处理器和实时操作系统μC/OS-II的基站监控终端设
为提高通信基站监控终端的可靠性和事件处理能力,本文介绍采用 16位 RISC架构嵌入式微处理器 R8800实现基站监控终端的设计。利用 Paradigm C++ 5.1集成环境编写监控终端控制程序,实现μC/OS-II在 R8800上的移植。通过实装调试,设计的任务程序能在硬件环境和操作系统下稳定工作,实现了监控终端对环境模拟量和开关量信息的采集,对智能电源、空调设备和通风系统的通信与控制,与区域监控中心进行远程通信。 近年来,随着移动通信业务的迅猛发展,尤其是 3G通信网建设的进行,通信基站的建设数量与日俱增。通信运营商对快速建站、降低基站综合成本和运营维护成本的要求更加迫切。基站监控终端,可做到基站无人值守、远程监
[单片机]
基于16位微处理器和<font color='red'>实时操作系统</font>μC/OS-II的基站监控终端设
pic16f877a对24c01的读写程序
#i nclude p IC .h #i nclude string.h #define uchar unsigned char #define uint unsigned int static volatile unsigned char a CC @ 0x20; //发收数据暂存器 static volatile bit acc0 @ (unsigned)&acc*8+0; //接收 static volatile bit acc7 @ (unsigned)&acc*8+7; //发送 static volatile unsigned char err @ 0x21; // static vo
[单片机]
意法完成STM32微控制器底层软件部署
   意法半导体 (ST)完成了将其免费底层应用程序编程接口(Low-LayerApplicationProgrammingInterface,LLAPI)软件,导入支持所有的 STM32 微控制器(MCU)的 STM32 Cube软件包中。LLAPI软件让专业的开发人员,能够在方便好用的STMCube环境内开发应用,使用ST验证的软件,对最低到寄存器级的代码进行优化,从而缩短产品上市时间。下面就随嵌入式小编一起来了解一下相关内容吧。   在所有的 STM32 Cube组合内,整合LLAPI和硬件抽象层(HardwareAbstractionLayer,HAL)软件,让开发人员能够完全自由地选择外部周边的控制方式。他们可以选择利
[嵌入式]
Intrinsic ID在CES 2024上展示最新的信任根方案
Intrinsic ID 在CES 2024上展示了其信任根 (RoT) 解决方案,该解决方案已部署在全球超过 6.5 亿台设备中。 Intrinsic ID 首席执行官兼联合创始人 Pim Tuyls 表示:“在 Intrinsic ID,我们的解决方案提供了强大的基于硬件的信任根,无需专用芯片即可对所有设备进行身份验证和保护。” 其在 CES 2024 上的产品组合包括: Zign:一款纯嵌入式软件产品,突破性地将 PUF 技术与 NIST 认证的加密算法相结合。它提供了一种易于部署的低成本解决方案,可对传输中和设备上的任何物联网数据进行加密。 Zign 可以部署在任何类型的新的或现有的物联网设备上,并满足最严格的
[嵌入式]
AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现
串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,它允许CPU与TTL移位寄存器、A/D或D/A转换器、实时时钟(RTO)、存储器以及LCD和LED显示驱动器等外围接口器件以串行方式进行通讯。 SPI总线只需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件,其硬件功能很强,实现软件相当简单。串行A/D转换器具有电路简单、工作可靠的特点,而ARM芯片被设计用于手持设备以及普通的嵌人式应用的集成系统,将上述两种实用的芯片和SPI总线技术相结合以实现数据采集十分有效。 1 AD7888的功能与使用 AD7888是美国模拟器件公司推出的一款
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved