回答

收藏

GD32方案分享②:串口打印

GD32 GD32 2757 人阅读 | 0 人回复 | 2017-05-25


  1. #include "uart.h"

  2. void UART_Init(uint32_t usart,uint64_t baud)
  3. {
  4.          /* enable GPIO clock */
  5.     rcu_periph_clock_enable(RCU_USART0);
  6.                
  7.     /* enable USART clock */
  8.     rcu_periph_clock_enable(RCU_GPIOA);

  9.     /* connect port to USARTx_Tx */
  10.     gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_9);

  11.     /* connect port to USARTx_Rx */
  12.     gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_10);

  13.     /* configure USART Tx as alternate function push-pull */
  14.     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_9);
  15.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_10);

  16.     /* configure USART Rx as alternate function push-pull */
  17.     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_9);
  18.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_10);

  19.     /* USART configure */
  20.     usart_deinit(usart);
  21.     usart_baudrate_set(usart,baud);
  22.     usart_receive_config(usart, USART_RECEIVE_ENABLE);
  23.     usart_transmit_config(usart, USART_TRANSMIT_ENABLE);
  24.     usart_enable(usart);
  25. }

  26. int fputc(int ch, FILE *f)
  27. {      
  28.         while(usart_flag_get(Debug_UART,USART_FLAG_TBE)==0);
  29.         usart_data_transmit(Debug_UART,ch);
  30.         return ch;
  31. }
复制代码
注意添加这个fputc 和调用stdio.h 就可以打印了

  1. #include "include.h"

  2. int main(void)
  3. {
  4.     systick_config();
  5.        
  6.         UART_Init(USART0,115200);

  7.        
  8.           while(1)
  9.          {
  10.                     delay_1ms(200);
  11.                     printf("uart test is OK\r\n");
  12.                           
  13.     }
  14. }
复制代码
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条