UCOSⅢ移植:
移植注意步骤:
1.在template下新建ucosiii文件夹,在该文件夹下新建ucos_config ucos_bsp子文件夹
2.把UCOSIII 3.04\Micrium\Software下的uC-CPU uC-LIB uCOS-III三个文件夹拷贝到新建出来的template\ucosiii
3.拷贝 UCOSIII移植\UCOSIII移植好的代码\UCOSIII\UCOS_BSP的bsp.c bsp.h到新建的template\ucosiii\ucos_bsp
4.拷贝 UCOSIII移植\UCOSIII 3.04\Micrium\Software\EvalBoards\ST\STM32F429II-SK\uCOS-III下的8个文件
到template\ucosiii\ucos_config
8个文件参考PDF截图
5.拷贝 UCOSIII移植\UCOSIII移植好的代码\UCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView下的
os_cpu_a.asm os_cpu_c.c
到template\ucosiii\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView,覆盖掉原来的
6.拷贝 UCOSIII移植\UCOSIII移植好的代码\UCOSIII\uCOS_CONFIG下的os_cfg_app.h
到template\ucosiii\ucos_config
覆盖原来的
7.删掉工程中main.c所有内容,待重新编写
注意:
main.c删空后,之前用systick的中断实现的毫秒延时,编译如果出现如下错误:
..\obj\SPI.axf: Error: L6218E: Undefined symbol mtime (referred from stm32f4xx_it.o).
注释掉stm32f4xx_it.c
//extern unsigned int mtime;
142行 //void SysTick_Handler(void)
//{
//TimingDelay_Decrement();
// if(mtime > 0)
// mtime–;
//}
..\obj\SPI.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by os_cpu_a.o and stm32f4xx_it.o).
注释掉stm32f4xx_it.c
133行 //void PendSV_Handler(void)
//{
//}
===========================================
注意:
ucos 用systick定时的周期性中断(5ms中断一次),作为系统的节拍,所以重新实现了systick.c
又因为节拍率为200HZ(5ms中断一次),所以UCOS所能分辨的最小时间刻度是5ms,小于5ms的时间无法分辨,也无法延时
在systick.c自己实现了延时微秒和毫秒的函数 delay_us delay_ms
操作系统运行后,所有外设部件的中断处理程序模板
void xxx_handler(void)
{
OSIntEnter();
//具体的处理代码
OSIntExit();
}
我们要用串口,所以重新实现了uart.c