请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 工具/软件:Code Composer Studio
我正在尝试在 重复通道序列(重复自动扫描)模式下测试 ADC14。 使用 MSP432代码示例作为参考、我编写了一些代码来扫描 ADC14通道 A6-A9、切换某些 GPIO 引脚作为通道输入。 当调试模式中使用指令单步进入/单步执行时、代码运行良好。 但是、当代码在自由运行模式下运行时(在调试模式下使用"恢复"按钮)暂停时、代码会在汇编语言文件("fd_div_t2.asm")中暂停。 根据其说明、汇编文件用于将2个 IEEE 格式的双精度浮点数相乘。 此外、调试模式左上角的调试窗口具有以下状态:" fd_div_t2.asm:179 0x00000F14 (__aeabi_ddiv 不包含帧信息)"。
ADC14代码:
#define Results (8) 静态 uint8_t 索引; 易失性浮点 VoltC0[Results]={0}; 易失性浮点 VoltC1[Results]={0}; 易失性浮点 VoltC3[Results]={0}; 易失性浮点 VoltC4[Results]={0}; 空 ADC_pin (void) { volatile uint8_t i = 0; //配置 GPIO P3DIR = BIT2 | BIT7; //输出引脚 P6DIR = BIT0 | BIT7; //启用全局中断 __ENABLE_IRQ(); //在 NVIC 模块中启用 ADC 中断 NVIC->ISER[0]= 1 <<(ADC14_IRQn)& 31); ADC14->CTL0 = ADC14_CTL0_MSC| ADC14_CTL0_SHT0__192| ADC14_CTL0_ssel_MCLK | ADC14_CTL0_SHP | ADC14_CTL0_CONSEQ_3 | ADC14_CTL0_ON; ADC14->CTL1 |= ADC14_CTL1_RES_14BIT |(ADC14_CTL1_CSTARTADD_MASK & 6 << 16);//14位分辨率、通道 A6启动 ADC14->MCTL[6]= ADC14_MCTLN_INCH_6;//V (R+)= AVcc、CHANNEL = A0 ADC14->MCTL[7]= ADC14_MCTLN_INCH_7;//通道= A1 ADC14->MCTL[8]= ADC14_MCTLN_INCH_8;//通道= A3 ADC14->MCTL[9]= ADC14_MCTLN_INCH_9 | ADC14_MCTLN_EOS;//通道= A4 ADC14->IER0 = ADC14_IER0_IE9; while (1) { P3OUT ^= BIT2 | BIT4; //切换 P6OUT ^= BIT0 | BIT7; //切换 //启动转换软件触发 ADC14->CTL0 |= ADC14_CTL0_ENC | ADC14_CTL0_SC; _SLEEP(); __no_operation(); } } //ADC14中断服务例程 void ADC14_IRQHandler (void) { if (ADC14->IFGR0和 ADC14_IFGR0_IFG9) { VoltC0[索引]= ADC14->MEM[6]; VoltC0[索引]=(VoltC0[索引]* 3.0)/16384; Voltc1[索引]= ADC14->MEM[7]; Voltc1[索引]=(Voltc1[索引]* 3.0)/16384; VoltC3[索引]= ADC14->MEM[8]; VoltC3[索引]=(VoltC3[索引]* 3.0)/16384; Voltc4[索引]= ADC14->MEM[9]; Voltc4[索引]=(Voltc4[索引]* 3.0)/16384; 索引=(索引+ 1)& 0x7; __no_operation(); } }
有人能不能指出出错了吗? 上述代码是否会导致其进入汇编文件中?