Hi,大家好,我在调试CH32V307\CH32V307EVT\EVT\EXAM\USB\USBHS\DEVICE\CH372Device Demo时,添加了1ms定时器,用于闪灯,大部分LED闪烁正常,但是有时候发现LED闪烁不正常,会出现抖动情况,瞬间一亮一灭,感觉程序异常了,找不到原因,哭了。这个是我TIM1的初始化及中断函数,
volatile uint32_t system_timer_cnt = 0;
void TIM1_UP_IRQHandler(void)? __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM1_UP_IRQHandler(void)
{
? ? TIM_ClearFlag(TIM1, TIM_FLAG_Update);
? ? system_timer_cnt ++;
}
void TIM1_Init(void)
{
? ? TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure = {0};
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
? ? TIM_TimeBaseInitStructure.TIM_Period = 999;
? ? TIM_TimeBaseInitStructure.TIM_Prescaler = 95;
? ? TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
? ? TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
? ? TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
? ? TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);
? ? NVIC_EnableIRQ(TIM1_UP_IRQn);
? ? TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
? ? TIM_Cmd(TIM1, ENABLE);
}
我在main while 1中的代码:
while(1)
{
? ? USBHS_IRQHandler1();
? ? if((system_timer_cnt % 1000) == 0) {
? ? ? ? led_tongle1();
? ? ? ? //printf("system_timer_cnt = %d\r\n", system_timer_cnt);
? ? }
我在想怎么也不会产生一闪一灭的现象发生呀,有没有大佬遇到过这样的问题,第一次使用CH32V307,有时候感觉程序运行很奇怪。
附件是我的代码工程