问答

汇集网友智慧,解决技术难题

gcjd

TA的家园币:10  

  • 使能串口发送中断, 出现前导乱码, 问题求解

    使用芯片华大HC32F460PETB,每次使能Uart发送中断,串口就会发送"11111100"(HEX)3-4BYTE的乱码,这个时候还未进行中断处理,前导乱码已经发出!向给位请教一下,怎么处理,消除前导乱码/******************************************************************************brief:发送中断param:Noneretval:None*****************************************************************************/staticvoidUsartTxIrqCallback(void){uint8_tu8Data=0u;if(Ok==RingBufRead(&m_stcRingBuf_Out,&u8Data)){USART_SendData(USART_CH,(uint16_t)u8Data);}//如果数据已经发送完毕,关闭发送中断,打开发送完毕中断if(IS_RING_BUFFER_EMPTY(&m_stcRingBuf_Out)){//发送数据完毕,关发送中断USART_FuncCmd(USART_CH,UsartTxEmptyInt,Disable);//打开发送完毕中断USART_FuncCmd(USART_CH,UsartTxCmpltInt,Enable);}}/******************************************************************************brief:发送完毕中断param:Noneretval:None*****************************************************************************/staticvoidUsartTxCmpltIrqCallback(void){//关闭发送中断,关闭完毕中断USART_FuncCmd(USART_CH,UsartTx,Disable);USART_FuncCmd(USART_CH,UsartTxCmpltInt,Disable);//发送闲0m_u8Status=0u;;}/******************************************************************************brief:启动发送中断param:voidretval:void注:如果忙或者为空,就没有必要启动发送*****************************************************************************/voidUartA_Start_Send(void){registerrt_base_tlevel;uint8_tu8Data=0u;//必须原子,因为要支持边发边加level=rt_hw_interrupt_disable();if((!IS_RING_BUFFER_EMPTY(&m_stcRingBuf_Out))&&(0u==m_u8Status)){//装入首字符/*if(Ok==RingBufRead(&m_stcRingBuf_Out,&u8Data))