STM32到GD32程序移植教程:HAL+RTOS
5星 · 超过95%的资源 需积分: 48 149 浏览量
更新于2024-08-05
2
收藏 55KB DOCX 举报
"STM32F103RCT6到GD32F103RCT6的程序移植涉及HAL库和RTOS系统,主要修改部分包括频率设置、CAN通信配置以及内存地址。移植过程中,UART、IIC和SPI外设保持不变。"
在STM32微控制器系列中,STM32F103RCT6是一款广泛应用的芯片,其最大工作频率为72MHz。然而,由于价格等因素,开发者可能选择成本更低的GD32F103RCT6作为替代,该芯片的最大工作频率提升至108MHz。在进行程序移植时,需要对几个关键点进行调整以确保代码能在新平台上正常运行。
首先,频率设置的更改是在`stm32f1xx_hal_conf.h`文件中进行的。原始配置中,HSE启动超时时间设定为100ms,但在GD32F103RCT6上,可能需要更长的时间来稳定高频振荡器。尽管作者指出即使不修改此值,程序仍然可以运行,但为了确保系统稳定性,建议按照新芯片的规格进行适当调整,将超时时间扩大到0xFFFF(即65535ms)。
其次,CAN通信模块是移植过程中遇到的主要问题。STM32和GD32的CAN初始化存在差异,可能导致初始化错误,使CAN模块进入睡眠模式(SLEEP位)或等待初始化状态(INRQ位)。为解决此问题,需要在初始化CAN之前清除这两个位。这可以通过修改HAL层的初始化逻辑或者直接在`stm32f1xx_hal_can.c`文件中对库函数进行调整。原代码请求初始化时设置了INRQ位,因此需在调用初始化之前取消这一操作,避免CAN模块异常。
对于其他外设如UART、IIC和SPI,由于它们的基本工作原理和硬件接口在STM32和GD32之间有较高的一致性,所以移植时无需做过多改动,原有代码通常可以直接复用。然而,这并不意味着可以完全忽视这些外设。在实际应用中,仍需验证它们在新平台上的性能和稳定性,确保与预期一致。
在RTOS(实时操作系统)环境中,任务调度、中断处理和资源管理等核心功能可能会因微控制器的差异而有所不同。在进行移植时,要确保RTOS内核和HAL库之间的接口匹配,以及中断服务例程(ISRs)的正确配置。例如,确保时钟配置、中断优先级和RTOS定时器的设置与新平台兼容。
STM32到GD32的移植涉及对新平台特性的理解,包括时钟系统、外设配置以及RTOS的适配。虽然大部分代码可以重用,但关键部分的修改是必不可少的。在移植过程中,应仔细检查每个环节,进行充分的测试,确保移植后的程序能够在GD32F103RCT6上稳定、高效地运行。
2021-02-07 上传
2022-09-23 上传
2021-10-15 上传
2023-09-07 上传
2020-02-17 上传
2021-09-29 上传
2023-11-06 上传
Z_123_W
- 粉丝: 219
- 资源: 2
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践