Hi,大家好,我在調試CH32V307\CH32V307EVT\EVT\EXAM\USB\USBHS\DEVICE\CH372Device Demo時,添加了1ms定時器,用于閃燈,大部分LED閃爍正常,但是有時候發(fā)現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);
? ? }
我在想怎么也不會產生一閃一滅的現象發(fā)生呀,有沒有大佬遇到過這樣的問題,第一次使用CH32V307,有時候感覺程序運行很奇怪。
附件是我的代碼工程