GD32F4 hal库以及GD标准库串口测试

GD32F407VET6

Name Value
型号 GD32F407VET6
下载 SWD
串口 USART1
输入晶振 25M

HAL库测试

  1. 选择STM32F407VE库

  2. 配置SYS为SW,RCC为HSE

    image

  3. 串口1启用异步通信

  4. 生成代码

  5. 启用microlib库,重写PRINTF库

  6. 下载选择JLINK SW,下载测试

    image

标准库测试

标准库采用GD的库

  1. 仿照HAL库,生成模板。所需文件从GD32F4xx_Firmware_Library中查找

    模板文件结构如下

    └───demo
        ├───Drivers
        │   ├───CMSIS
        │   │   └───GD
        │   ├───GD32F4xx_standard_peripheral
        │   └───GD32F4xx_usb_library
        ├───Inc
        ├───MDK-ARM
        └───Src
    

    image

  2. 修改include路径,晶振,debug配置等参数

  3. 配置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);
    }
    
  4. 重写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;
    }
    
  5. 编译运行

image

posted @ 2022-02-10 18:00  USTHzhanglu  阅读(1857)  评论(0编辑  收藏  举报