前言
前文已挖坑,GD32 embedded builder 图形配置和自动生成代码是一个空壳框子。不能干任何事情。包括了最简单的点灯和串口print个“hello world”都不行。
所以开始来填坑了。如果不知道怎么配置请看这里
MacOS +VScode 环境下搭建GD32 embedded builder HAL 库环境(空白项目)-CSDN博客
1.配置个点灯基础环境
用我手头上的开发板设置个基础配置:
1)PA4 PA5 PA6 作为普通的GPIO 推挽 输出,点个led
2)定义了UART0 和UART1 两个串口
3)定了SWD接口给DAP-link进行debug
2.点灯
2.1准备systick.h(标准库方式)
因为Embedded Builder 自动生成的代码是一个纯纯的空白模版,完全没有功能的。对头,就是连点灯都不行的。。。。。这就需要我们自己配置systick 了。不然连delay_1ms这种函数都没有提供的哦。从官方的模版中就有现成的(从标准库过来的)。
复制黏贴到自己的项目文件夹里面就OK。
2.2修改hal_it.c文件添加delay的工作模式和systick.h
2.3修改main.c文件
- 加上systick.h,其他两个也一键三连无脑添加。
- 在mian函数初始化环节添加systick_config();
至此,就可以愉快的使用delay_1ms了。hal库自动处理好的tick的时间长短的了。
2.4点灯
makefle-build-flash 一气呵成!
2.5 HAL库的内置函数
HAL库在 SysTick_Handler 里面已经给准备好函数了。
然后就可以愉快的点灯了。是不是更简便。
3.串口debug输出
3.1添加文件serial_debug.c和.h
这个就是自己简单封装的一个输出函数而已。放在附件中,方便大家使用。
3.2修改gd32e23x_hal_init.c文件(重点坑)
Embedded Builder 自动生成的代码文件中,本身帮你配置好了HAL的硬件抽象初始化,用uart0_info对象的。所有串口的设置参数比如buad什么已经配置好了。
但是!!!没有使能!!!需要自己再XXX_hal_init.c里面自己使能的。。。(这个坑花了1天的时间爬出来,万万没有想到还有这么一手。。。)用标准库的那个函数 config一下,再enable一下就行。这个看着加就行。注意GPIO是 1复用 2推挽 3上拉
deinit也是照样来一下。其余所有需要用的端口都这么改一下
3.3测试serial_debug 和阻塞模式的串口输出
直接来输出serial_debug 和阻塞模式的串口输出
是预期的数据结果。nice。
3.4改用HAL库 顺便改了printf函数
从Hal固件库借来的代码,例子是用Uart1作为debug口,所以用Uart1。这个根据自己的实际情况来处理。
记得在 hal_init.c的uart1初始化函数里加入usart_enable();当然这个在mian()函数添加也行看个人习惯了。
然后就可以顺利输出了。
3.5测试串口DMA模式输出
GD - EmbeddedBuilder - 用DMA进行串口发送接收,支持接收不定长包_embeddedbuilder使用-CSDN博客这里有个参考文章。设置方面直接按文章里的进行配置就好。
参数 | callback函数 | |
STM32 | 串口|数据|长度 | Cube MX封装好 RxCpltCallback |
GD32 | 串口|数据|长度|callback函数 | 结构体 hal_uart_user_callback_struct :complete_func /error_func 可以自己定义函数操作 |