我用M058SSAN板子做串口实验,发送数据,发现有问题。
发送0x55是对的,发送0xaa时,第一个数据是0xab,后面的都是0x15.
请高手指教,怎么解决?谢谢!
附程序:
#include"SmartM_M0.h"
VOID UartInit1(UINT32 unFosc,UINT32 unBaud)
{
P3_MFP&=~(P31_TXD0|P30_RXD0);
P3_MFP|=(TXD0|RXD0); //P3.0使能为串口0接收引脚
//P3.1使能为串口0发送引脚
UART0_Clock_EN; //串口0时钟使能
UARTClkSource_ex12MHZ; //串口时钟选择为外部晶振
CLKDIV&=~(15<<8); //串口时钟分频为0
IPRSTC2|=UART0_RST; //复位串口0
IPRSTC2&=~UART0_RST; //复位结束
UA0_FCR|=TX_RST; //发送FIFO复位
UA0_FCR|=RX_RST; //接收FIFO复位
UA0_LCR&=~PBE; //校验位功能取消
UA0_LCR&=~WLS;
UA0_LCR|=WL_8BIT; //8位数据位
UA0_LCR&=NSB_ONE; //1位停止位
UA0_BAUD|=DIV_X_EN|DIV_X_ONE; //设置波特率分频
UA0_BAUD|=((unFosc/unBaud)-2); //波特率设置UART_CLK/(A+2)=115200bps
}
VOID UartSend(UINT8 *pBuf,UINT32 unNumOfBytes)
{
UINT32 i;
for(i=0;i<unNumOfBytes;i++)
{
UA0_THR=*(pBuf+i);
while((UA0_FSR&TX_EMPTY)!=0X00); //检查发送FIFO是否为空
}
}
INT32 main(VOID)
{
UINT32 i;
UINT8 j,send[1];
PROTECT_REG //ISP下载是保护FLASH存储器
(
PWRCON|=XTL12M_EN; //默认时钟源为外部晶振
while((CLKSTATUS&XTL12M_STB)==0); //等待12MHz时钟稳定
CLKSEL0=(CLKSEL0&(~HCLK))|HCLK_12M; //设置外部晶振为系统时钟
)
UartInit1(12000000,9600); //波特率设置为9600bit/s
send[0]=0;
while(1)
{
j=0;
//发送数据0~255
//for(i=0;i<256;i++)
//{
//UartSend(&j,1);
//j++;
//UartSend(&send[0],1);
/*UA0_THR=0x55;
while((UA0_FSR&TX_EMPTY)!=0X00); //检查发送FIFO是否为空
send[0]++;
Delayms(500);*/
UA0_THR=0xaa;
while((UA0_FSR&TX_EMPTY)!=0X00); //检查发送FIFO是否为空
send[0]++;
Delayms(500);
//}
}
}
|