历史上的今天
返回首页

历史上的今天

今天是:2025年04月07日(星期一)

正在发生

2020年04月07日 | ucos-ii和ucgui在stm32上的移植及工程

2020-04-07 来源:eefocus

uc/os-ii移植笔记

(此部分参考了tomato的介绍)

os_cpu.h

与编译器相关的数据类型

 

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 int     INT32U;                   /* Unsigned 32 bit quantity */

typedef   signed   int    INT32S;                   /* Signed   32 bit quantity  */

 

typedef   float           FP32;                     /* Single precision floating point*/

typedef   double         FP64;                     /* Double precision floating point */

 

typedef   unsigned int    OS_STK;                   /* 堆栈类型为32位 Each stack entry is 32-bit wide */

typedef   unsigned int    OS_CPU_SR;                /* Define size of CPU status register (PSR = 32 bits) */

 

与ARM 处理器相关的代码

#define  OS_CRITICAL_METHOD   3      //进入临界段的方法

 

#if      OS_CRITICAL_METHOD == 3

#define  OS_ENTER_CRITICAL()   {cpu_sr = OS_CPU_SR_Save();} //关中断

#define  OS_EXIT_CRITICAL()     {OS_CPU_SR_Restore(cpu_sr);} //开中断

#endif

 

#if  OS_CRITICAL_METHOD == 3

OS_CPU_SR   OS_CPU_SR_Save(void);

void        OS_CPU_SR_Restore(OS_CPU_SR cpu_sr);

#endif

 

void       OSCtxSw(void);

void       OSIntCtxSw(void);

void       OSStartHighRdy(void);

 

设置堆栈的增长方向

#define  OS_STK_GROWTH    1  /*堆栈由高地址向低地址增长*/

 

OS_CPU_C.C

用C 语言编写六个操作系统相关的函数

 

OS_STK  *OSTaskStkInit ( void   (*task)(void *p_arg), 

void   *p_arg, 

OS_STK  *ptos,

INT16U  opt)

{

    OS_STK  *stk;

    (void)opt;                                   /* 'opt' is not used, prevent warning                 */

    stk       = ptos;                            /* Load stack pointer                                 */

 

                                                 /* Registers stacked as if auto-saved on exception    */

    *(stk)   = (INT32U)0x01000000L;             /* xPSR                                               */

    *(--stk)  = (INT32U)task;                    /* Entry Point                                        */

    *(--stk)  = (INT32U)0xFFFFFFFEL;             /* R14 (LR) (init value will cause fault if ever used)*/

    *(--stk)  = (INT32U)0x12121212L;             /* R12                                                */

    *(--stk)  = (INT32U)0x03030303L;             /* R3                                                 */

    *(--stk)  = (INT32U)0x02020202L;             /* R2                                                 */

    *(--stk)  = (INT32U)0x01010101L;             /* R1                                                 */

    *(--stk)  = (INT32U)p_arg;                   /* R0 : argument                                      */

 

                                                 /* Remaining registers saved on process stack         */

    *(--stk)  = (INT32U)0x11111111L;             /* R11                                                */

    *(--stk)  = (INT32U)0x10101010L;             /* R10                                                */

    *(--stk)  = (INT32U)0x09090909L;             /* R9                                                 */

推荐阅读

史海拾趣

问答坊 | AI 解惑

超音频宽带功率正弦波逆变电源

项目简介 江苏省常熟市   吴栋梁 1  技术项目名称: 超音频宽带功率正弦波逆变电源;2  项目所属技术领域: 电力电子变流技术;3  项目现处发展阶段: 中试前期,工业化前期,应用产品后续研发阶 ...…

查看全部问答>

请教高手怎么解决将linux系统移植到6410开发板上usb不能用的问题

如题:将android-linux-2.6.28的系统移植到s3c6410开发板上usb不能用 编译通过,初始化也通过,可是一插上U盘就报错: 提示错误: usb 1-1: new full speed USB device using s3c2410-ohci and address 2 usb 1-1: device descriptor read/64, ...…

查看全部问答>

ZIGBEE问题

支持ZIGBEE协议通信的芯片有那些, 有带协议栈吗,协议栈是不是要针对不同os来说的。比如  tinyos   win ce   ucos-II 等 …

查看全部问答>

微芯的《模拟与接口指南》

刚刚看到的,上传来给大家看看 压缩包已经重新打包上传,下载后解压到同一个文件里就OK! [ 本帖最后由 zhandetian 于 2010-8-12 10:43 编辑 ]…

查看全部问答>

1602

#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit en=P2^0;sbit rs=P2^1;sbit key1=P3^0;sbit key2=P3^1;sbit key3=P3^2;sbit ss=P3^5;uchar code table[]=\" 2010-08-10 TUS\";uchar code table1[]=\"   ...…

查看全部问答>

求MSP430G2231数据手册和用户指南

一般单片机都有这个的,我不太懂英文,不知道哪里下载。谢谢各位了。…

查看全部问答>

msp430

现在用的人越来越多了,所以打算学习一下…

查看全部问答>

TI的高效AC适配器方案

本帖最后由 dontium 于 2015-1-23 12:44 编辑 用于USB接口的AC适配器,同时具有满载的高效率和空载时的低耗能。 …

查看全部问答>

用430的SPI写SST25V016B

在确定硬件电路,驱动程序都没错的情况下,不知为何每次读SST25V016B寄存器的结果为0xFF;更不用说写单元数据了; 希望做过SST25V016B的大神们帮帮忙啊! …

查看全部问答>

6467T崩溃的问题

6467T,NANDFLASH启动,1.2V核电压(正常需求1.3V ),工作一段时间后,就发现板子起不来,但是换成别的模式有BOOT信息。这种状态下,要么重新烧写FLASH或者换一块FLASH又可以正常启动,这是FLASH造成的吗,感觉FLASH没有这么脆弱啊。还请大侠们多 ...…

查看全部问答>