分别在对应的官网下载源码:Micrium_STM32F103ZE-SK_uCOS-II.rar FreeRTOSV8.2.3.rar
1、 移植UCOS建立工程,将下图中对应的文件加入到工程中:
2、下载下来的是IAR的DEMO程序,需要修改os_cpu_a.asm中下图所示地方:
3、 注释掉Systick相关部分,换作自己的代码实现:
修改stm32f10x_it.c里关于systick中断服务函数的代码:
/** * @brief This function handles SysTick Handler. * @param None * @retval None */ void SysTick_Handler(void) { OS_CPU_SR cpu_sr; OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR */ OSIntNesting++; OS_EXIT_CRITICAL(); OSTimeTick(); /* Call uC/OS-II's OSTimeTick() */ OSIntExit(); /* Tell uC/OS-II that we are leaving the ISR */ }
4、修改启动文件中OS_CPU_PendSVHandler 替换 PendSV_Handler
5、根据自己的需求配置os.cfg.h文件。
完成,可以使用了。
FreeTROS移植:
1、添加如下图所示文件到工程:
2、根据自己的需求配置FreeTROSConfig.h
3、修改启动文件中几个中断向量:
DCD vPortSVCHandler ; SVCall Handler DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved DCD xPortPendSVHandler ; PendSV Handler DCD xPortSysTickHandler ; SysTick Handler
vPortSVCHandler PROC EXPORT vPortSVCHandler [WEAK] B . ENDP DebugMon_Handler\ PROC EXPORT DebugMon_Handler [WEAK] B . ENDP xPortPendSVHandler PROC EXPORT xPortPendSVHandler [WEAK] B . ENDP xPortSysTickHandler PROC EXPORT xPortSysTickHandler [WEAK]
这样也就直接可以使用了,下面是移植好的工程: