您的位置 首页 资料

改善使用串口的FIFO接纳数据

/****************************************************************************#*名称:UART_Initt#*功能:初始化

  1. /****************************************************************************
  2. #*称号:UART_Initt
  3. #*功用:初始化UART0中止以及中止向量表的装备
  4. #*进口参数:无
  5. #*出口参数:无
  6. #****************************************************************************/
  7. voidUART_Init(void)
  8. {
  9. uint16Fdiv;
  10. U0LCR=0x83;//相关校验位、数据长度等的设置,DLAB=1,可设置波特率
  11. Fdiv=(Fpclk/16)/BAUD;
  12. U0DLM=Fdiv/256;
  13. U0DLL=Fdiv%256;
  14. U0LCR=0X03;
  15. U0IER=0X01;//只使能接纳中止
  16. U0FCR=0x81;//使能发送和接纳的FIFO,8字节触发
  17. IRQEnable();//使能IRQ中止(这一步留意,下午调试了良久,唉)
  18. VICIntSelect=0x00000000;//设置一切通道为IRQ中止
  19. VICVectCntl0=0x20|6;//UART0通道分配到IRQslot0,优先级最高
  20. VICVectAddr0=(uint32)UART0_IRQ;//设置UART0中止程序地址
  21. VICIntEnable=0x40;//使能UART0中止
  22. }
  23. void__irqUART0_IRQ(void)
  24. {
  25. intcount;
  26. switch(U0IIR&0x0F)
  27. {
  28. case0x02://发生发送中止
  29. break;
  30. case0x04://FIFO接纳数据抵达8个字节
  31. for(count=0;count<8;count++)
  32. {
  33. Recive_Buffer[UART0Count++]=U0RBR;//保存接纳到的数据
  34. }
  35. rcv_new=1;//标志接纳到新的数据
  36. break;
  37. case0x0c://FIF0中至少有一个数据,并且在3.5到4.5个字符时间内无数据进(可判别数据接纳完毕)
  38. while((U0LSR&0x01)==0x01)
  39. {
  40. Recive_Buffer[UART0Count++]=U0RBR;
  41. }
  42. rcv_new=1;//标志接纳到新的数据
  43. break;
  44. default:
  45. break;
  46. }
  47. VICVectAddr=0x00;//完毕中止
  48. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/264419.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部