在用CCS编译一段AD采集电压的程序时,总是提示下面的问题是怎么回事呀?怎么解决?求高手帮忙!!!我程序的代码在下面,帮帮忙吧
- #include <msp430f5529.h>
- #include <stdio.h>
- #include "HAL_PMM.h"
- #include "HAL_UCS.h"
- #include "HAL_Board.h"
- #include "HAL_Buttons.h"
- #include "HAL_Cma3000.h"
- #include "HAL_Dogs102x6.h"
- #include "stdlib.h"
- #include "lab1.h"
- /* *所有的全局变量
- *电压采样值和测频是采样到得个数
- */
- uint16_t timeoutCounter;
- uint32_t results[10];
- uint32_t sum=0,com,acom,flag=0;
- uint32_t cap,newdata,olddata,data;
- uint32_t num;
- /*设置时钟源*/
- void int_clk()
- {
- P2DIR |= BIT2; // SMCLK set out to pins
- P2SEL |= BIT2;
- P7DIR |= BIT7; // MCLK set out to pins
- P7SEL |= BIT7;
- P5SEL |= BIT2+BIT3; // Port select XT2
- P5SEL |= BIT2+BIT3; // Port select XT2
- UCSCTL6 &= ~XT2OFF; // Enable XT2
- UCSCTL3 |= SELREF_2; // FLLref = REFO
- // Since LFXT1 is not used,
- // sourcing FLL with LFXT1 can cause
- // XT1OFFG flag to set
- UCSCTL4 |= SELA_2+SELS_5 + SELM_5;
- // Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
- do
- {
- UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
- // Clear XT2,XT1,DCO fault flags
- SFRIFG1 &= ~OFIFG; // Clear fault flags
- }while (SFRIFG1&OFIFG); // Test oscillator fault flag
- UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to
- }
- /*
- *液晶初始化
- *开发板初始化
- */
- void chushi(void)
- {
- uint8_t contrast = *((unsigned char *)contrastSetpointAddress); //读取FLASH中对比度值
- uint8_t brightness = *((unsigned char *)brightnessSetpointAddress); //读取FLASH中背光值
- // Initialize accelerometer offset from flash
- /*Cma3000_setAccel_offset(*((unsigned char *)accelXcalibrationAddress), //初始化加速度偏移量
- *((unsigned char *)accelYcalibrationAddress),
- *((unsigned char *)accelZcalibrationAddress));*/
- // Stop WDT
- WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
- // Basic GPIO initialization
- Board_init(); //初始化GPIO
- // Set Vcore to accomodate for max. allowed system speed
- SetVCore(3); //设VCore为最大
- __enable_interrupt(); //使能全局中断
- // Set up LCD
- Dogs102x6_init(); //初始化LCD
- Dogs102x6_backlightInit(); //背光初始化
- // Contrast not programed in Flash Yet
- if (contrast == 0xFF) //若当前FLASH中无对比度值,则将对比度值设为11(默认)
- // Set Default Contrast
- contrast = 11;
- // Brightness not programed in Flash Yet
- if (brightness == 0xFF) //若当前FLASH中无背光值,则将背光值设为11(默认)
- // Set Default Brightness
- brightness = 11;
- Dogs102x6_setBacklight(brightness); //设置初始背光值
- Dogs102x6_setContrast(contrast); //设置初始对比度值
- Dogs102x6_clearScreen(); //清屏
- // Set up wheel
- Buttons_init(BUTTON_ALL); //初始化按键
- Buttons_interruptEnable(BUTTON_ALL); //使能所有按键中断
- buttonsPressed = 0; //键值清零
- Dogs102x6_stringDraw(1, 0, "**== Message ==** ", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 0, " Welcome to ", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(5, 0, " NCHK University ", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(7, 0, " MSP-EXP430F5529 ", DOGS102x6_DRAW_NORMAL);
- while (!buttonsPressed) //等待按键被按下,或者超时退出等待
- {
- for (timeoutCounter = 0; timeoutCounter < 0x0FFF; timeoutCounter++)
- {
- if (buttonsPressed)
- break;
- __delay_cycles(2000);
- }
- break;
- }
- Dogs102x6_clearScreen();
- Dogs102x6_stringDraw(1, 0, "AC DC Experiment", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(6, 0, "*S1=Enter S2=Esc*", DOGS102x6_DRAW_NORMAL);
- // Board_ledOn(LED_ALL);
- // Wait for button press
- while (!buttonsPressed) //等待按键被按下,或者超时退出等待
- {
- for (timeoutCounter = 0; timeoutCounter < 0x0FFF; timeoutCounter++)
- {
- if (buttonsPressed)
- break;
- __delay_cycles(2000);
- }
- break;
- }
- Board_ledOff(LED_ALL);
- }
- /*ADC12的初始化*/
- void adc1()
- {
- P6SEL |= BIT6;
- ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC;
- ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2;
- ADC12MCTL0=ADC12SREF_0+ADC12INCH_6;
- ADC12CTL0 |= ADC12ENC;
- }
- /*直流电压采样数据转换显示*/
- void display1()
- {
- if(flag==1)
- {
- char string[20];
- string[0]=com/1000+48;
- string[1]=46;
- string[2]=com/100%10+48;
- string[3]=com/10%10+48;
- string[4]=com%10+48;
- string[5]=' ';
- Dogs102x6_stringDraw(1, 0, "*==DC voltage==*", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 0, "value=", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 40, string, DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 70, "(V)", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(7, 0, " *== good job==*", DOGS102x6_DRAW_NORMAL);
- for (timeoutCounter = 0; timeoutCounter < 0x02FF; timeoutCounter++)
- {
- __delay_cycles(1000);
- }
- flag=0;
- }
- }
- /*交流电压采样数据转化显示
- *频率采样显示
- */
- void display2()
- {
- char str1[20],str3[20];
- cap=40000000/num;
- str1[0]=acom/1000+48;
- str1[1]=46;
- str1[2]=acom/100%10+48;
- str1[3]=acom/10%10+48;
- str1[4]=acom%10+48;
- str1[5]=' ';
- str3[0]=cap/10000000+'0';
- str3[1]=cap/1000000%10+'0';
- str3[2]=cap/100000%10+'0';
- str3[3]=cap/10000%10+'0';
- str3[4]=cap/1000%10+'0';
- str3[5]=cap/100%10+'0';
- str3[6]=cap/10%10+'0';
- str3[7]=46;
- str3[8]=cap%10+'0';
- str3[9]=' ';
- Dogs102x6_stringDraw(1, 0, "*==AC voltage==*", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 0, "value=", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 40, str1, DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(3, 75, "(V)", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(5, 1, "F =", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(5, 30, str3, DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(5, 90, "HZ", DOGS102x6_DRAW_NORMAL);
- Dogs102x6_stringDraw(7, 0, " *== good job==*", DOGS102x6_DRAW_NORMAL);
- }
- /*主函数设置*/
- void main()
- {
- int_clk();
- chushi();
- adc1();
- Dogs102x6_clearScreen();
- Board_ledOff(LED_ALL);
- ADC12CTL0 |= ADC12SC;
- _EINT();
- cap=0;
- acom=0;
- com=0;
- P1DIR |= BIT3;
- P2SEL |= BIT0; //TA1.1
- while (1)
- {
- buttonsPressed = 0;
- Dogs102x6_clearScreen();
- while (!(buttonsPressed & BUTTON_S1))
- {
- //ADC12IE = 0x01;
- Board_ledOn(LED4);
- TA1CCTL1=CM_1+SCS+CCIS_0+CAP+CCIE;
- TA1CTL=TASSEL_2+MC_2+TACLR+TAIE;
- display2();
- }
- buttonsPressed = 0;
- Dogs102x6_clearScreen();
- __delay_cycles(2000);
- Board_ledOff(LED_ALL);
- while (!(buttonsPressed & BUTTON_S2))
- {
- ADC12IE = 0x01;
- Board_ledOn(LED6);
- display1();
- }
- Dogs102x6_clearScreen();
- __delay_cycles(2000);
- Board_ledOff(LED_ALL);
- ADC12IE = 0x00;
- ADC12CTL0 &= ~ADC12SC;
- }
- }
- /*ADC12中断函数*/
- #pragma vector=ADC12_VECTOR
- __interrupt void ADC12ISR (void)
- {
- static unsigned int m,count = 0;
- float factor=0.80566;
- results[count]=ADC12MEM0;
- count++;
- for(m=0;m<10;m++)
- {
- sum+=results[m];
- }
- sum/=10;
- sum=sum*factor;
- com=sum;
- if (count == 10)
- {
- count = 0;
- flag=1;
- ADC12IE = 0x00;
- }
- }
- /*TA1的中断函数*/
- #pragma vector=TIMER1_A1_VECTOR
- __interrupt void TIMER1_A1_ISR(void)
- {
- switch(__even_in_range(TA1IV,14))
- {
- case 0: break; // No interrupt
- case 2:
- if(TA1CCTL1&CM0)
- {
- newdata=TA1R;
- if(newdata<olddata)
- {
- data=65536+newdata-olddata;
- }
- else
- {
- data=newdata-olddata;
- }
- olddata=newdata;
- num=data;
- }
- P1OUT ^= BIT3;
- break; // CCR1 not used
- case 4: break; // CCR2 not used
- case 6: break; // reserved
- case 8: break; // reserved
- case 10: break; // reserved
- case 12: break; // reserved
- case 14: break; // overflow
- default: break;
- }
- }
复制代码
此帖出自
小平头技术问答
可是它说是在obj文件里。什么意思呀?
一周热门 更多>