stm8 的TIM2的中断的问题
我想问一下为什么如果在中断中不清除标志位,小灯还是在闪烁,,不应该不再进入中断了么(闪烁的频率和有清除中断标志位时不一样)/***********************...
我想问一下为什么如果在中断中不清除标志位,小灯还是在闪烁,,不应该不再进入中断了么(闪烁的频率和有清除中断标志位时不一样)
/********************************************
文件:tim2.c
描述:tim2中断法实现小灯闪烁
功能:tim2实现精确延时
********************************************/
#include "stm8s.h"
void GPIO_Configuration();
void TIM2_Configuration();
u16 i;
/*************************************************
描述:主函数
参数:无
返回值:无
***************************************************/
void main()
{
GPIO_Configuration();
TIM2_Configuration();
while(1)
{
}
}
/*************************************************
描述:端口B进行配置
参数:无
返回值:无
***************************************************/
void GPIO_Configuration()
{
GPIO_DeInit(GPIOB);//恢复端口B到默认值
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);//小灯 PB0 高速推挽输出
}
void TIM2_Configuration()
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2 , 1000);//配置tim2时钟 计数1000产生一个1ms的更新
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);//开TIM2 中断
TIM2_Cmd(ENABLE);//打开TIM2
enableInterrupts();//开总中断
}
#pragma vector=15
__interrupt void TIMER2_IRQHander(void)
{
i++;
if(i==1000)
{
GPIO_WriteReverse(GPIOB, GPIO_PIN_0);
i=0;
}
//TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
} 展开
/********************************************
文件:tim2.c
描述:tim2中断法实现小灯闪烁
功能:tim2实现精确延时
********************************************/
#include "stm8s.h"
void GPIO_Configuration();
void TIM2_Configuration();
u16 i;
/*************************************************
描述:主函数
参数:无
返回值:无
***************************************************/
void main()
{
GPIO_Configuration();
TIM2_Configuration();
while(1)
{
}
}
/*************************************************
描述:端口B进行配置
参数:无
返回值:无
***************************************************/
void GPIO_Configuration()
{
GPIO_DeInit(GPIOB);//恢复端口B到默认值
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);//小灯 PB0 高速推挽输出
}
void TIM2_Configuration()
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_2 , 1000);//配置tim2时钟 计数1000产生一个1ms的更新
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);//开TIM2 中断
TIM2_Cmd(ENABLE);//打开TIM2
enableInterrupts();//开总中断
}
#pragma vector=15
__interrupt void TIMER2_IRQHander(void)
{
i++;
if(i==1000)
{
GPIO_WriteReverse(GPIOB, GPIO_PIN_0);
i=0;
}
//TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询