The author has 5 posts.
然而sys_check_timeouts函数却一直没有自动调用dhcp_fine_tmr非要等到周期为1分钟的dhcp_coarse_tmr函数执行了之后才开始执行dhcp_fine_tmr函数
导致DHCP迟迟不能分配到IP地址
开机后要经过一两分钟才能获得IP地址
【解决方案】// ★sys_check_timeouts函数千万不能调用的太频繁, 否则会出错!(后果就是开机后要等1~2分钟DHCP才能分配到IP地址)if ((uint16_t)(TIM1->CNT - last_check) >= 200) // 如果距离上次检测超过200*0.5ms=100ms{ last_check = TIM1->CNT; sys_check_timeouts(); // 则再检测一次 // 当TIM1->CNT < last_check时也能正常判断, 因为两者都是无符号数 // 比如12-9985的结果是55563, 这相当于计算65536+(12-9985)}
Content converter: