之前也遇到过这个问题后来把HAL_Delay 去掉了. 然后发现不行, 还是得有它.不然发串口数据发的太快会乱掉. 得慢点发. 然后调试到HAL_Delay()方法的内部发现 HAL_GetTick( )函数一直返回 __weak void HAL_Delay(uint32_t Delay) { uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay; /* A...
发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。 根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 1 2 3 4 __weak uint32_t HAL_GetTick(void) { returnuwTick; } 程序中的值没有变化,搜uwTick后发现,其值由另一个程序进行处理, __weakvoidHAL_IncTick...
if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U))//卡在此句2 { /* ...
所以函数每 1ms 让全局变量 uwTick 计数值加 1 */__weakvoidHAL_IncTick(void){uwTick+=(uint32_t)uwTickFreq;}/* 获取全局变量 uwTick 当前计算值 */__weakuint32_tHAL_GetTick(void){returnuwTick;}/* 获取滴答时钟优先级 */uint32_tHAL_GetTickPrio(void){returnuwTickPrio;}/* 设置滴答定时器中...
delay time length, in milliseconds. * @retval None */__weakvoidHAL_Delay(uint32_t Delay){uint32_t tickstart=HAL_GetTick();uint32_t wait=Delay;/* Add a freq to guarantee minimum wait */if(wait<HAL_MAX_DELAY){wait+=(uint32_t)(uwTickFreq);}while((HAL_GetTick()-tickstart)<wait)...
12__weak void HAL_Delay(uint32_t Delay)13{ 14 uint32_t tickstart = HAL_GetTick();15 ...
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=...
__weakvoidHAL_IncTick(void)__weak uint32_tHAL_GetTick(void)uint32_tHAL_GetTickPrio(void)HAL_StatusTypeDefHAL_SetTickFreq(HAL_TickFreqTypeDef Freq)HAL_TickFreqTypeDefHAL_GetTickFreq(void)__weakvoidHAL_Delay(uint32_t Delay)__weakvoidHAL_SuspendTick(void)__weakvoidHAL_ResumeTick(void) ...
HAL_TickFreqTypeDef HAL_GetTickFreq(void) __weak void HAL_Delay(uint32_t Delay) __weak void HAL_SuspendTick(void) __weak void HAL_ResumeTick(void) 1. 2. 3. 4. 5. 6. 7. 8. 函数描述: 这些函数就比较简单了,下面把这些函数实现的功能做个简单的说明: ...
但是操作 system tick timer 貌似和HAL I2C使用的HAL_GetTick()冲突了,会导致卡死在I2C_WaitOnMasterAddressFlagUntilTimeout