标题:
串口中断的学习
[打印本页]
作者:
dajia
时间:
2015-3-21 03:03
标题:
串口中断的学习
昨天写串口中断的程序,一直没调好,才发现是串口中断里的函数干的事情太多的原因。
我原来的程序:
void uart()interrupt 4
{
if(RI)
{
global_uart_table[global_i]=SBUF;
assign_gsm_net();
assign_gprs_table();
compare_gsm_net_sign(); //判断是否获取网络时间
compare_gprs_net_sign();//判断是否获取GPRS服务器时间
assign_usb_table();
assign_fn_table();
compare_usb_sign(); //判断是否收到帧结束符
compare_fn_sign(); //判断电脑添加用户是否结束
global_i++;
if(global_i>MAX_UART_TABLE_NUMBER-1)
{
global_i=0;
}
RI=0;
}
}
发现这个程序一直不安自己想的走,后来发现是我在中断里做的事情太多了,因为我设定的波特率为115200.如果我在中断了干活的时间太长的话,那下一次中断来时我还没有退出中断,那么它的信息我将丢失掉。这就是原因的所在。
作者:
dajia
时间:
2015-3-21 03:04
今天写程序碰见一个奇怪的问题,我用到单片机的串口,在配置的时候使能了串口中断,但是我没有写相应的中断函数,编译程序没错误,但是下载到板子上的时候程序死在了开头,后来我写上中断函数,在中断函数里随便写了一些代码,程序能正常执行,我把串口使能关断,不写串口中断,程序也能正常执行。
作者:
bjfxxc
时间:
2015-3-27 15:58
谢谢楼主的分享,这都是经验。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1