RISC-V技术论坛
直播中

华仔stm32

3年用户 2956经验值
擅长:嵌入式技术
私信 关注
[经验]

【兆易创新GD32VF103R-START开发板试用体验】串口输出HELLWORLD

【目的】初始化串口,并用printfl向串口输出hello world.
【步骤】
1、初始化PA2、PA3,本来想用usart0的,但是在开发板上没有找到PA9、PA10的引出IO,原来初始化usart0后搞了半天没有成功(我是接的板载的UART)。后面问了兆易创新的技术,说PA9、PA10另有用处。所以这里只能用USART1来做串口输出了。
  1. /*!
  2.     brief      configure USART1
  3.     param[in]  none
  4.       arg      
  5.       arg        
  6.     param[out] none
  7.     retval     none
  8. */
  9. void gd_eval_com_init(void)
  10. {
  11.     /* enable GPIO clock */
  12.     rcu_periph_clock_enable(RCU_GPIOA);

  13.     /* enable USART clock */
  14.     rcu_periph_clock_enable(RCU_USART1);

  15.     /* connect port to USARTx_Tx */
  16.     gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2  );

  17.     /* connect port to USARTx_Rx */
  18.     gpio_init(GPIOA, GPIO_MODE_IN_FLOAtiNG, GPIO_OSPEED_50MHZ, GPIO_PIN_3);

  19.     /* USART configure */
  20.     usart_deinit(USART1);
  21.     usart_baudrate_set(USART1, 115200U);
  22.     usart_word_length_set(USART1, USART_WL_8BIT);
  23.     usart_stop_bit_set(USART1, USART_STB_1BIT);
  24.     usart_parity_config(USART1, USART_PM_NONE);
  25.     usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
  26.     usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
  27.     usart_receive_config(USART1, USART_RECEIVE_ENABLE);
  28.     usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
  29.     usart_enable(USART1);
  30. }
2、改写printf重定向函数:
  1. /* retarget the C library printf function to the USART */
  2. int _put_char(int ch)
  3. {
  4.     usart_data_transmit(USART1, (uint8_t) ch );
  5.     while ( usart_flag_get(USART1, USART_FLAG_TBE)== RESET){
  6.     }
  7.     return ch;
  8. }
3、修改led流水灯程序:
  1. void sta_flash(int sta)
  2. {
  3.     int i;
  4.     static int x = 0;
  5.         for ( i = 0; i < 4; i++)
  6.         {
  7.             led_sta[i] = led_ligt[x+sta*4][i];
  8.             
  9.         }
  10.         led_flash();
  11.         delay_1ms(400);
  12.         printf("HELL WORLD!rn");
  13.         printf("GD32VF103R Printf demorn");
  14.         x = x+1;
  15.         if (x==5)
  16.             x=0;
  17. }
【总结】开发板上的PA9、10另有它用,大家注意,要不掉坑里。初始化串口还是非常简单的。
printf.png

回帖(1)

alpaak

2022-5-16 12:19:15
串口改得很成功,usart0改成usart1, 我也是这么改的。居然不成功,经盼盼提醒,焊上就没问题了。谢谢分享。
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分