21天学嵌入式开发第二十三讲:嵌入式系统UC/OS-Ⅱ的移植课程安排获取UC/OS-Ⅱ嵌入式系统内核在STM32上移植UC/OS-Ⅱ获取UC/OS-Ⅱ嵌入式系统内核UC/OS-Ⅱ是开源但不免费的实时操作系统。M32上移植UC/OS-ⅡUC/OS-Ⅱ在STM32的移植,大致由3个文件实现:。用C语言就可以打开和关闭中断。处理器支持中断,并且能产生定时中断,通常在10至100Hz之间。处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。移植步骤用#define设置一个常量的值()声明数据类型()用#define语句声明三个宏()用C语言编写六个简单的函数()编写四个汇编语言函数()#ifndefOS_CPU_H#defineOS_CPU_H#ifdefOS_CPU_GLOBALS#defineOS_CPU_EXT#else#defineOS_CPU_EXTextern#endif//数据类型,与编译器有关typedefunsignedcharBOOLEAN;typedefunsignedcharINT8U; //无符号8位整数typedefsignedcharINT8S; //有符号8位整数typedefunsignedshortINT16U; //无符号16位整数typedefsignedshortINT16S; //有符号16位整typedefunsignedintINT32U; //无符号32位整数typedefsignedintINT32S; //有符号32位整数typedeffloatFP32; //单精度浮点数typedefdoubleFP64; //双精度浮点数typedefunsignedintOS_STK;//堆栈入口宽度为16位typedefunsignedintOS_CPU_SR;//CPU状态寄存器宽度32位//与处理器相关部分#defineOS_CRITICAL_METHOD3#ifOS_CRITICAL_METHOD==3#defineOS_ENTER_CRITICAL(){cpu_sr=OS_CPU_SR_Save();}#defineOS_EXIT_CRITICAL(){OS_CPU_SR_Restore(cpu_sr);}#endif#defineOS_STK_GROWTH1#defineOS_TASK_SW()OSCtxSw() //任务切换宏#ifOS_CRITICAL_METHOD==3OS_CPU_SROS_CPU_SR_Save(void);voidOS_CPU_SR_Restore(OS_CPU_SRcpu_sr);#endifvoidOSCtxSw(void);voidOSIntCtxSw(void);voidOSStartHighRdy(void);voidOS_CPU_SysTickInit(void);#。OSTaskStkInit函数最为重要。()OSCtxSw()OSIntCtxSw()OSTickISR()创建测试任务系统主函数任务实现
STM32第23章 来自淘豆网m.daumloan.com转载请标明出处.