2102|0

2057

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

[TI首届低功耗设计大赛]+寄存器版本串口测试 [复制链接]

本帖最后由 IC爬虫 于 2014-10-31 13:39 编辑

本试验是FR5969的简单的串口测试测试例程!
       在这个试验中配置FR5969使用外部低频晶振,ACLK = 32768Hz, MCLK = SMCLK = BRCLK = default DCO = ~1MHz。
       配置串口使用ACLK作为串口的时钟,波特率配置为9600,开启接收中断,调用USCI_A0.C中我写好的串口发送函数可以实现单字符和字符串的发送。使用串口调试工具发送任意字符可以改变LED0的状态。
每发送一次单字符和字符串后进入低功耗模式LPM0在接收中断中可以退出低功耗模式LPM0.

  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.   
  45.   PJSEL0 |= BIT4 | BIT5;      // Configure XT1 pins

  46.   PM5CTL0 &= ~LOCKLPM5;       // 关闭上电端口默认输出高阻抗的功能,使能上电保持起始设置
  47.   
  48.   UART_Init();

  49.   // XT1 Setup
  50.   CSCTL0_H = CSKEY >> 8;                    // Unlock CS registers
  51.   CSCTL1 = DCOFSEL_0;                       // Set DCO to 1MHz
  52.   CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
  53.   CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;     // Set all dividers
  54.   CSCTL4 &= ~LFXTOFF;                       // Enable LFXT1
  55.   do
  56.   {
  57.     CSCTL5 &= ~LFXTOFFG;                    // Clear XT1 fault flag
  58.     SFRIFG1 &= ~OFIFG;
  59.   }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  60.   CSCTL0_H = 0;                             // Lock CS registers

  61.   while (1)
  62.   {
  63.     UartTX_Send_char('w');                  //发送单个字符
  64.     UartTX_Send_String("\n EE WORLD \n");     //发送字符串
  65.     __bis_SR_register(LPM0_bits | GIE);     // Enter LPM0, interrupts enabled
  66.   }
  67. }


  68. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
  69. #pragma vector = USCI_A0_VECTOR             // eUSCI ISR
  70. __interrupt void USCI_A0_ISR(void)
  71. #elif defined(__GNUC__)
  72. void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
  73. #else
  74. #error Compiler not supported!
  75. #endif
  76. {
  77.   UCA0IFG &= ~UCRXIFG;                      // Clear interrupt
  78.   RXData = UCA0RXBUF;                       // Clear buffer
  79.   if(RXData != TXData)                      // Check value
  80.   {
  81.     P1OUT ^= BIT0;                          // If incorrect turn on P1.0
  82.       //while(1);                             // Trap CPU
  83.   }
  84.   TXData++;                                 // Increment TX data
  85.   __bic_SR_register_on_exit(CPUOFF);        // Exit LPM0 on reti
  86. }
复制代码
USART测试.rar (38.73 KB, 下载次数: 3, 售价: 2 分芯积分)

赞赏

1

查看全部赞赏

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表