中断处理函数TIM6_IRQHandler(void)问题, 如果在中断处理函数中不加 if(TIM6->SR&0X0001)判断,将连续进入两次中断,
TIM6->SR不是只有一个中断标志吗?
void BasicTimer6_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<4;//TIM6时钟使能
TIM6->ARR=arr; //设定计数器自动重装值
TIM6-> SC=psc; //预分频器7200,得到10Khz的计数时钟
TIM6->DIER|=1<<0; //允许更新中断
TIM6->CR1|=0x01; //使能定时器6
MY_NVIC_Init(2,3,TIM6_IRQChannel,2);//抢占1,子优先级3,组2
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
// uart_init(72,9600); //串口初始化为9600
delay_init(72); //延时初始化
BasicTimer6_Init(100,7199);//10K计数频率
while(1)
{
}
}
void TIM6_IRQHandler(void)
{
if(TIM6->SR&0X0001)//溢出中断 如果不加这句要连续进中断两次
{
_Gu32_jiffies++;
LED1=!LED1;
}
TIM6->SR=0;//清除中断标志位
} |