msp430定时器中断的问题
voidmain(void){WDTCTL=WDTPW+WDTHOLD;//StopWDTP1DIR|=0x01;//P1.0outputTBCCTL0=CCIE;//C...
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
TBCCTL0 = CCIE; // CCR0 interrupt enabled
TBCCR0 = 50000;
TBCTL = TBSSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Timer B0 interrupt service routine
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
P1OUT ^= 0x01; // Toggle P1.0
TBCCR0 += 50000; // Add Offset to CCR0
}
--------------------------------------------
请问一下各位大神,这个例子是连续模式的定时器B,这里每次TAR运行到TBCCR0后,都会产生中断,那么TAR溢出是不是也有中断的?这个中断怎么表示?TIMERB1? 展开
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
TBCCTL0 = CCIE; // CCR0 interrupt enabled
TBCCR0 = 50000;
TBCTL = TBSSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Timer B0 interrupt service routine
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
P1OUT ^= 0x01; // Toggle P1.0
TBCCR0 += 50000; // Add Offset to CCR0
}
--------------------------------------------
请问一下各位大神,这个例子是连续模式的定时器B,这里每次TAR运行到TBCCR0后,都会产生中断,那么TAR溢出是不是也有中断的?这个中断怎么表示?TIMERB1? 展开
1个回答
展开全部
你说的对的,这个是有溢出中断,但你的初始化程序要稍微调整下:
TBCTL = TBSSEL_2 + MC_2+TBIE;;
打开溢出中断,默认值是0;
然后再写段中断程序,例如:
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B_1(void)
{
switch( TBIV )
{
case 2: break;
case 4: break;
case 14: P1OUT ^= 0x01;
break;
}
这个时候就能同时进入两个中断程序了。
TBCTL = TBSSEL_2 + MC_2+TBIE;;
打开溢出中断,默认值是0;
然后再写段中断程序,例如:
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B_1(void)
{
switch( TBIV )
{
case 2: break;
case 4: break;
case 14: P1OUT ^= 0x01;
break;
}
这个时候就能同时进入两个中断程序了。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询