【目的】初始化串口,并用printfl向串口输出hello world.
【步骤】
1、初始化PA2、PA3,本来想用usart0的,但是在
开发板上没有找到PA9、PA10的引出IO,原来初始化usart0后搞了半天没有成功(我是接的板载的UART)。后面问了兆易创新的技术,说PA9、PA10另有用处。所以这里只能用USART1来做串口输出了。
- /*!
- brief configure USART1
- param[in] none
- arg
- arg
- param[out] none
- retval none
- */
- void gd_eval_com_init(void)
- {
- /* enable GPIO clock */
- rcu_periph_clock_enable(RCU_GPIOA);
- /* enable USART clock */
- rcu_periph_clock_enable(RCU_USART1);
- /* connect port to USARTx_Tx */
- gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2 );
- /* connect port to USARTx_Rx */
- gpio_init(GPIOA, GPIO_MODE_IN_FLOAtiNG, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
- /* USART configure */
- usart_deinit(USART1);
- usart_baudrate_set(USART1, 115200U);
- usart_word_length_set(USART1, USART_WL_8BIT);
- usart_stop_bit_set(USART1, USART_STB_1BIT);
- usart_parity_config(USART1, USART_PM_NONE);
- usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
- usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
- usart_receive_config(USART1, USART_RECEIVE_ENABLE);
- usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
- usart_enable(USART1);
- }
2、改写printf重定向函数:
- /* retarget the C library printf function to the USART */
- int _put_char(int ch)
- {
- usart_data_transmit(USART1, (uint8_t) ch );
- while ( usart_flag_get(USART1, USART_FLAG_TBE)== RESET){
- }
- return ch;
- }
3、修改led流水灯程序:
- void sta_flash(int sta)
- {
- int i;
- static int x = 0;
- for ( i = 0; i < 4; i++)
- {
- led_sta[i] = led_ligt[x+sta*4][i];
-
- }
- led_flash();
- delay_1ms(400);
- printf("HELL WORLD!rn");
- printf("GD32VF103R Printf demorn");
- x = x+1;
- if (x==5)
- x=0;
- }
【总结】开发板上的PA9、10另有它用,大家注意,要不掉坑里。初始化串口还是非常简单的。