工具/软件:Code Composer Studio
您好,
我正在编写一个C代码,它混合了3个TI示例:timer_a_ex1_pwmSIngle (driverlib示例),timer_b_ex2_overflowISR和ADC。 我想使用定时器b来触发ADC读数,使用定时器A来触发PWM。 PWM功能工作正常,但计时器b不工作。 我想这是我如何声明中断向量的问题。 有人能帮你吗? 我将在下面发布我的中断代码。
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector = ADC12_vector
#pragma vector=TIMERB1_Vector
__中断
__attribute__(中断(TIMERB1_Vector))
__interrupt void ADC12_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (ADC12_vector))) ADC12_ISR (void)
#否则
错误编译器不受支持!
#endif
{
开关(__偶 数_IN_RANGE (ADC12IV,ADC12IV_ADC12RDYIFG))
{
CASE ADC12IV_NONE:Break;// Vector 0:NO INTERRUPT
CASE ADC12IV_ADC12OVIFG:中断;//矢量2:ADC12MEMx溢出
CASE ADC12IV_ADC12TOVIFG:中断;//矢量4:转换时间溢出
CASE ADC12IV_ADC12HIIFG:Break;// Vector 6:ADC12BHI
CASE ADC12IV_ADC12LOIFG:中断;//矢量8:ADC12BLO
CASE ADC12IV_ADC12INIFG:中断;//矢量10:ADC12BIN
CASE ADC12IV_ADC12IFG0://矢量12:ADC12MEM0中断
如果(ADC12MEM0 >= 0x6B4)// ADC12MEM = A1 > 0.5V?
P1OUT |= BIT0;// WFP 1.0 = 1.
否则
P1OUT &=~BIT0;// WFP 1.0 = 0
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits);//退出活动CPU
断开;//从0 (SR)清除CPUOFF位
CASE ADC12IV_ADC12IFG1:Break;// Vector 14:ADC12MEM1
CASE ADC12IV_ADC12IFG2:中断;//矢量16:ADC12MEM2
CASE ADC12IV_ADC12IFG3:中断;//矢量18:ADC12MEM3
CASE ADC12IV_ADC12IFG4:中断;//矢量20:ADC12MEM4
CASE ADC12IV_ADC12IFG5:中断;//矢量22:ADC12MEM5
CASE ADC12IV_ADC12IFG6:Break;// Vector 24:ADC12MEM6
CASE ADC12IV_ADC12IFG7:中断;//矢量26:ADC12MEM7
CASE ADC12IV_ADC12IFG8:中断;//矢量28:ADC12MEM8
CASE ADC12IV_ADC12IFG9:中断;//矢量30:ADC12MEM9
CASE ADC12IV_ADC12IFG10:中断;//矢量32:ADC12MEM10
CASE ADC12IV_ADC12IFG11:中断;//矢量34:ADC12MEM11
CASE ADC12IV_ADC12IFG12:中断;//矢量36:ADC12MEM12
CASE ADC12IV_ADC12IFG13:Break;// Vector 38:ADC12MEM13
CASE ADC12IV_ADC12IFG14:Break;// Vector 40:ADC12MEM14
CASE ADC12IV_ADC12IFG15:Break;// Vector 42:ADC12MEM15
CASE ADC12IV_ADC12IFG16:中断;//矢量44:ADC12MEM16
CASE ADC12IV_ADC12IFG17:Break;// Vector 46:ADC12MEM17
CASE ADC12IV_ADC12IFG18:中断;//矢量48:ADC12MEM18
CASE ADC12IV_ADC12IFG19:中断;//矢量50:ADC12MEM19
CASE ADC12IV_ADC12IFG20:中断;//矢量52:ADC12MEM20
CASE ADC12IV_ADC12IFG21:中断;//矢量54:ADC12MEM21
CASE ADC12IV_ADC12IFG22:中断;//矢量56:ADC12MEM22
CASE ADC12IV_ADC12IFG23:Break;// Vector 58:ADC12MEM23
Case ADC12IV_ADC12IFG24:Break;// Vector 60:ADC12MEM24
CASE ADC12IV_ADC12IFG25:中断;//矢量62:ADC12MEM25
CASE ADC12IV_ADC12IFG26:Break;// Vector 64:ADC12MEM26
CASE ADC12IV_ADC12IFG27:Break;// Vector 66:ADC12MEM27
CASE ADC12IV_ADC12IFG28:Break;// Vector 68:ADC12MEM28
CASE ADC12IV_ADC12IFG29:Break;// Vector 70:ADC12MEM29
CASE ADC12IV_ADC12IFG30:中断;//矢量72:ADC12MEM30
CASE ADC12IV_ADC12IFG31:中断;//矢量74:ADC12MEM31
CASE ADC12IV_ADC12RDYIFG:中断;//矢量76:ADC12RDY
默认值:中断;
}
}
作废TIMERB1_ISR(void)
{
/*对TBIV寄存器的任何访问(读或写)都会自动重置
最高的"待定"中断标志。 */
SWITCH(__EIV_IN_RANGE(TBIV,14))
{
案例0:中断;//不中断
案例2:中断;// CCR1未使用
案例4:中断;// CCR2未使用
案例6:中断;// CCR3未使用
案例8:中断;// CCR4未使用
案例10:中断;// CCR5未使用
案例12:中断;// CCR6未使用
判例14://溢出
ADC12CTL0 || ADC12ENC | ADC12SC;
//切换WFP 1.0
gPIO_ToggleOutputOnPin(.
GPIO端口P1,
GPIO _PIN7
);
中断;
默认值:中断;
}
}