头像-9

秀文

  • EMC/EMI EDA/PCB
  • 安防电子

个人成就

获得 0 次赞

帮助过2人

MSP430G2553内存不足

我现在用MSP430G2553驱动无字库12864时字库的数组超过了RAM,用const 定义的话 主程序调用又出问题,该怎么解决呢?

求指点MSP430F149驱动超声波模块程序,不能正常工作

求指点MSP430F149驱动超声波模块程序,不能正常工作 #include #define  RISE  1 #define  FALL  0 #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define uint unsigned int #define uchar unsigned char #define Trig_H P1OUT|=BIT0 #define Trig_L P1OUT&=~BIT0 uint TA_Over_Cnt;//TA溢出次数存放变量 unsigned long int Period;//脉宽存放结果变量 unsigned long int S; uint distance; uint RiseCapVal;//上升沿时刻捕获值存放变量 uchar Edge=1;//当前触发沿 uchar disbuff[4]="0.00"; void Init_clock() {    uint i;    BCSCTL1=0X00;//将寄存器的内容清零                //XT2振荡器开启                //LFTX1工作在低频模式                //ACLK的分频因子为一    do    {      IFG1&=~OFIFG;      BCSCTL2|=SELM_2+SELS;//设置MCLK 和SMCLK为8M      for (i=0x20;i>0;i--);       }     while((IFG1&OFIFG)==OFIFG);//如果OSCFault=1    BCSCTL2=0X00;//将寄存器的内容清空    BCSCTL2+=SELM1; //MCLK 的时钟源为TX2CLK,分频因子为1    BCSCTL2+SELS;//SMCLK TX2CLK的时钟源为TX2CLK,分频因子为1 } void Init_IO()//I/O口初始化函数 {   P1DIR|=BIT0;//P1,0 口作为Trig输出口   P1DIR&=~BIT1;//P1,1 口作为Echor输入口   P1SEL|=BIT1;//P1,1 口为 Echor第二功能开启   Trig_H;   delay_ms(1000); } void Init_TimerA() {    TACTL|=TASSEL_2+MC_2+ID_3;//,连续计数SMCLK    TACCTL0 |=CAP+CM_1+CCIS_0+SCS+CCIE;//捕获模式开启,CCI1 } void main () {     WDTCTL=WDTPW+WDTHOLD;//关闭看门狗   Init_clock();   Init_TimerA();   Init_IO();   TACCTL0 |=CAP+CM_1+CCIS_0+SCS+CCIE;//CCI1A   _EINT();   while(1)   {       P1OUT|=BIT0;       delay_ms(10);       P1OUT&=~BIT0;               } }   #pragma vector=TIMERA0_VECTOR   __interrupt void Timer_A(void)   {     switch(TAIV)     {          case 0: if(Edge==RISE)               {                 RiseCapVal = TACCR0;                                                                                                           TACCTL0 |= CAP+CM_2+CCIS_1+SCS+CCIE;//改为下降沿捕获                 Edge = FALL;//下降沿捕获标志               }              else               {                                _DINT();                             Period = TACCR0-RiseCapVal;                 S=(Period*17)/100;                 TACCR0 = 0;                 TACCTL0|= CAP+CM_1+CCIS_1+SCS+CCIE;//改为上升沿捕获                 Edge = RISE;//上升沿捕获标志                   _EINT();               }                  break;            case 10: TA_Over_Cnt++;_EINT();                  break;       }          }