UART.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <Myproject.h>
  2. void UART1_Init(void)
  3. {
  4. SetBit(PH_SEL, UART1EN);
  5. UT_MOD1 = 0;
  6. UT_MOD0 = 1;
  7. SM2 = 0;
  8. REN = 1;
  9. ES0 = 0;
  10. SetBit(IP3, PI2C_UT11);
  11. ClrBit(IP3, PI2C_UT10); // 中断优先级别3
  12. // SetBit(UT_BAUD , UART_2xBAUD); //????0-->Disable 1-->Enable
  13. // default baudrate:9600-0x9b,1200-0x4E1
  14. UT_BAUD = 0x9B;
  15. ES0 = 1;
  16. }
  17. void UART2_Init(void)
  18. {
  19. SetBit(PH_SEL, UART2EN);
  20. /* UART模式 UT2_MOD1,UT2_MOD0为:
  21. 00 模式0,移位寄存器波特率为 系统时钟 /12
  22. 01 模式1,8-bit UART 波特率为 fcpu_clk / ( (16 / (1+ UT2_BAUD[BAUD2_SEL]) ) / (UT2_BAUD+1) )
  23. 10 模式2,9-bit UART 波特率为 fcpu_clk / ( 32 – 16* UT2_BAUD[BAUD2_SEL])
  24. 11 模式3,9-bit UART 波特率为 fcpu_clk / ( (16 / (1+ UT2_BAUD[BAUD2_SEL])) / (UT2_BAUD+1) ) */
  25. UT2MOD1 = 0; // 9位模式 01
  26. UT2MOD0 = 1;
  27. /* Does not allow multi-thread cpu operation */
  28. /* UT2_SM2 为 0 - 单机通讯为 1 - 多机通讯 */
  29. UT2SM2 = 0;
  30. /* UT2_REN 为 0 - 禁止接收为 1 - 使能接收 */
  31. UT2REN = 1;
  32. UT2RI = 0;
  33. /* Uart2设置中断优先级 */
  34. SetBit(IP3, PSPI_UT21);
  35. ClrBit(IP3, PSPI_UT20);
  36. // UART2CH1, UART2CH0
  37. // 00:P3.6 为 RXD、P3.7 为 TXD(P3.6 为单线模式的输入输出)
  38. // 01:P4.7 为 RXD、P1.2 为 TXD(P1.2 为单线模式的输入输出)
  39. // 1X:P0.1 为 RXD、P0.0 为 TXD(P0.1 为单线模式的输入输出)
  40. ClrBit(PH_SEL1, UART2CH1);
  41. ClrBit(PH_SEL1, UART2CH0);
  42. // 设置波特率 根据 fcpu_clk / ( (16 / (1+ UT2_BAUD[BAUD2_SEL]) ) / (UT2_BAUD+1) )计算
  43. UT2_BAUD |= 1500000 / 9600 - 1;
  44. // SetBit(UT2_BAUD,BAUD2_SEL);
  45. SetBit(UT2_BAUD, UART2IEN);
  46. }