请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5857 主题中讨论的其他器件:MSPWARE
工具/软件:Code Composer Studio
/*-版权所有-、BSD_EX *版权所有(c) 2012、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 * *** * * MSP430代码示例免责声明 * * MSP430代码示例是自包含的低级程序 ,通常*以 高度*简明的方式演示单个外设功能或器件功能。 为此、代码可能依赖于器件的加电默认 值*寄存器值和时钟配置等设置、 并且在组合多个示例中的代码时必须*小心以避免潜在的副作用 *。 另请参阅 www.ti.com/grace 了解 GUI、并参阅 www.ti.com/msp430ware *了解外设配置的 API 函数库方法。 * *--/版权--* //********* // MSP430FR59xx 演示- ADC12,样本 A1,AVcc 参考,如果 A1 > 0.5*AVcc,则设置 P1.0 // 说明:在 A1上以 AVcc 为基准进行单个样本。 //软件设置 ADC12SC 来启动采样和转换- ADC12SC //在 EOC 上自动清除。 ADC12内部振荡器乘以采样(16x) //和转换。 在主循环中、MSP430在 LPM0中等待节能、直到 ADC12 //转换完成、ADC12_ISR 将在主循环中强制从 LPM0中退出// 恢复。 如果 A1 > 0.5*AVcc,P1.0置位,否则复位。 还显示了对//和 ADC12中断的完全正确的处理。 // // //////// MSP430FR5969 // -------- // /|\| XIN|- // || | // -|RST XOUT|- // | | // --|P1.1/A1 P1.0|->LED //// T.Witt/P. Thanigai //德州仪器公司 // 2013年11月 //使用 IAR 嵌入式工作平台 V5.60和 Code Composer Studio v5.5构建 //********* #include int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止 WDT // GPIO 设置 P2OUT &=~BIT2; //清除 LED 以启动 P2DIR |= BIT2; //将 P1.0/LED 设置为输出 P3OUT &=~BIT7; //清除 LED 以启动 P3DIR |= BIT7; P1SEL1 = BIT0|BIT1; //为 ADC P1SEL0 = BIT0|BIT1配置 P1.1; //禁用 GPIO 上电默认高阻抗模式以激活 //先前配置的端口设置 PM5CTL0 &=~LOCKLPM5; //配置 ADC12 ADC12CTL0 = ADC12SHT0_2 | ADC12MSC ADC12ON| ADC12MSC; //采样时间、S&H=16、ADC12CTL1上的 ADC12 = ADC12SHP| ADC12CONSEQ_3; //使用采样计时器 ADC12CTL2 |= ADC12RES_2; // 12位转换结果 ADC12MCTL0 |= ADC12INCH_0; // A1 ADC 输入选择;Vref=AVCC ADC12MCTL1 = ADC12INCH_1|ADC12EOS; // A1 ADC 输入选择;Vref=AVCC ADC12IER0 = ADC12IE0| ADC12IE1; //启用 ADC 转换完成中断 ADC12CTL0 |= ADC12ENC | ADC12SC; //在 (1) 时开始采样/转换{ //__delay_cycles (5000); ADC12CTL0 |= ADC12ENC | ADC12SC; //开始采样/转换 _bis_SR_register (LPM0_bits | GIE); // LPM0、ADC12_ISR 将强制退出 __no_operation(); //对于调试器*/ } #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__) #pragma vector = ADC12_vector __interrupt void ADC12_ISR (void) #elif defined (__GNU__) void COMPILE_attribute__(interrupt (interrupt (interrupt (ADC12_ISR))#vector (void )#ADC12_error! #endif { switch (__even_in_range (ADC12IV、ADC12IV_ADC12RDYIFG)) } ADC12IV_NONE 案例: 中断; //向量0:无中断 案例 ADC12IV_ADC12OVIFG:中断; //向量2:ADC12MEMx 溢出 ADC12IV_ADC12TOVIFG 案例:中断; //向量4:转换时间溢出 案例 ADC12IV_ADC12HIIFG:break; //向量6:ADC12BHI ADC12IV_ADC12LOIFG 案例:中断; //向量8:ADC12BLO ADC12IV_ADC12INIFG 案例:中断; //向量10:ADC12BIN ADC12IV_ADC12IFG0案例: //向量12:ADC12MEM0中断 IF (ADC12MEM0 >= 0x7ff) // ADC12MEM0 = A1 > 0.5AVcc? P2OUT |= BIT2; // P1.0 = 1 其他 P2OUT &=~BIT2; // P1.0 = 0 _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU 中断; //将 CPUOFF 位从0 (SR)清零 ADC12IV_ADC12IFG1案例: //向量14:ADC12MEM1 IF (ADC12MEM1 >= 0x7ff) // ADC12MEM0 = A1 > 0.5AVcc? P3OUT |= BIT7; // P1.0 = 1 其他 P3OUT &=~BIT7; // P1.0 = 0 _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU 中断; ADC12IV_ADC12IFG2案例:中断; //向量16:ADC12MEM2 ADC12IV_ADC12IFG3案例:中断; //向量18:ADC12MEM3 ADC12IV_ADC12IFG4案例:中断; //向量20:ADC12MEM4 ADC12IV_ADC12IFG5案例:中断; //向量22:ADC12MEM5 ADC12IV_ADC12IFG6案例:中断; //向量24:ADC12MEM6 ADC12IV_ADC12IFG7案例:中断; //向量26:ADC12MEM7 ADC12IV_ADC12IFG8案例:中断; //向量28:ADC12MEM8 ADC12IV_ADC12IFG9案例:中断; //向量30:ADC12MEM9 ADC12IV_ADC12IFG10案例:中断; //向量32:ADC12MEM10 ADC12IV_ADC12IFG11案例:中断; //向量34:ADC12MEM11 ADC12IV_ADC12IFG12案例:中断; //向量36:ADC12MEM12 ADC12IV_ADC12IFG13案例:中断; //向量38:ADC12MEM13 ADC12IV_ADC12IFG14案例:中断; //向量40:ADC12MEM14 ADC12IV_ADC12IFG15案例:中断; //向量42:ADC12MEM15 ADC12IV_ADC12IFG16案例:中断; //向量44:ADC12MEM16 ADC12IV_ADC12IFG17案例:中断; //向量46:ADC12MEM17 ADC12IV_ADC12IFG18案例:中断; //向量48:ADC12MEM18 ADC12IV_ADC12IFG19案例:中断; //向量50:ADC12MEM19 ADC12IV_ADC12IFG20案例:中断; //向量52:ADC12MEMM20 ADC12IV_ADC12IFG21案例:中断; //向量54:ADC12MEM21 ADC12IV_ADC12IFG22案例:中断; //向量56:ADC12MEM22 ADC12IV_ADC12IFG23案例:中断; //向量58:ADC12MEM3 ADC12IV_ADC12IFG24案例:中断; //向量60:ADC12MEM24 ADC12IV_ADC12IFG25案例:中断; //向量62:ADC12MEM25 ADC12IV_ADC12IFG26案例:中断; //向量64:ADC12MEM26 ADC12IV_ADC12IFG27案例:中断; //向量66:ADC12MEM27 ADC12IV_ADC12IFG28案例:中断; //向量68:ADC12MEM28 ADC12IV_ADC12IFG29案例:中断; //向量70:ADC12MEM29 ADC12IV_ADC12IFG30案例:中断; //向量72:ADC12MEM30 ADC12IV_ADC12IFG31案例:中断; //向量74:ADC12MEM31 案例 ADC12IV_ADC12RDYIFG:break; //向量76:ADC12RDY 默认值:中断; } }
上面给出的是我根据 MSPWare 中给出的示例编辑的代码。 我尝试了自动扫描模式(通道序列)、它工作正常、但重复自动扫描(重复通道序列) 代码错误不工作。 帮助我解决我的问题。