ucosii移植stm32总结

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经过这两天的研究和实验,终于完成了uc/os在stm32上的移植,并成功实现两个任务的切换。现在主要说明一下。 一一一一、、、、准备准备准备准备 下载Micrium-ST-uCOS-II-LCD-STM32(Micrium公司关于STM32的LCD例程)作为参考。我们需要的是其中的uCOS-II\Ports和uCOS-II\Source文件夹里的内容。 二二二二、、、、改写改写改写改写 根据文档《uc/os-ii and ARM Cortex-M3 Processors》说明,改变其中一些关键函数,用于系统的移植。 2.1编写编写编写编写bsp文件文件文件文件 除了必要的硬件初始化以外,要编写OS_CPU_SysTickClkFreq()函数,这个在OS_CPU_SysTickInit()中会被调用,主要是是为了确定处理器时钟频率。参考例程程序,我的编写程序如下: INT32U OS_CPU_SysTickClkFreq (void) { RCC_ClocksTypeDef rcc_clocks; RCC_GetClocksFreq(&rcc_clocks); return ((INT32U)rcc_clocks.HCLK_Frequency); } 2.2 改变中断向量表改变中断向量表改变中断向量表改变中断向量表 这里要用到两个启动文件:stm32f10x_vector.s和cortexm3_macro.s,这两个文件不要用例程中的,例程中的stm32f10x_vector.s定义的中断向量入口程序与固件库中stm32f10x_it.c中的中断入口程序不一样,网上许多IAR程序编译的例程文件中都有这两个文件,可以使用,但是仍然有2个入口程序不一样,这个就是PendSV和SysTickHandler。所以需要自己改变一下,ucos系统文件中定义的PendSV和SysTickHandler的入口函数分别是OS_CPU_PendSVHandler和OS_CPU_SysTickHandler,所以要把stm32f10x_vector.s中的PendSV和SysTickHandler替换一下,注意要替换两个位置。IMPORT开头的和DCD开头的。这样中断向量就指向成功了。 2.3 编写适当的编写适当的编写适当的编写适当的h文件文件文件文件 STM32的头文件编写挺有学问,这个要自己慢慢领悟,当编译出现问题,某个东西没被声明时就是某个头文件没有包含进去。 三三三三、、、、编写应用程序编写应用程序编写应用程序编写应用程序 我编写的是2个led等交替闪烁的应用程序。如下: void AppStartTask_1 (void *p_arg) { (void)p_arg; OS_CPU_SysTickInit(); while(1) { GPIO_SetBits(GPIOF, GPIO_Pin_6); Delay_1ms(1000); GPIO_RSTimeDly(OS_TICKS_PER_SEC); } } void AppStartTask_2 (void *p_arg) { while(1) { GPIO_SetBits(GPIOF, GPIO_Pin_9); Delay_1ms(1000); GPIO_ResetBits(GPIOF, GPIO_Pin_9); OSTimeDly(OS_TICKS_PER_SEC); } } 四四四四、、、、完善程序完善程序完善程序完善程序 最后就是要完善程序,该驱动的驱动,该启动的启动,完全做好以后,就可以在开发板上运行了。
相关文档
最新文档