ZStack3.0 UART实现printf

可以有两种方式实现串口初始化

1 通过TI提供的drive库函数

2 自己查寄存器手册直接初始化寄存器

下面函数中如果宏定义USER_UART 则是通过库函数 否则通过寄存器初始化

void User_UartInit (void)

{
#ifdef USER_UART
  halUARTCfg_t uartConfig;


  /* UART Configuration */
  uartConfig.configured           = TRUE;
  uartConfig.baudRate             = USER_UART_DEFAULT_BAUDRATE;
  uartConfig.flowControl          = FALSE;//USER_UART_DEFAULT_OVERFLOW;
  uartConfig.flowControlThreshold = USER_UART_DEFAULT_THRESHOLD;
  uartConfig.rx.maxBufSize        = USER_UART_DEFAULT_MAX_RX_BUFF;
  uartConfig.tx.maxBufSize        = USER_UART_DEFAULT_MAX_TX_BUFF;
  uartConfig.idleTimeout          = USER_UART_DEFAULT_IDLE_TIMEOUT;
  uartConfig.intEnable            = TRUE;


  uartConfig.callBackFunc         = NULL;//User_UartProcessData;

  /* Start UART */


  HalUARTOpen (USER_UART_DEFAULT_PORT, &uartConfig);
#else
  
  
  PERCFG&=~0x01;  
  P0SEL |= 0x0C;   //P0_2 RXD P0_3 TXD 外设功能 0000 1100
 
  U0CSR |= 0xC0;  //串口接收使能  1100 0000 工作UART模式+允许接受
  U0UCR |= 0x00;  //无奇偶校验,1位停止位
 
//  U0GCR |= 0x08;  
//  U0BAUD = 0x3b;  //波特率:9600bps  


  U0GCR |= 11;  
  U0BAUD = 216;  //波特率:115200bps  
 
//  IEN0 |= 0X04;     //开串口接收中断 'URX0IE = 1',也可以写成 URX0IE=1;
  EA=1;
  
#endif


//  printf("SystemInit\r\n");
  U_LOG("Uart Init Finish!");
//  E_LOG("Uart Init Err");

}

初始化完成后重写putchar函数就可以使用printf了

__near_func int  putchar(int c)
{
  
#ifdef USER_UART
    unsigned char data;
    
    data = (unsigned char)c;
    HalUARTWrite(USER_UART_DEFAULT_PORT,(uint8 *)&data,1);
#else


    U0DBUF = (unsigned char)c;
    while(UTX0IF == 0);
    UTX0IF = 0;
#endif
    return c;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值