之前也遇到过这个问题后来把HAL_Delay 去掉了. 然后发现不行, 还是得有它.不然发串口数据发的太快会乱掉. 得慢点发. 然后调试到HAL_Delay()方法的内部发现 HAL_GetTick( )函数一直返回 __weak void HAL_Delay(uint32_t Delay) { uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay; /* A...
TIMEOUT_VALUE的值是否合适。如果超时值设置得太小,可能会导致程序在启动时等待外部时钟的过程中卡死。
STM32使用HAL库,使用延时卡死的问题。 之前一直使用标准库的,现在转到HAL库来后,编写了第一个程序就遇到了问题。发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。 根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 1 2 3 4 __weak uint32_t HAL_GetTick(void...
SystemClock_Config与HAL_GetTick()死机的问题https://club.rt-thread.org/ask/question/91c0a18db27b3a94.html 解决不了,只能调试看下。暂停程序,程序会停在这个地方,死循环。 一步一步调试能发现就是,rt_show_vesion()会用到rt_kprintf()这个函数。 而rt_kprintf(),因为有串口调试,需要把消息打印到串口上,...
调试发现,程序卡在if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)处,不往下进行。原因:重复使能时钟。
78.tickstart = HAL_GetTick(); 79.firstData=1; 80.} 81.#else 82.//如果是不定长接收,这个超时时间改为单byte的超时时间,如115200下一个byte通信时间大概为0.086ms 83.//同时代码改为每个byte都更新超时计时开始时间。理论上可以一次性接收你能开空间大小的帧长。
if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U))//卡在此句2 { /* ...
- `Tickstart`:开始等待的时间点,通常使用`HAL_GetTick()`函数获取。函数的主要步骤如下:1. 检查...
2019-12-12 20:18 −之前一直使用标准库的,现在转到HAL库来后,编写了第一个程序就遇到了问题。发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。 根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 __weak uint32_t HAL_GetTick(v... ...
cube切换了时钟haldelay还不行是因为不管是在main中的task还是中断服务函数,调用HAL_Delay系统就处于卡死状态,起初怀疑优先级过低导致,但NVIC配置Base SysTick优先级高于中断优先级也不触发Base SysTick中断。