请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP432P401R 我在WFP 5.4 上写了一个程序,用计时器来测量模拟值。 代码工作正常。 当我删除while循环并在CCS v7中运行代码时,代码在一轮引发中断和测量后退出。 但在调试模式下,当我将中断点保留在中断内时,程序在第一次中断后进入退出例程。 但如果我继续提供恢复,则计时器模块和ADC都可以正常工作。
根据规则,如果主功能中没有锁定回路,程序必须终止。 为什么在 调试模式下通过退出例程后仍会调用中断。
#include "msp.h" #include<stdio.h> int main(void){ 易失性无符号int I; __enable_IRQ(); NVIC->ISER[0]=1<<(T32_INT1_IRQn)和31); WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; //停止WDT // GPIO设置 P1->out &=~BIT0; //清除LED以启动 P1->DIR || BIT0; //将WFP 1.0 设置为OUTPUT (输出) p5->SEL1 || BIT4; //为ADC配置WFP 5.4 p5->SEL0 |= BIT4; //TIMER32_1->CONTROL = BIT6 | BIT5| BIT1; TIMER32_1->CONTROL = TIMER32_CONTROL_SIZE | TIMER32_CONTROL_MODE; TIMER32_1->load= 0x0026CDC0; ADC14->CTL0 = ADC14_CTL0_ON | ADC14_CTL0_MSC | ADC14_CTL0_SHT0__16| ADC14_CTL0_SHP | ADC14_CTL0_CONSEQ_1; ADC14->CTL1 = ADC14_CTL1_RES_2; ADC14->CTL0 |= 0x8万 |0x10万; //从ISR退出时禁用睡眠 SCB->SCR &=~SCB_SCR_SLEEPONEXIT_MSK; //SCB->SCR |= SCB_SCR_SLEEPONEXIT_MSK; TIMER32_1->CONTROL |= TIMER32_CONTROL_ENABLE | TIMER32_CONTROL_IE; ADC14->MCTL[0]= ADC14_MCTLN_Inch_1; ADC14->CTL0 || ADC14_CTL0_ENC | ADC14_CTL0_SC; scb->scr |= BIT2; // while (1){/////{} void T32_INT1_IRQHandler(void){ TIMER32_1->INTCLR |= BIT0; //清除Timer32中断标志 如果(ADC14->MEM[0]>= 0x7FF){ // ADC12MEM0 = A1 > 0.5AVcc? printf ("更少\n"); P1->OUT |= BIT0; // WFP 1.0 =1 } 否则{ P1->out &=~BIT0; printf("more \n"); } // p1->输出^= BIT0; }