探索者开发板,利用TIMER3,开机复位后5秒后开启DS1.实际情况是开机复位后DS1立即亮。应该是初始化错误,在初始化函数中加TIM3->CNT=0也没有效果。
//定时器3中断服务程序
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
LED1=0;
TIM3_close(); //关闭T3
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
//T3初始化
void TIM3_Int_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频器
TIM3->DIER|=1<<0; //允许更新中断
TIM3->CR1|=0x01; //使能定时器3
MY_NVIC_Init(1,3,TIM3_IRQn,2); //抢占1,子优先级3,组2
}
//关闭T3
void TIM3_close(void)
{
RCC->APB1ENR&=~(1<<1); //关闭TIM3时钟
TIM3->CR1&=~0x01; //禁止定时器3
}
int main(void)
{
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
delay_init(168); //延时初始化
LED_Init(); //初始化LED
TIM3_Int_Init(50000-1,8400-1);//10Khz的计数频率,计数5W次为5s
LED1=1;
while(1)
{
LED0=!LED0;
delay_ms(200);
};
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>