mage32 串口USART 数据收和发异常,求助

2019-03-24 20:22发布

各位大侠好,本人使用AVR Mage32,收和发数据有点问题,求助。一、初始化配置USART代码见下,void uart0_init(void)  //初始化COM0
{
   UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);        //8bit+1bit  stop  ,UMSEL = 0 :Model:asynchronism          

   UBRRH = 0x00;
   UBRRL = 0x06; // 6.5  for 1M RC  U2X = 0 //内部1M RC 熔丝设置

   UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); // INT LOOK
}
void Sci0Write(uint8 *pstart, uint16 u16length)  // 间隔500ms发送,非中断
{
           uint16 i;
        uint8 *pData;

        pData = pstart;

        DIS_RX;
       
        for(i = 0;i < u16length;i++)
        {
                while (!(UCSRA & (1<<UDRE))); // UDRE: 1: buff empty is ready, 0:busy
               
                UDR = *pData;   
               
                CLR_TXC_F; // when TX finished , TXC is "1", then Set "1" to Clear TXC Flag , or  int to clear

        ++pData;

                //LED_D6_TEST;
        }

        ENB_RX;       
}


uint8 sQDataIn(QUEUE *pq, uint8 u8data) //在接收中断中保存数据至队列,保存数据在间隔500ms中被读出来
{
        if(pq->u16length == pq->u16size)
        {
                return(con_QBufFull);
        }
        else
        {
                *(pq->pIn) = u8data;
                pq->u16length++;
               
                if(pq->pIn == (pq->pStart + pq->u16size - 1))
                {
                        pq->pIn = pq->pStart;
                }
                else
                {
                        pq->pIn++;
                }
                return(con_QBufNormal);
        }

}
二,问题如下

发固定数据:
1.初始化发送0-9, 接收:00 01 02 03 04 05 06 07 08 09 ,OK
2.初始化发送0-9,:0x81 0xA0 0x84 0xC1  04 05 06 07 08 09, 接收:01 40 04 81 00 11 06 9F 00 00 ,为什么?


接收数据发送:
1.  接收数据: 00 01 02 03 04 05 06 07 08 09 (电脑发送)
    发送数据:00 80 40 04 81 90 08 82 00 00 (电脑接收)  为什么?




此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
770781327
2019-03-25 04:06
avr的没用过,建议利用asf的库试一下先,如果asf库的例程是可以的,可以比照着分析,如果不信,可以更新asf库,或使用以前的版本再试试

一周热门 更多>