搜索
bottom↓
回复: 3

msp430f5438a在波特率115200下无法进入中断

[复制链接]

出0入0汤圆

发表于 2014-8-21 11:49:12 | 显示全部楼层 |阅读模式
用了网上看到的一大神的代码,根据自己板子的情况改了一下,在波特率115200下用串口工具发数据进不了接收中断,想问问各位是为什么


  1. #include <msp430.h>  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "PIN_DEF.H"
  6. void clock_config(void);  
  7. void select_xt1(void);  
  8. void dco_config(void);  
  9. void uart_config(void);
  10. int main(void)  
  11. {  
  12.     clock_config();                             // 初始化时钟  
  13.     P5DIR  |= POWER                                                  ; // 主电源
  14.   MAIN_POWER_ON                                                    ;
  15.     uart_config();  
  16.     _EINT();  
  17.     while(1) ;
  18. }  
  19.   
  20. void clock_config(void)  
  21. {  
  22.     WDTCTL = WDTPW + WDTHOLD;                   // 停止看门狗  
  23.     select_xt1();                               // 选择XT1  
  24.     dco_config();                               // ACLK = XT1 = 32.768K  
  25.                                                 // MCLK = SMCLK = 8000K  
  26. }  
  27.   
  28. void select_xt1(void)  
  29. {  
  30.     // 启动XT1  
  31.     P7SEL |= 0x03;                              // P7.0 P7.1 外设功能  
  32.     UCSCTL6 &= ~(XT1OFF);                       // XT1打开  
  33.     UCSCTL6 |= XCAP_3;                          // 内部电容  
  34.     do  
  35.     {  
  36.         UCSCTL7 &= ~XT1LFOFFG;                  // 清楚XT1错误标记  
  37.     }while (UCSCTL7&XT1LFOFFG);                 // 检测XT1错误标记  
  38. }  
  39.   
  40. void dco_config(void)  
  41. {  
  42.     __bis_SR_register(SCG0);                    // 禁止FLL功能  
  43.     UCSCTL0 = 0x0000;                           // Set lowest possible DCOx, MODx  
  44.     UCSCTL1 = DCORSEL_7;                        //
  45.     UCSCTL2 = FLLD_1 + 243;                     // 设置DCO频率为8MHz  
  46.                                                 // MCLK = SMCLK= Fdcoclkdiv = (N+1)X(Ffllrefclk/n)  
  47.                                                 // N为唯一需要计算的值  
  48.                                                 // Ffllrefclk FLL参考时钟,默认为XT1  
  49.                                                 // n取默认值,此时为1  
  50.                                                 // (243 + 1) * 32768 = 8MHz  
  51.     __bic_SR_register(SCG0);                    // 使能FLL功能  
  52.   
  53.     // 必要延时  
  54.     __delay_cycles(250000);  
  55.   
  56.     // 清楚错误标志位  
  57.     do  
  58.     {  
  59.         UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);  
  60.                                                 // 清除所有振荡器错误标志位  
  61.         SFRIFG1 &= ~OFIFG;                      // 清除振荡器错误  
  62.     }while (SFRIFG1&OFIFG);                     // 等待清楚完成  
  63. }  
  64.   
  65. void uart_config(void)  
  66. {  
  67.        P10SEL |= BIT4+BIT5;                            // 选择P10.4和P10.5的复用功能  
  68.   
  69.     UCA3CTL1 |= UCSWRST;                        // 软件复位  
  70.     UCA3CTL1 |= UCSSEL_2;                       // 选择SMCLK时钟  
  71.     UCA3BR0 = 69;                               // 查表获得  
  72.     UCA3BR1 = 0;                                // UCA3BRX和UCA3MCTL数值  
  73.     UCA3MCTL |= UCBRS_4 + UCBRF_0;             //  
  74.     UCA3CTL1 &= ~UCSWRST;                       //  
  75.    
  76.   UCA3IE |= UCRXIE;                           // 使能接收中断  
  77. }  
  78.   

  79.   
  80. #pragma vector=USCI_A3_VECTOR  
  81. __interrupt void USCI_A3_ISR(void)  
  82. {  
  83.   switch(__even_in_range(UCA3IV,4))  
  84.   {  
  85.   case 0:break;  
  86.   case 2:                                   // 接收中断  
  87.     while (!(UCA3IFG&UCTXIFG));             // 等待发送完成  
  88.     UCA3TXBUF = UCA3RXBUF;                  // 接收缓冲区  
  89.     break;  
  90.   case 4:break;                             // 发送中断  
  91.   default: break;  
  92.   }  
  93. }  
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-8-21 11:54:18 | 显示全部楼层




你试试用这里面的例子看看,官方的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出400入0汤圆

发表于 2014-8-21 12:55:09 | 显示全部楼层
下一个mspware,里面有430官方demo

出0入0汤圆

 楼主| 发表于 2014-8-21 19:03:02 | 显示全部楼层
spacefram 发表于 2014-8-21 11:54
你试试用这里面的例子看看,官方的。

我就是用官方例程的话也不对的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 15:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表