UCOSIII简介于移植

发布者:明理厚德最新更新时间:2021-12-08 来源: eefocus关键字:UCOSIII  移植  STM32 手机看文章 扫描二维码
随时随地手机看文章

UCOSIII简介


UCOSIII是一个可裁剪,可固化,可剥夺的多任务系统。相比于前代产品其最大任务数目没有限制,优先级相同的任务数目没有限制且有无需调度的的发送机制。


UCOSIII文件


在移植UCOSIII之前我们需要准备两样东西:一个是UCOSIII的源码,一个是Micrium官方在STM32F1xx上移植好的工程文件。

在Micrium文件夹中有四个文件夹

1、EvaBoards文件夹

这个文件夹里面就是关于STM32F107的工程文件。其中的处app.c和stm32f10x_conf.h外的文件的八个文件使我们需要添加到工程文件当中的。

2、uC-CPU文件夹

这个文件夹里面是与CPU相关的代码,有下面几个文件:

1)cpu_core.c文件包括了所有CPU架构的C代码。该文件包含了用来测量中观关闭时间的函数,还包含一个可模仿前导码零计算以及其他的函数。

2)cpu_core.h文件包含了1中的函数原型证明,以及用来测量中断关闭的时间变量。

3)cpu_def.h文件包含了uC/CPU模块使用的各种define常量。

4)ARM-Cortex-M3文件夹有GUN,IAR,RealView文件夹,我们使用的是KeilMDK编译器,则需要看RealView文件夹下的cpu.h包含了一些类型定义使UCOSIII和其他模块可与cpu的架构和编译器的字宽度无关,cpu_a.asm包含了一些用汇编语言编写的函数用来开中断和关中断计算前导零,以及其他一些只能用汇编语言编写的与COU相关的函数,这个文件中函数可以从C代码中调用和cpu_c.c包含了一些基于特定CPU架构但为了可移植而用C语言编写的函数C代码文件。(作为一个普通原则,除非汇编语言能显著提高性能,投资精良用C语言编写函数)。

3、uC-LIB文件

uC-LIB石油一些可移植并且与编译器无关的函数组成,UCOSIII不适用uC-LIB中的函数,但是UCOSIII和uC-CPU嘉定lib_def.h是存在的,uC-LIB有下面几个文件

1)lib_ascii.h和lib-ascii.c文件提供ASCII_ToLower()、ASCII_ToUpper()、ASCII_IsAlpha()和ASCII_IsDig()等函数,他们可以分别代替标准可函数tolower()、toupper()、isalpha()和isdigit()等。

2)lib_def.h文件定义了许多常量,如TURE/FALSE、YES/NO、ENABLE/DISABLE以及各种进制的常量。而且还为常见数学计算定义了宏。

3)lib_math.h和lib_math.c文件包含了Math_Rand()、Math_SetRand()等函数的源代码,可用来替代标准函数库menclr()、memset()、memcpy()、memcmp()等。

4)lib_mem.c和lib_mem.h文件包含了Mem_Clr()、Mem_Set()、MemCopy()、Mem_Cmp()等函数的源代码可用来替代标准库函数的memclr()、memset()、memcpy()、memcmp()等

5)lib_str.c和lib_str.h文件包含了Str_Lenr()、Str_Copy()和Str_Cmp()等函数的源代码,可用于替代标准函数strlen()、strcpy()和strcmp()等。

6)lib_mem_a.asm文件包含了lib_men.c函数的汇编优化版。


4、uCOS-III文件

这个文件夹有两个文件Ports文件与CPU平台有关和Sourse里面为UCOSIII的源码。


UCOSIII的移植


1.在工程目录中新建一个UCOSIII的文件夹,然后将uC-CPU、uC-LIB和UCOS-III这三个文件复制到工程中

2.在UCOSIII文件夹中新建两个文件夹:UCOS_BSP和UCOS_CONFIG

3.向UCOS_CONFIG添加文件

4.向UCOS_BSP添加文件

5.向工程中添加分组

6.修改bsp.c和bsp.h

7.修改os_cpu_a.asm

8.修改os_cpu_c.c

9.修改os_cfg_app.h

10.修改SYSTEM文件夹sys.h文件

关键字:UCOSIII  移植  STM32 引用地址:UCOSIII简介于移植

上一篇:STM32F4学习笔记7——USART Part2
下一篇:stm32NVIC中断优先管理

推荐阅读最新更新时间:2024-11-13 10:20

