以下是程序,软件用的IAR:
#include "io430.h" #include "dandao_duocai.h" #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 dataout P2OUT unsigned int ADC10_Result[100]; int d,c;
void cheek_clock() { BCSCTL3_bit.LFXT1S0 = 0; //配置ACLK为12KHz BCSCTL3_bit.LFXT1S1 = 1;
if(CALBC1_1MHZ==0xFF||CALDCO_1MHZ==0xFF) //配置MCLK为1MHz while(1); //校准数据是否被擦除,若是则CPU挂起。 BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ; }
///////----------采集一串数,并取出最大值
void zzzz() { //unsigned int ADC10_Result[100]; int i,j; P1SEL|=BIT1;//P1.1第二功能
ADC10CTL1 |= CONSEQ_2; //单通道重复采样模式 ADC10CTL0 |= SREF_1+REFON+REF2_5V;//选择内部参考源2.5V,打开基准源
ADC10CTL0 |= ADC10SHT_3+MSC; //过采样率设置为64个采样周期,打开AD转换 ADC10CTL1|= ADC10SSEL_1+ADC10DIV_1+SHS_0; //ACLK2分频为采样时钟,用ADC10SC触发采集 ADC10CTL1 |=INCH_1; //选择通道A1
ADC10CTL0 |= ADC10ON; //开启ADC10 ADC10AE0 |= 0x02; //开启外部通道A1
ADC10CTL0&=~ADC10IFG;//清中断标志 for(int k=0;k<100;k++) { ADC10CTL0 |=ENC+ADC10SC; //开始转换 while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG标志变高(转换完成) ADC10_Result[k]=ADC10MEM; //读取采样结果 delay_ms(2); P1SEL&=~BIT1;//关P1.1第二功能。
} ////////--------取ADC10_Result[100] 中的最大数赋值给C for(i=0;i<100;i++) { for(j = i + 1;j<100;j++) if(ADC10_Result[i]<=ADC10_Result[j]) { d=ADC10_Result[i];ADC10_Result[i]=ADC10_Result[j];ADC10_Result[j]=d; } } c=ADC10_Result[99]; /////////--------取ADC10_Result[100] 中的最大数赋值给C }
///////----------采集一串数,并取出最大值
void beishu() {
if(c dataout=0x00; if((c>=45)&&(c dataout=0x01; if((c>=53)&&(c<613)) dataout=0x10; else dataout=0x11; }
int main(void) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; cheek_clock(); P2DIR|=(BIT0+BIT1+BIT2); while(1) { zzzz(); /// ----调用 beishu(); dataout&=~BIT3;/////p1.3外接另一个芯片的使能端。低电平有效, }
问题是:Error[Pe147]: declaration is incompatible with "unsigned char ADC10_Result[100]" (declared at line 6 of "D:workspace_v5_1lianxicaiji_fangdadandao_duocai.h") D:workspace_v5_1lianxicaiji_fangdamain.c 7
补充:当我将unsigned int ADC10_Result[100];设置为局部变量时(也就是zzzz()子程序中的屏蔽部分)就不会有错。或者我把这个数组定义为unsigned char 类型且作为全局变量也可以,但是unsigned char 是8位的,而转换结果是10位,软件没报错。
上一篇:2.0 MSP430的IO配置
下一篇:MSP430--UART模块
推荐阅读最新更新时间:2024-11-17 10:38
设计资源 培训 开发板 精华推荐
- 采用单端 15V 输入电源的 LTC3265EFE 低功率 ±20V 电源的典型应用电路
- OP482ACBZ-R7 低功耗、高速 JFET 运算放大器的典型应用电路
- 使用 Analog Devices 的 ADR03AKSZ 的参考设计
- PCF2129AT TCXO 接口活动应用的计时、CLKOUT、时间戳
- FSA9280A 具有自动选择和附件检测功能的 USB 端口多媒体开关的典型应用
- 使用 NXP Semiconductors 的 TDA1566 的参考设计
- 使用 LTC3637HDHC 36.5V 至 76V 输入至 36V 输出、1A 降压型稳压器的典型应用
- 按键&LED模块
- NCV8871BSTGEVB:可调输出非同步升压控制器评估板
- TWR-S08RN60-KIT,S9S08RN60 8 位汽车塔式模块 MCU 的开发板