MicroC/OS-II RTOS的一些个人需要记录的要点

本文主要介绍了MicroC/OS-II实时操作系统的一些关键点,包括数据类型的选择,时钟节拍的设定,中断处理,堆栈管理以及任务创建和管理。时钟节拍通常设置在10到200ms之间,任务使用OSTaskCreate或OSTaskCreateExt进行创建,并通过OSTimeDly系列函数进行延时管理。中断处理强调关中断、处理数据和开中断的顺序。堆栈分配需要注意内存碎片问题,而任务则是以无限循环运行的void类型函数。

1. include

/* MicroC/OS-II definitions */

#include "includes.h"

NIOS中首选从BSP中修改增减组件。

2. datatype

不使用不确定数据宽度的short,int,long等

需要使用浮点和除法,再看文档

bsp/HAL/inc/alt_types.h

#ifndef ALT_ASM_SRC
typedef signed char  alt_8;
typedef unsigned char  alt_u8;
typedef signed short alt_16;
typedef unsigned short alt_u16;
typedef signed long alt_32;
typedef unsigned long alt_u32;
typedef long long alt_64;
typedef unsigned long long alt_u64;
#endif
bsp/HAL/inc/os_cpu.h

/* This is the definition for Nios32.  */
typedef unsigned char  BOOLEAN;
typedef unsigned char  INT8U;                    /* Unsigned  8 bit quantity                           */
typedef signed   char  INT8S;                    /* Signed    8 bit quantity                           */
typedef unsigned short INT16U;                   /* Unsigned 16 bit quantity                           */
typedef signed   short INT16S;                   /* Signed   16 bit quantity                           */
typedef unsigned long  INT32U;                   /* Unsigned 32 bit quantity                           */
typedef signed   long  INT32S;                   /* Signed   32 bit quantity                           */
typedef float          FP32;                     /* Single precision floating point                    */
typedef double         FP64;                     /* Double precision floating point                    */
typedef unsigned int   OS_STK;                   /* Each stack entry is 32-bits                        */

3. Clock Tick

时钟节拍是内核为了将任务延时若干整数个单位,以及,当任务等待事件发生时,提供超时信息。一般是10~200ms(考虑);由HAL下sys_clk_timer提供。

#define ALT_SYS_CLK TIMER    //system.h
#if OS_TIME_GET_SET_EN > 0   //ucos_ii.h
OS_EXT  volatile  INT32U  OSTime;                   /* Current value of system time (in ticks)         */
#endif
OS_EXT是定义的一个宏,ucos_ii.h开始

#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif
因此,在定义全局变量时,#define OS_GLOBALS就可以;在声明该全局变量时,不使用#define OS_GLOBALS

回到OSTime,这里定义了一个volatile全局变量,对Tick进行计数。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值