STM32使用虚拟示波器
在调试过程中.,经常会有需要看到数据实时变化的情况,这时候便需要用到虚拟示波器。如:制作平衡车时,需要了解拟合角度跟随加速度计和陀螺仪的动态变化情况;做电机PWM调速时需要了解速度的变化曲线等。 对于虚拟示波器的选择,由于之前参加过飞思卡尔,用过是山外的多功能调试助手中的虚拟示波器,感觉还不错。 现在想用stm32制作一个平衡车,需要用到虚拟示波器,现在把使用方法分享出来,给那些有需要的人。 首先是通信协议:(下面是虚拟示波器部分的通信协议) 虚拟示波器采用串口通信的方式和下位机通信。因此首先要配置好串口(这里就不做介绍了),接下来便需要实现发送函数。 ///发送一个字节的数据 void usart3_send_c
[单片机]
<font color='red'>STM32</font>使用虚拟示波器
STM32单片机RTC时钟的使用方法及步骤
STM32RTC使用步骤: 打开PWR时钟和Backup区数据访问 若使用外部低速时钟(LSE),打开LSE并等待起振 选择和打开RTC时钟,等待时钟同步 配置时间格式,分频系数等 根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块 根据需要配置和打开中断,其中 RTC Alarm ——EXTI line 17 RTC tamper and Timestamps——EXTI line 19 RTC wakeup——EXTI line 20 下面的代码配置日期,时间,当前时间设置为 15年05月31日,星期日(7),15:50:40,打开闹钟A和唤醒中断,每一秒钟来一次中断,15:50:45秒产生闹钟中断,用串
[单片机]
<font color='red'>STM32</font>单片机RTC时钟的使用方法及步骤
STM32 的I2C 硬使用
/* 操作对象为一24C02 */ #include STM32Lib\\stm32f10x.h #include hal.h //#define AT24C01A //24C01A,I2C时序和往后的24C02一样 #define AT24C01 //24C01,I2C的时序和普通的有点不同 #define EEPROM_ADDR 0xA0 #define I2C_PAGESIZE 4 //24C01/01A页缓冲是4个 void I2C_Configuration(void) { I2C_InitTypeDef I2C_InitStructure; GPIO_InitTypeDef GPIO_InitStruct
[单片机]
<font color='red'>STM32</font> 的I2C 硬使用
浅析STM32之GPIO结构
  1、STM32的GPIO结构图   GPIO共有8中设置模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能,开漏复用功能,共4种输入,2种输入,2种复用功能。   2、模式说明   ①浮空输入   图中施密特触发器是开启的,IO口的状态可以直接送到输入寄存器中,CPU可以直接读取输入寄存器;   在上图中,阴影的部分处于不工作状态,尤其是下半部分的输出电路,实际上是与端口处于隔离状态。   黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号1的IO端口进入STM32,经过编号2的施密特触发器的整形送入编号3的输入数据寄存器,在输入数据寄存器的另一端编号4,CPU可以随时读出IO端口的电
[单片机]
STM32中DMA模块的使用
DMA(Direct Memory Access)常译为“存储器直接存取”。早在Intel的8086平台上就有了DMA应用了。 一个完整的微控制器通常由CPU、存储器和外设等组件构成。这些组件一般在结构和功能上都是独立的,而各个组件的协调和交互就由CPU完成。如此一来,CPU作为整个芯片的核心,其处理的工作量是很大的。如果CPU先从A外设拿到一个数据送给B外设使用,同时C外设又需要D外设提供一个数据。。。这样的数据搬运工作将使CPU的负荷显得相当繁重。 严格的说,搬运数据只是CPU的比较不重要的一种工作。CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CPU还需要负责复杂的中断
[单片机]
<font color='red'>STM32</font>中DMA模块的使用
STM32之SPI通信
之前一直对SPI通信一知半解,所以想抽空把它搞得明白一些。考虑到之前是结合Flash芯片来学的,十分不直观,而且主要把时间和精力都花在Flash芯片的datasheet和驱动上了,SPI通信也没学好。所以这次就考虑用4位数码管显示模块,模块是直接买的现成的,如下图所示,这样可以简化操作,把精力聚焦到学习的核心–SPI通信本身上来。 该模块是用2片74HC595串联驱动的,一片用来控制数码管的位选(U1),一片用来控制数码管的段选(U2)。接口比较简单,总共5个引脚,2个引脚分别接VCC和GND,DIO用来接收串行数据的输入,SCLK用来接收同步时钟,每个SCLK上升沿74HC595内部的移位寄存器会移一位,RCLK用
[单片机]
<font color='red'>STM32</font>之SPI通信
STM32学习基本 存储器、CRC、电源
1、STM32命名规则? 例子:STM32 F 103 C 8 T 6 A xxx 其中: (1) 产品系列 STM32:基于ARM核心的32位微控制器; (2)产品类型: F:通用型 (3)产品子系列: 101:基本型;102:USB基本型,USB2.0全速设备;103:增强型;105/107:互联型。 (4)引脚数目: T:36脚;C:48脚;R:64脚;V:100脚;z:144脚。 (5)闪存存储器容量: 4:16k;6:32k;8:64k;B:128k;C:256k;D:384k;E:512K。 (6)封装: H:BGA;T:LQFP;U:VFQFPN;Y:WLCSP64; (7)温度范围: 6:工业级:-4:0-85;7
[单片机]
STM32通信接口(二)IIC--软件模拟
一、概述 IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。 IIC是 由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。 二、基本原理 (IIC总线的时序图) IIC总线在传输数据的过程中共有三种类型的信号,分别为:开始信号、结束信
[单片机]
<font color='red'>STM32</font>通信接口(二)IIC--软件模拟
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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