关于CCS编译的问题

2019-03-24 11:39发布

在用CCS编译一段AD采集电压的程序时,总是提示下面的问题是怎么回事呀?怎么解决?求高手帮忙!!!我程序的代码在下面,帮帮忙吧
  1. #include <msp430f5529.h>
  2. #include <stdio.h>
  3. #include "HAL_PMM.h"
  4. #include "HAL_UCS.h"
  5. #include "HAL_Board.h"
  6. #include "HAL_Buttons.h"
  7. #include "HAL_Cma3000.h"
  8. #include "HAL_Dogs102x6.h"
  9. #include "stdlib.h"
  10. #include "lab1.h"

  11. /* *所有的全局变量
  12. *电压采样值和测频是采样到得个数
  13. */
  14. uint16_t timeoutCounter;
  15. uint32_t results[10];
  16. uint32_t sum=0,com,acom,flag=0;
  17. uint32_t cap,newdata,olddata,data;
  18. uint32_t num;

  19. /*设置时钟源*/
  20. void int_clk()
  21. {
  22.            P2DIR |= BIT2;                            // SMCLK set out to pins
  23.            P2SEL |= BIT2;
  24.            P7DIR |= BIT7;                            // MCLK set out to pins
  25.            P7SEL |= BIT7;

  26.            P5SEL |= BIT2+BIT3;                       // Port select XT2
  27. P5SEL |= BIT2+BIT3;                       // Port select XT2

  28.            UCSCTL6 &= ~XT2OFF;                       // Enable XT2
  29.            UCSCTL3 |= SELREF_2;                      // FLLref = REFO
  30.                                                      // Since LFXT1 is not used,
  31.                                                      // sourcing FLL with LFXT1 can cause
  32.                                                      // XT1OFFG flag to set
  33.            UCSCTL4 |= SELA_2+SELS_5 + SELM_5;
  34.            // Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
  35.            do
  36.            {
  37.              UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
  38.                                                      // Clear XT2,XT1,DCO fault flags
  39.              SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  40.            }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

  41.            UCSCTL6 &= ~XT2DRIVE0;                    // Decrease XT2 Drive according to
  42. }

  43. /*
  44. *液晶初始化
  45. *开发板初始化
  46. */
  47. void chushi(void)
  48. {
  49.    uint8_t contrast = *((unsigned char *)contrastSetpointAddress);   //读取FLASH中对比度值
  50.    uint8_t brightness = *((unsigned char *)brightnessSetpointAddress); //读取FLASH中背光值
  51.    // Initialize accelerometer offset from flash
  52.    /*Cma3000_setAccel_offset(*((unsigned char *)accelXcalibrationAddress), //初始化加速度偏移量
  53.                            *((unsigned char *)accelYcalibrationAddress),
  54.                            *((unsigned char *)accelZcalibrationAddress));*/
  55.    // Stop WDT
  56.    WDTCTL = WDTPW + WDTHOLD;                     //关闭看门狗
  57. // Basic GPIO initialization
  58.    Board_init();                                 //初始化GPIO

  59.    // Set Vcore to accomodate for max. allowed system speed
  60.    SetVCore(3);                                  //设VCore为最大
  61.     __enable_interrupt();                        //使能全局中断
  62.    // Set up LCD
  63.    Dogs102x6_init();                            //初始化LCD
  64.    Dogs102x6_backlightInit();                   //背光初始化

  65.    // Contrast not programed in Flash Yet
  66.    if (contrast == 0xFF)                        //若当前FLASH中无对比度值,则将对比度值设为11(默认)
  67.        // Set Default Contrast
  68.        contrast = 11;

  69.    // Brightness not programed in Flash Yet
  70.    if (brightness == 0xFF)                      //若当前FLASH中无背光值,则将背光值设为11(默认)
  71.        // Set Default Brightness
  72.        brightness = 11;

  73.    Dogs102x6_setBacklight(brightness);          //设置初始背光值
  74.    Dogs102x6_setContrast(contrast);             //设置初始对比度值
  75.    Dogs102x6_clearScreen();                     //清屏

  76.    // Set up wheel
  77.    Buttons_init(BUTTON_ALL);                    //初始化按键
  78.    Buttons_interruptEnable(BUTTON_ALL);         //使能所有按键中断
  79.    buttonsPressed = 0;                          //键值清零

  80.    Dogs102x6_stringDraw(1, 0, "**== Message ==** ", DOGS102x6_DRAW_NORMAL);
  81.    Dogs102x6_stringDraw(3, 0, "   Welcome to     ", DOGS102x6_DRAW_NORMAL);
  82.    Dogs102x6_stringDraw(5, 0, " NCHK University    ", DOGS102x6_DRAW_NORMAL);
  83.    Dogs102x6_stringDraw(7, 0, " MSP-EXP430F5529 ", DOGS102x6_DRAW_NORMAL);
  84.    while (!buttonsPressed)                    //等待按键被按下,或者超时退出等待
  85.       {
  86.           for (timeoutCounter = 0; timeoutCounter < 0x0FFF; timeoutCounter++)
  87. {
  88.               if (buttonsPressed)
  89.                   break;
  90.               __delay_cycles(2000);
  91.           }

  92.           break;
  93.       }
  94.    Dogs102x6_clearScreen();
  95.    Dogs102x6_stringDraw(1, 0, "AC DC Experiment", DOGS102x6_DRAW_NORMAL);
  96.    Dogs102x6_stringDraw(6, 0, "*S1=Enter S2=Esc*", DOGS102x6_DRAW_NORMAL);
  97.   // Board_ledOn(LED_ALL);

  98.    // Wait for button press
  99.    while (!buttonsPressed)                    //等待按键被按下,或者超时退出等待
  100.    {
  101.        for (timeoutCounter = 0; timeoutCounter < 0x0FFF; timeoutCounter++)
  102.        {
  103.            if (buttonsPressed)
  104.                break;
  105.            __delay_cycles(2000);
  106.        }
  107.        break;
  108.    }
  109.    Board_ledOff(LED_ALL);
  110. }

  111. /*ADC12的初始化*/
  112. void adc1()
  113. {
  114.                  P6SEL |= BIT6;
  115.                  ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC;
  116.                  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2;
  117.                  ADC12MCTL0=ADC12SREF_0+ADC12INCH_6;

  118.                  ADC12CTL0 |= ADC12ENC;
  119. }

  120. /*直流电压采样数据转换显示*/
  121. void display1()
  122. {
  123.          if(flag==1)
  124.             {
  125.                        char string[20];
  126.                        string[0]=com/1000+48;
  127.                        string[1]=46;
  128.                        string[2]=com/100%10+48;
  129.                        string[3]=com/10%10+48;
  130.                        string[4]=com%10+48;
  131.                        string[5]='';

  132. Dogs102x6_stringDraw(1, 0, "*==DC voltage==*", DOGS102x6_DRAW_NORMAL);
  133. Dogs102x6_stringDraw(3, 0, "value=", DOGS102x6_DRAW_NORMAL);
  134. Dogs102x6_stringDraw(3, 40, string, DOGS102x6_DRAW_NORMAL);
  135. Dogs102x6_stringDraw(3, 70, "(V)", DOGS102x6_DRAW_NORMAL);
  136. Dogs102x6_stringDraw(7, 0, " *== good job==*", DOGS102x6_DRAW_NORMAL);

  137.                         for (timeoutCounter = 0; timeoutCounter < 0x02FF; timeoutCounter++)
  138.                                   {
  139.                                       __delay_cycles(1000);
  140. }
  141.                              flag=0;
  142.            }
  143. }


  144. /*交流电压采样数据转化显示
  145. *频率采样显示
  146. */
  147. void display2()
  148. {
  149.                        char str1[20],str3[20];

  150.                        cap=40000000/num;

  151.                        str1[0]=acom/1000+48;
  152.                        str1[1]=46;
  153.                        str1[2]=acom/100%10+48;
  154.                        str1[3]=acom/10%10+48;
  155.                        str1[4]=acom%10+48;
  156.                        str1[5]='';


  157.                               str3[0]=cap/10000000+'0';
  158.                               str3[1]=cap/1000000%10+'0';
  159.                               str3[2]=cap/100000%10+'0';
  160.                               str3[3]=cap/10000%10+'0';
  161.                               str3[4]=cap/1000%10+'0';
  162.                               str3[5]=cap/100%10+'0';
  163.                               str3[6]=cap/10%10+'0';
  164.                               str3[7]=46;
  165.                               str3[8]=cap%10+'0';
  166.                               str3[9]='';

  167.         Dogs102x6_stringDraw(1, 0, "*==AC voltage==*", DOGS102x6_DRAW_NORMAL);
  168.         Dogs102x6_stringDraw(3, 0, "value=", DOGS102x6_DRAW_NORMAL);
  169.             Dogs102x6_stringDraw(3, 40, str1, DOGS102x6_DRAW_NORMAL);
  170.             Dogs102x6_stringDraw(3, 75, "(V)", DOGS102x6_DRAW_NORMAL);
  171.             Dogs102x6_stringDraw(5, 1, "F =", DOGS102x6_DRAW_NORMAL);
  172.             Dogs102x6_stringDraw(5, 30, str3, DOGS102x6_DRAW_NORMAL);
  173.             Dogs102x6_stringDraw(5, 90, "HZ", DOGS102x6_DRAW_NORMAL);
  174.         Dogs102x6_stringDraw(7, 0, " *== good job==*", DOGS102x6_DRAW_NORMAL);

  175. }
  176. /*主函数设置*/
  177. void main()
  178. {
  179.         int_clk();
  180.         chushi();
  181.         adc1();

  182.         Dogs102x6_clearScreen();
  183.         Board_ledOff(LED_ALL);
  184.         ADC12CTL0 |= ADC12SC;
  185.         _EINT();

  186.         cap=0;
  187.         acom=0;
  188.         com=0;
  189. P1DIR |= BIT3;
  190.         P2SEL |= BIT0;           //TA1.1
  191.     while (1)
  192.      {
  193.             buttonsPressed = 0;
  194.             Dogs102x6_clearScreen();
  195.              while (!(buttonsPressed & BUTTON_S1))
  196.             {
  197.                     //ADC12IE = 0x01;
  198.                  Board_ledOn(LED4);

  199.                  TA1CCTL1=CM_1+SCS+CCIS_0+CAP+CCIE;
  200.                  TA1CTL=TASSEL_2+MC_2+TACLR+TAIE;

  201.                  display2();
  202.             }
  203.              buttonsPressed = 0;
  204.              Dogs102x6_clearScreen();
  205.              __delay_cycles(2000);
  206.              Board_ledOff(LED_ALL);


  207.              while (!(buttonsPressed & BUTTON_S2))
  208.              {
  209.                 ADC12IE = 0x01;
  210.                 Board_ledOn(LED6);
  211.                 display1();
  212.              }
  213.              Dogs102x6_clearScreen();
  214.              __delay_cycles(2000);
  215.              Board_ledOff(LED_ALL);
  216.              ADC12IE = 0x00;
  217.              ADC12CTL0 &= ~ADC12SC;
  218.    }
  219. }

  220. /*ADC12中断函数*/
  221. #pragma vector=ADC12_VECTOR
  222. __interrupt void ADC12ISR (void)
  223. {
  224.   static unsigned int m,count = 0;
  225.   float factor=0.80566;
  226.   results[count]=ADC12MEM0;
  227.   count++;
  228.   for(m=0;m<10;m++)
  229.   {
  230.           sum+=results[m];
  231.   }
  232.   sum/=10;
  233.   sum=sum*factor;
  234.   com=sum;
  235.   if (count == 10)
  236.         {
  237.           count = 0;
  238.           flag=1;
  239.           ADC12IE = 0x00;
  240.         }
  241. }

  242. /*TA1的中断函数*/
  243. #pragma vector=TIMER1_A1_VECTOR
  244. __interrupt void TIMER1_A1_ISR(void)
  245. {
  246.   switch(__even_in_range(TA1IV,14))
  247.   {
  248. case  0: break;                          // No interrupt
  249.   case  2:
  250.              if(TA1CCTL1&CM0)
  251.          {
  252.                newdata=TA1R;
  253.                if(newdata<olddata)
  254.                {
  255.                        data=65536+newdata-olddata;
  256.                }
  257.                else
  258.                {
  259.                        data=newdata-olddata;
  260.                }
  261.                olddata=newdata;
  262.                num=data;
  263.          }
  264.                P1OUT ^= BIT3;
  265.                break;                                      // CCR1 not used
  266.     case  4: break;                                    // CCR2 not used
  267.     case  6: break;           // reserved
  268.     case  8: break;           // reserved
  269.     case 10: break;           // reserved
  270.     case 12: break;           // reserved
  271.     case 14: break;           // overflow
  272.     default: break;
  273.   }
  274. }
复制代码


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
dontium
2019-03-25 02:00
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章