搜索
查看: 12069|回复: 9

[分享] ucos 在stm32上的移植总结

[复制链接]

该用户从未签到

2

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-3-21 12:59:25 | 显示全部楼层 |阅读模式
学习报告哈尔滨工业大学深圳研究生院 方文钊经过这两天的研究和实验,终于完成了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_ResetBits(GPIOF, GPIO_Pin_6);                OSTimeDly(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);        }}四、完善程序最后就是要完善程序,该驱动的驱动,该启动的启动,完全做好以后,就可以在开发板上运行了。
回复

使用道具 举报

该用户从未签到

0

主题

156

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-11-22 15:05:09 | 显示全部楼层

RE:ucos 在stm32上的移植总结

MANY THANKS!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

20

帖子

0

蝴蝶豆

初级会员

最后登录
2019-4-25
发表于 2010-11-23 13:04:02 | 显示全部楼层

RE:ucos 在stm32上的移植总结

没有记录文档吗?发来参考一下啊!!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

22

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-4-9 00:35:13 | 显示全部楼层

RE:ucos 在stm32上的移植总结

网站内容不错,学习学习
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

95

帖子

0

蝴蝶豆

中级会员

最后登录
2021-2-24
发表于 2011-4-10 17:40:26 | 显示全部楼层

回复:ucos 在stm32上的移植总结

回复第 1 楼 orlando_3于2010-03-21 04:59:25发表:
学习报告 哈尔滨工业大学深圳研究生院 方文钊 经过这两天的研究和实验,终于完成了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_ResetBits(GPIOF, GPIO_Pin_6); OSTimeDly(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); } } 四、完善程序最后就是要完善程序,该驱动的驱动,该启动的启动,完全做好以后,就可以在开发板上运行了。 

非常感谢楼主分享经验
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

88

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-4-10 18:24:35 | 显示全部楼层

RE:ucos 在stm32上的移植总结

楼主总结的简洁而易懂,先收藏啦~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

12

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-5-4 16:40:23 | 显示全部楼层

回复:ucos 在stm32上的移植总结

如果能更详细些就好了!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-11-24 16:13:21 | 显示全部楼层

RE:ucos 在stm32上的移植总结

非常感谢~
回复 支持 反对

使用道具 举报

该用户从未签到

17

主题

144

帖子

0

蝴蝶豆

中级会员

最后登录
2021-5-27
发表于 2013-5-22 14:02:12 | 显示全部楼层

回复:ucos 在stm32上的移植总结

楼主,这个变量在哪定义的:RCC_ClocksTypeDef?
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-2-17 16:10:49 | 显示全部楼层

回复:ucos 在stm32上的移植总结

啦啦啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-27 22:03 , Processed in 1.171923 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表