各位大侠,请帮忙解决这个问题,用通用定时器输出比较模式,在中断中取反LED灯,可是为什么只是一直在亮,却不闪烁
,请大家帮忙看看
//定时器3中断服务程序
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0002)
{
TIM3->SR&=~(1<<1);
LED1=~LED1;
LED0=~LED0;
TIM3->CNT=0;
}
}
//在输出比较模式下,
//预装载寄存器的内容被复制到影子寄存器中,
//然后影子寄存器的内容和计数器进行比较。
void Timerx_Init()
{
RCC->APB1ENR|=0x02; //开启时钟
TIM3->ARR=0xffff; //设定计数器自动重装值
TIM3-> SC=7199; //预分频器7200,得到10Khz的计数时钟,//CK_CNT=Fck_psc/([15:0]+1)
TIM3->CR1&=0<<4; //计数器向上计数
TIM3->CR1|=1<<7; // 使能自动载缓冲器
TIM3->CCMR1|=0x00000030; //翻转模式//当CCR1里的值和TIMx_CNT的值相等,则翻转
TIM3->CCMR1&=0xfffffffc; //配置通道1为输出
TIM3->CCR1=2000; //预装载脉冲
TIM3->CCER&=0xfffffffc; //输出极性为低电平
TIM3->CCMR1&=0xfffffff7; //未使能预装载寄存器
TIM3->DIER|=1<<1; //允许捕获/比较中断
TIM3->CR1|=0x01; //使能计数器
TIM3->CCER|=0x01; //使能输出,信号输出到对应的输出引脚
}
//开复用映射
void AFIO_Configuration()
{
RCC->APB2ENR|=0x01;
AFIO->MAPR|=0x00000c00;
}
//配置端口
void GPIO_Configuration(void)
{
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIOC->CRL&=0XF0FFFFFF;
GPIOC->CRL|=0X0b000000;//PC6 推挽输出
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置72MHZ
LED_Init();
AFIO_Configuration();
GPIO_Configuration();
MY_NVIC_Init(1,3,TIM3_IRQChannel,2);
Timerx_Init();
while(1);
}
|