登录兆易创新官网,在资料下载页面找到GD32H7的例程包,如下图所示:
GD32H7xx_Demo_Suites_V2.0.0中包含有GD32H7xx系列多个开发板的例程包,根据自己所使用的具体MCU型号选择对应的例程包。本文中使用的是GD32H757Z_START_Demo_Suites中的例程。
在例程包内选择最简单的01_GPIO_Running_LED作为移植RTX5系统的基础程序。首先打开01_GPIO_Running_LED工程,确保能够编译成功,并下载到开发板进行功能验证。若使用的不是官方的开发板,则需要修改相应LED GPIO。Running LED程序验证无误后,再进行后续的移植工作。
点击Manage Run-Time Environment,选择RTOS2中的keil RTX5选择Source方式添加,如下图所示:
如果Validation Output处有warning,点击下面的Resolve。最后点击OK完成RTX5的源码添加。添加后可以看到工程目录中的CMSIS中包含了RTX5的源码文件。
此时编译工程会报很多error,下面就来解决这些编译error。
2.2.1 删除重复文件
在工程目录内可以看到startup_gd32h7xx.s 和 system_gd32h7xx.c文件重复了
将startup文件夹和CMSIS文件夹中包含的文件都删除掉。删除后如下图所示
2.2.2 irq_armv7m.S(1): error: A1167E: Invalid line start
在Option中Asm -> Assembler Option 选择 armclang(Auto Select), 设置完成后重新编译。
2.2.3 注释掉重复定义的中断处理函数
- .ObjectsProject.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by irq_armv7m.o and gd32h7xx_it.o).
- .ObjectsProject.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by irq_armv7m.o and gd32h7xx_it.o).
- .ObjectsProject.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by irq_armv7m.o and gd32h7xx_it.o).
SysTick_Handler 、PendSV_Handler 、SVC_Handler 在RTX5中已定义,我们需要将gd32h7xx_it.c中的这3个函数定义注释掉。
由于RTX5 会用到SysTick中断,所以工程内的systick.c 可以删除掉。完成以上步骤重新编译工程,则可以编译通过。
修改后的gd32h7xx_it.c
测试代码创建了2个thread,thread_1控制LED以500ms周期闪烁;thread_2控制另外2个LED 以250ms周期闪烁。代码如下:
经过测试程序按照设计的功能实现了LED的闪烁控制,至此GD32H7xx的RTX5移植完成。
To Be Continue …
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/30087.html