最近调试新唐的N76E003单片机的串口收发,官方及网上对单字节的收发的城西都有,很简单就完成了。
问题是比如:N76E003串口,接收连续数据不完整怎么解决,N76E003串口接收不定长的字符串怎么解决?
这里提供一个方案解决这个问题,采用中断方式完成串口接收,波特率 9600到115200 都没有问题:
参考官方案例为基础,这里不上多余的代码,请自行参考网络。
使用串口调试工具测试,需要注意的一点是,调试工具发送选择,请选中“加回车换行”
bit rcvFlg;
UINT16 recvCnt=0;
static UINT8 state=0;
#define UARTRCBUFSIZE 128
UINT8 UART_BUFFER[UARTRCBUFSIZE];
void main()
{
InitialUART0_Timer3(115200);
set_ES; //enable UART interrupt 启用串口中断
set_EA; //enable global interrupt 启用全局中断
while(1)
{
if (rcvFlg)
{
Uart0_SendString(UART_BUFFER);
set_ES; //enable UART interrupt
SCON = 0x50; //UART0 Mode1,REN=1,TI=1
rcvFlg= 0;
}
}
}
void serial_IT(void) interrupt 4
{
if (RI)
{
UART_BUFFER[recvCnt++] = SBUF; /* if reception occur */
clr_RI; /* clear reception flag for next reception */
if((SBUF == '