博主这几天在看Pitaya lite例程库时,下载了第一个例程,就出现程序卡死的问题(运行在固定的一行,我以为是卡死)。调用Hal_Delay后,程序不进入下一行;Hal_Delay函数
/**
* @brief 利用滴答定时器实现的延时函数,默认单位是ms
*
* @param Delay
*/
void HAL_Delay(unsigned int Delay)
{
volatile uint32_t tickstart = HAL_GetTick();
volatile uint32_t wait = Delay;
/* Add a freq to guarantee minimum wait */
if (wait < 0xFFFFFFFFU)
{
wait += (uint32_t)(1);
}
while ((HAL_GetTick() - tickstart) < wait)
{
}
}
这个minimum wait显然是用在高速计数器中的,计数超过最大值跳过一个周期来使用的,应该要判断的,这个例程中直接使用了。修改如下(代码有不足的,还请批评指正)
void HAL_Delay(unsigned int Delay)
{
volatile uint32_t tickstart = HAL_GetTick();
volatile uint32_t wait = Delay;
// /* Add a freq t