完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1#前言
毕设需要将uC/OS-III移植到stm32的板子上。目前国内大多数教程都是将uC/OS-III移植到ST 3.5.0库上的,没有讲如何移植到CubeMX生成的HAL库工程中的。主要原因可能是CubeMX每次生成代码时,都会将一部分用户修改的代码再修改回去,需要重新修改,比较麻烦。但鉴于CubeMX生成配置源代码极为方便,且不容易出错,一些HAL函数也比较好用。因此有必要将uC/OS-III移植到CubeMX生成的HAL库工程中。 我的开发环境:stm32f103ret6 + Keil5 + CubeMX + uC/OS-III源码(从Micrium下载的F107的例程) 2#移植准备 由于本人水平有限,还不知道怎么移植系统能够使得CubeMX更新代码时,可以不用重新修改代码。因此尽量一口气将想要配置好的配置好。 生成代码工程格式选”MDK5”,最好勾选那个“每个外设都独立生成.c和.h”的选项,这样比较干净。 3#移植 移植大部分操作可以参考野火那本书里面(书名叫《uCOS-III 应用开发指南—基于 STM32F103系列》,云盘:云盘下载),个人建议先照着那本书做一遍,先在ST 3.5.0 的库上移植成功,顺手学一下怎么用,再接着做我这里。好,现在假定你已经照着那本书移植一遍了,那么要做的事情有: ①请再不厌其烦的添加文件、添加编译路径(你就可以把之前移植时修改好的文件复制过来,大部分内容不用再次修改) ②请把BSP_Init函数里面的内容删了,我们用新的。另外,bsp_led这些文件都不用了,你们懂得。 ③修改所选用的库函数:因为使用的不再是ST 3.5.0的库,因此原来的stm32f10x.h头文件换成stm32f1xx_hal.h(bsp.h里有一处,includes.h里有一处,共两处),如果不改的话,一些中断号会被重复定义。 ④把main.c里面的函数全部搬到bsp.c里面去(main函数除外),main.c中的初始化代码复制到BSP_Init()函数中。 ⑤好了,main.c里面实现的功能全部都由BSP_Init()代为实现了,main.c里面的main函数已形同虚设。但是它的存在会跟APP.c的main函数冲突,那个main函数是我们uC/OS要运行所需要的真正的main。是选择把main.c移除,还是选择把APP.c的main函数拷贝到main.c中,随你 ⑥把跟SysTick有关的改了,具体有:所有配置SysTick的配置函数全部删掉,把原来SysTick_IRQHandler()函数里面的东西复制到OS_CPU_SysTickHandler()里面(别忘了修改启动代码)。另外,有一个修改PendSV优先级的函数,把它删掉。OK搞定。 4#测试 经测试,移植的程序能够跑流水灯,说明移植成功。但如果再次使用CubeMX生成代码,则移植的工作大部分就白作了。不清楚该如何使得CubeMX不修改部分代码。 5#一点小补充 ①Hal库使用串口的时候,串口中断实际上的开与否是由HAL函数接管的。看源码可以看到,在HAL_USART_TransmitReceive_IT和HAL_USART_Receive_IT函数中有一处是打开中断的操作。当调用上面这两个函数的时候,HAL会打开发送/接收中断,当操作完成后,会把中断关掉,这时就接收不到消息了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1814 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
738 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1690 浏览 2 评论
1950浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
753浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
584浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 19:12 , Processed in 0.731669 second(s), Total 43, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号