[原创] [TI首届低功耗设计大赛]+寄存器版本串口测试

IC爬虫   2014-10-31 13:38 楼主
本试验是FR5969的简单的串口测试测试例程! 在这个试验中配置FR5969使用外部低频晶振,ACLK = 32768Hz, MCLK = SMCLK = BRCLK = default DCO = ~1MHz。 配置串口使用ACLK作为串口的时钟,波特率配置为9600,开启接收中断,调用USCI_A0.C中我写好的串口发送函数可以实现单字符和字符串的发送。使用串口调试工具发送任意字符可以改变LED0的状态。 每发送一次单字符和字符串后进入低功耗模式LPM0在接收中断中可以退出低功耗模式LPM0. QQ截图20141031132041.png
  1. //******************************************************************************
  2. // MSP430FR59xx Demo - eUSCI_A0 串口收发数据测试
  3. //
  4. // 描述: 在这个试验中配置FR5969使用外部低频晶振,
  5. // ACLK = 32768Hz, MCLK = SMCLK = BRCLK = default DCO = ~1MHz
  6. //
  7. //
  8. // MSP430FR5969
  9. // -----------------
  10. // | XIN|-
  11. // | | 32KHz Crystal
  12. // | XOUT|-
  13. // /|\| |
  14. // | | |
  15. // --|RTS P2.0/UCA0TXD|----|
  16. // | | |
  17. // | | |
  18. // | P2.1/UCA0RXD|----|
  19. // | |
  20. // | P1.0|---> LED
  21. //
  22. // IC爬虫 QQ:1394024051
  23. //
  24. // Oct 2014
  25. // Built with IAR Embedded Workbench V6.1
  26. //******************************************************************************
  27. #include <msp430.h>
  28. #include "USCI_A0.h"
  29. unsigned char RXData = 0;
  30. unsigned char TXData = 1;
  31. /*******************************************************************************
  32. *函数名 :int main
  33. *描述 :主函数
  34. *输入 :无
  35. *输出 :无
  36. *调用 :内部调用
  37. ******************************************************************************/
  38. int main(void)
  39. {
  40. WDTCTL = WDTPW | WDTHOLD; // 停止看门狗
  41. // Configure GPIO
  42. P1OUT &= ~BIT0; // P1.0输出低电平,熄灭LED0
  43. P1DIR |= BIT0; // P1.0配置为输出方向,作为LED0的控制关键,高电平点亮
  44. PJSEL0 |= BIT4 | BIT5; // Configure XT1 pins
  45. PM5CTL0 &= ~LOCKLPM5; // 关闭上电端口默认输出高阻抗的功能,使能上电保持起始设置
  46. UART_Init();
  47. // XT1 Setup
  48. CSCTL0_H = CSKEY >> 8; // Unlock CS registers
  49. CSCTL1 = DCOFSEL_0; // Set DCO to 1MHz
  50. CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
  51. CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers
  52. CSCTL4 &= ~LFXTOFF; // Enable LFXT1
  53. do
  54. {
  55. CSCTL5 &= ~LFXTOFFG; // Clear XT1 fault flag
  56. SFRIFG1 &= ~OFIFG;
  57. }while (SFRIFG1&OFIFG); // Test oscillator fault flag
  58. CSCTL0_H = 0; // Lock CS registers
  59. while (1)
  60. {
  61. UartTX_Send_char('w'); //发送单个字符
  62. UartTX_Send_String("\n EE WORLD \n"); //发送字符串
  63. __bis_SR_register(LPM0_bits | GIE); // Enter LPM0, interrupts enabled
  64. }
  65. }
  66. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
  67. #pragma vector = USCI_A0_VECTOR // eUSCI ISR
  68. __interrupt void USCI_A0_ISR(void)
  69. #elif defined(__GNUC__)
  70. void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
  71. #else
  72. #error Compiler not supported!
  73. #endif
  74. {
  75. UCA0IFG &= ~UCRXIFG; // Clear interrupt
  76. RXData = UCA0RXBUF; // Clear buffer
  77. if(RXData != TXData) // Check value
  78. {
  79. P1OUT ^= BIT0; // If incorrect turn on P1.0
  80. //while(1); // Trap CPU
  81. }
  82. TXData++; // Increment TX data
  83. __bic_SR_register_on_exit(CPUOFF); // Exit LPM0 on reti
  84. }
USART测试.rar (38.73 KB)
(下载次数: 3, 2014-10-31 13:36 上传)
本帖最后由 IC爬虫 于 2014-10-31 13:39 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复