GD32F4 hal库以及GD标准库串口测试
GD32F407VET6
Name | Value |
---|---|
型号 | GD32F407VET6 |
下载 | SWD |
串口 | USART1 |
输入晶振 | 25M |
HAL库测试
-
选择STM32F407VE库
-
配置SYS为SW,RCC为HSE
-
串口1启用异步通信
-
生成代码
-
启用microlib库,重写PRINTF库
-
下载选择JLINK SW,下载测试
标准库测试
标准库采用GD的库
-
仿照HAL库,生成模板。所需文件从GD32F4xx_Firmware_Library中查找
模板文件结构如下
└───demo ├───Drivers │ ├───CMSIS │ │ └───GD │ ├───GD32F4xx_standard_peripheral │ └───GD32F4xx_usb_library ├───Inc ├───MDK-ARM └───Src
-
修改include路径,晶振,debug配置等参数
-
配置
USART1(由于某种大家都知道的原因,GD系列编号都是从0开始的)USART0。在examples中有可以copy的代码void usart1_init(void) { /* enable GPIO clock */ rcu_periph_clock_enable(RCU_GPIOA); /* enable USART clock */ rcu_periph_clock_enable(RCU_USART0); /* configure the USART0 Tx pin and USART0 Rx pin */ gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_9); gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_10); /* configure USART0 Tx as alternate function push-pull */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* configure USART0 Rx as alternate function push-pull */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); /* USART configure */ usart_deinit(USART0); usart_baudrate_set(USART0, 115200U); usart_receive_config(USART0, USART_RECEIVE_ENABLE); usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); usart_enable(USART0); }
-
重写printf函数
int fputc(int ch, FILE *f) { usart_data_transmit(USART0, (uint8_t)ch); while(RESET == usart_flag_get(USART0, USART_FLAG_TBE)); return ch; }
-
编译运行