MM32火龙果Pitaya lite开发板例程Hal_Delay()修正

博主这几天在看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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值