收藏 分销(赏)

msp430的学习重点笔记很好用的.doc

上传人:天**** 文档编号:3023183 上传时间:2024-06-13 格式:DOC 页数:20 大小:33.54KB 下载积分:10 金币
下载 相关 举报
msp430的学习重点笔记很好用的.doc_第1页
第1页 / 共20页
msp430的学习重点笔记很好用的.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
整体程序设计构造,涉及了所有外围模块及内部时钟,中断,定期初始化。详细状况人们可以依照自己需要添加或者减少,记住,模块化设计时最有力武器。 /*****************************************************************************\ 文献名:main.c 描述:MSP430框架程序。合用于MSP430F149,其她型号需要恰当变化。 不使用中断函数保存或者删除都可以,但保存时应保证不要打开不需要中断。   \*****************************************************************************/     //头文献 #include <MSP430x14x.h>     //函数声明   void InitSys(); int main( void ) {            WDTCTL = WDTPW + WDTHOLD;             //关闭看门狗            InitSys();    //初始化       start:      //如下填充顾客代码                  LPM3;  //进入低功耗模式n,n:0~4。若不但愿进入低功耗模式,屏蔽本句      goto start;       } /***************************************************************************** 系统初始化 ******************************************************************************/ void InitSys() {      unsigned int iq0;            //使用XT2振荡器      BCSCTL1&=~XT2OFF;         //打开XT2振荡器      do      {            IFG1 &= ~OFIFG;    // 清除振荡器失效标志            for (iq0 = 0xFF;iq0 > 0;iq0--); // 延时,等待XT2起振      }      while ((IFG1 & OFIFG) != 0);   // 判断XT2与否起振            BCSCTL2 =SELM_2+SELS;    //选取MCLK、SMCLK为XT2            //如下填充顾客代码,对各种模块、中断、外围设备等进行初始化            _EINT();//打开全局中断控制,若不需要打开,可以屏蔽本句 } /***************************************************************************** 端口2中断函数 ******************************************************************************/ #pragma vector=PORT2_VECTOR __interrupt void Port2() {      //如下为参照解决程序,不使用端口应当删除其对于中断源判断。      if((P2IFG&BIT0) == BIT0)      {            //解决P2IN.0中断            P2IFG &= ~BIT0;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT1) ==BIT1)      {            //解决P2IN.1中断            P2IFG &= ~BIT1;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT2) ==BIT2)      {            //解决P2IN.2中断            P2IFG &= ~BIT2;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT3) ==BIT3)      {            //解决P2IN.3中断            P2IFG &= ~BIT3;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT4) ==BIT4)      {            //解决P2IN.4中断            P2IFG &= ~BIT4;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT5) ==BIT5)      {            //解决P2IN.5中断            P2IFG &= ~BIT5;//清除中断标志            //如下填充顾客代码                  }      else if((P2IFG&BIT6) ==BIT6)      {            //解决P2IN.6中断            P2IFG &= ~BIT6;//清除中断标志            //如下填充顾客代码                  }      else      {            //解决P2IN.7中断            P2IFG &= ~BIT7;//清除中断标志            //如下填充顾客代码                  }            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** USART1发送中断函数 ******************************************************************************/ #pragma vector=USART1TX_VECTOR __interrupt void Usart1Tx() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** USART1接受中断函数 ******************************************************************************/ #pragma vector=USART1RX_VECTOR __interrupt void Ustra1Rx() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 端口1中断函数 多中断中断源:P1IFG.0~P1IFG7 进入中断后应一方面判断中断源,退出中断前应清除中断标志,否则将再次引起中断 ******************************************************************************/ #pragma vector=PORT1_VECTOR __interrupt void Port1() {      //如下为参照解决程序,不使用端口应当删除其对于中断源判断。      if((P1IFG&BIT0) == BIT0)      {            //解决P1IN.0中断            P1IFG &= ~BIT0;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT1) ==BIT1)      {            //解决P1IN.1中断            P1IFG &= ~BIT1;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT2) ==BIT2)      {            //解决P1IN.2中断            P1IFG &= ~BIT2;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT3) ==BIT3)      {            //解决P1IN.3中断            P1IFG &= ~BIT3;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT4) ==BIT4)      {            //解决P1IN.4中断            P1IFG &= ~BIT4;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT5) ==BIT5)      {            //解决P1IN.5中断            P1IFG &= ~BIT5;//清除中断标志            //如下填充顾客代码                  }      else if((P1IFG&BIT6) ==BIT6)      {            //解决P1IN.6中断            P1IFG &= ~BIT6;//清除中断标志            //如下填充顾客代码                  }      else      {            //解决P1IN.7中断            P1IFG &= ~BIT7;//清除中断标志            //如下填充顾客代码                  }            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 定期器A中断函数 多中断中断源:CC1~2 TA ******************************************************************************/ #pragma vector=TIMERA1_VECTOR __interrupt void TimerA1() {      //如下为参照解决程序,不使用中断源应当删除      switch (__even_in_range(TAIV,10))      {      case 2:            //捕获/比较1中断            //如下填充顾客代码                        break;      case 4:            //捕获/比较2中断            //如下填充顾客代码                        break;      case 10:            //TAIFG定期器溢出中断            //如下填充顾客代码                        break;      }                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 定期器A中断函数 中断源:CC0 ******************************************************************************/ #pragma vector=TIMERA0_VECTOR __interrupt void TimerA0() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** AD转换器中断函数 多中断源:摸拟0~7、VeREF+、VREF-/VeREF-、(AVcc-AVss)/2 没有解决ADC12TOV和ADC12OV中断标志 ******************************************************************************/ #pragma vector=ADC_VECTOR __interrupt void Adc() {      //如下为参照解决程序,不使用中断源应当删除      if((ADC12IFG&BIT0)==BIT0)      {            //通道0            //如下填充顾客代码                  }      else if((ADC12IFG&BIT1)==BIT1)      {            //通道1            //如下填充顾客代码                  }      else if((ADC12IFG&BIT2)==BIT2)      {            //通道2            //如下填充顾客代码                  }      else if((ADC12IFG&BIT3)==BIT3)      {            //通道3            //如下填充顾客代码                  }      else if((ADC12IFG&BIT4)==BIT4)      {            //通道4            //如下填充顾客代码                  }      else if((ADC12IFG&BIT5)==BIT5)      {            //通道5            //如下填充顾客代码                  }      else if((ADC12IFG&BIT6)==BIT6)      {            //通道6            //如下填充顾客代码                  }      else if((ADC12IFG&BIT7)==BIT7)      {            //通道7            //如下填充顾客代码                  }      else if((ADC12IFG&BIT8)==BIT8)      {            //VeREF+            //如下填充顾客代码                  }      else if((ADC12IFG&BIT9)==BIT9)      {            //VREF-/VeREF-            //如下填充顾客代码                  }      else if((ADC12IFG&BITA)==BITA)      {            //温度            //如下填充顾客代码                  }      else if((ADC12IFG&BITB)==BITB)      {            //(AVcc-AVss)/2            //如下填充顾客代码                  }            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** USART0发送中断函数 ******************************************************************************/ #pragma vector=USART0TX_VECTOR __interrupt void Usart0Tx() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** USART0接受中断函数 ******************************************************************************/ #pragma vector=USART0RX_VECTOR __interrupt void Usart0Rx() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 看门狗定期器中断函数 ******************************************************************************/ #pragma vector=WDT_VECTOR __interrupt void WatchDog() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 比较器A中断函数 ******************************************************************************/ #pragma vector=COMPARATORA_VECTOR __interrupt void ComparatorA() {      //如下填充顾客代码                  LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 定期器B中断函数 多中断源:CC1~6 TB ******************************************************************************/ #pragma vector=TIMERB1_VECTOR __interrupt void TimerB1() {      //如下为参照解决程序,不使用中断源应当删除      switch (__even_in_range(TBIV,14))      {      case 2:            //捕获/比较1中断            //如下填充顾客代码                        break;      case 4:            //捕获/比较2中断            //如下填充顾客代码                        break;      case 6:            //捕获/比较3中断            //如下填充顾客代码                        break;      case 8:            //捕获/比较4中断            //如下填充顾客代码                        break;      case 10:            //捕获/比较5中断            //如下填充顾客代码                        break;      case 12:            //捕获/比较6中断            //如下填充顾客代码                        break;      case 14:            //TBIFG定期器溢出中断            //如下填充顾客代码                        break;      }            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 定期器B中断函数 中断源:CC0 ******************************************************************************/ #pragma vector=TIMERB0_VECTOR __interrupt void TimerB0() {      //如下填充顾客代码            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 不可屏蔽中断函数 ******************************************************************************/ #pragma vector=NMI_VECTOR __interrupt void Nmi() {      //如下为参照解决程序,不使用中断源应当删除      if((IFG1&OFIFG)==OFIFG)      {            //振荡器失效            IFG1 &= ~OFIFG;            //如下填充顾客代码                  }      else if((IFG1&NMIIFG)==NMIIFG)      {            //RST/NMI不可屏蔽中断            IFG1 &= ~NMIIFG;            //如下填充顾客代码                  }      else //if((FCTL3&ACCVIFG)==ACCVIFG)      {            //存储器非法访问            FCTL3 &= ~ACCVIFG;            //如下填充顾客代码                  }            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 } /***************************************************************************** 基本定期器中断函数 ******************************************************************************/ #pragma vector=BASICTIMER_VECTOR __interrupt void BasTimer() {      //如下填充顾客代码            LPM3_EXIT;//退出中断后退出低功耗模式。若退出中断后要保存低功耗模式,将本句屏蔽 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服