微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM7串口编程要点

ARM7串口编程要点

时间:11-24 来源:互联网 点击:

[c-sharp] view plaincopyprint?

  1. #include "config.h"
  2. void DelayNS(uint32 dly)
  3. {
  4. uint32 i;
  5. for(; dly>0; dly--)
  6. {
  7. for(i=0; i<5000; i++);
  8. }
  9. }
  10. void UART0_Init(uint32 bps)
  11. {
  12. uint16 Fdiv;
  13. PINSEL0 = 0x00000005; //设置串口引脚
  14. U0LCR = 0x83; //置为除数锁存位,进行配置
  15. Fdiv = (Fpclk >> 4) / bps; // 设置波特率
  16. U0DLM = Fdiv >> 8;
  17. U0DLL = Fdiv & 0xff;
  18. U0LCR = 0x03; //清除除数锁存位,并设置工作模式
  19. }
  20. uint8 UART0_RcvByte(void)
  21. {
  22. uint8 rcv_data ;
  23. while((U0LSR&0X01)==0); //等待数据到达
  24. rcv_data = U0RBR; //从U0RBR中读出接收到的数据
  25. return rcv_data; //返回接收到的数据
  26. }
  27. void UART0_SendByte(uint8 data)
  28. {
  29. U0THR = data;
  30. while(0 == (U0LSR & 0x40));
  31. }
  32. void UART0_RecBuf (uint8 *buffer)
  33. {
  34. uint8 *pbuffer;
  35. uint8 i;
  36. for(pbuffer = buffer, i = 0;i < 8; i++)
  37. {
  38. *(pbuffer++) = UART0_RcvByte();
  39. }
  40. }
  41. void UART0_SendBuf(uint8 *buffer)
  42. {
  43. uint8 *pbuffer;
  44. uint8 i;
  45. for(pbuffer = buffer,i=0;i < 8; i++)
  46. UART0_SendByte(*(pbuffer++));
  47. }
  48. int main (void)
  49. {
  50. uint8 recver_buffer[8]; //定义接收帧缓冲区
  51. uint8 send_buffer[8] ={0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27}; //定义发送帧缓冲区
  52. UART0_Init(115200);
  53. while(1)
  54. {
  55. UART0_RecBuf(recver_buffer);
  56. DelayNS(10);
  57. if(0x10 ==recver_buffer[0] && 0x11 == recver_buffer[1])
  58. UART0_SendBuf(recver_buffer);
  59. else
  60. UART0_SendBuf(send_buffer);
  61. }
  62. return 0;
  63. }


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top