单片机/MCU论坛
直播中

VCX

5年用户 20经验值
私信 关注
[问答]

华大mcu用串口发数据,串口调试助手接收数据异常

`Uart_SendData(UARTCH0, 'd');
函数原型:en_result_t Uart_SendData(uint8_t u8Idx, uint8_t u8Data){
    stc_uart_instance_data_t *pstcData = NULL;
    ASSERT(IS_VALID_CH(u8Idx));
    pstcData = UartGetinternDataPtr(u8Idx);
    if (NULL == pstcData)
    {
        return ErrorInvalidParameter;
    }
    Uart_ClrStatus(u8Idx,UartTC);
    pstcData->pstcInstance->SBUF_f.DATA = u8Data;
    while(FALSE == Uart_GetStatus(u8Idx,UartTC))
    {}
    Uart_ClrStatus(u8Idx,UartTC);      
    return Ok;
}<
/font>
但是发送后串口调试助手却收到如图数据
按道理发送d,应该就显示d(十六进制为64),这是怎么回事,求大神指教
` 微信截图_20190104162204.png
已退回1积分

回帖(2)

阿信509

2019-1-4 16:48:20
你初始化的数据,使用带有校验位的吗?
1 举报
  • VCX: stcConfig.enRunMode = UartMode3;//??3
        stcConfig.enStopBit = Uart1bit;  

        stcMulti.enMulti_mode = UartNormal;//??????
        enTb8 = UartEven;//???
        Uart_SetMMDOrCk(UARTCH0,enTb8);
        stcConfig.pstcMultiMode = &amp;stcMulti;
       
        Uart_Init(UARTCH0, &amp;stcConfig);
       
        Uart_SetClkDiv(UARTCH0,Uart8Or16Div);
        stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
        stcBaud.enRunMode = UartMode3;
        stcBaud.u32Baud = 9600;
        u16Scnt = Uart_CalScnt(UARTCH0,&amp;stcBaud);
        Uart_SetBaud(UARTCH0,u16Scnt);
       
        Uart_ClrStatus(UARTCH0,UartRC);
        Uart_EnableFunc(UARTCH0,UartRx);

    设置的是偶校验

阿信509

2019-1-4 16:55:47
先设置一个不带校验的试试,那样简单些
2 举报
  • VCX: 貌似设置不了无校验啊
    typedef enum en_uart_mmdorck
    {
        UartDataOrAddr = 0u, ///&lt;多主机模式时,通过读写SBUF[8]决定帧为数据帧或地址帧
        UartEven       = 1u, ///&lt;非多主机模式偶校验   
        UartOdd        = 2u, ///&lt;非多主机模式奇校验   
    }en_uart_mmdorck_t;
    这是他的结构体
  • VCX: 本来是发d一个字节数据,但是调试助手却接收到2个字节的数据,不知道问题出在哪

更多回帖

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