MM32火龙果Pitaya lite开发板例程Hal

编程入门 行业动态 更新时间:2024-10-26 04:27:40

MM32火龙果Pitaya lite开发板<a href=https://www.elefans.com/category/jswz/34/1769196.html style=例程Hal"/>

MM32火龙果Pitaya lite开发板例程Hal

博主这几天在看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 to guarantee minimum wait */
//  if (wait < 0xFFFFFFFFU)
//  {
//    wait += (uint32_t)(1);
//  }if ( 0xFFFFFFFFU-wait>tickstart){while ((HAL_GetTick() - tickstart) < wait){__NOP();}}else{wait = HAL_GetTick() - tickstart;while ((HAL_GetTick() - tickstart)){__NOP();}while ((HAL_GetTick() - tickstart) < wait){__NOP();}}
}

原代码的操作导致要等待49天左右,让人摸不着头脑。我之前还以为是初始化或者读地址出现了错误,最后手搓出来了串口字符串输出函数,输出了中间变量(debug查看计数器我感觉很麻烦,还会打断运行),才确定初始化没问题。再仔细看代码,才看出端倪,这些代码都不Review的吗?!!之前查论坛,对应板块下没有帖子;找淘宝的客服要的QQ群也验证不通过。这款开发板真的不推荐。

更多推荐

MM32火龙果Pitaya lite开发板例程Hal

本文发布于:2024-02-17 05:15:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1692787.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:例程   开发板   火龙果   Pitaya   Hal

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!