各位大侠好,本人使用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 (电脑接收) 为什么?
此帖出自
小平头技术问答
楼主还是用ASF的demo研究一下,,然后在看看数据手册,,
要不然坐等,得到答案的概率不大,,除非有人也做过 这个串口的。
一周热门 更多>