__weak void HAL_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函数里 while ((HAL_GetTick() - tickstart) < ...
发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。 根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 1 2 3 4 __weak uint32_t HAL_GetTick(void) { returnuwTick; } 程序中的值没有变化,搜uwTick后发现,其值由另一个程序进行处理, __weakvoidHAL_IncTick...
TIMEOUT_VALUE的值是否合适。如果超时值设置得太小,可能会导致程序在启动时等待外部时钟的过程中卡死。
STM32使用HAL库,使用延时卡死的问题。 2019-12-12 20:18 −之前一直使用标准库的,现在转到HAL库来后,编写了第一个程序就遇到了问题。发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。 根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 __weak uint32_t HAL...
29.return HAL_ERROR; 30.} 31.} 32. 33./* Process Locked */ 34.__HAL_LOCK(huart); 35. 36.huart->ErrorCode = HAL_UART_ERROR_NONE; 37.huart->RxState = HAL_UART_STATE_BUSY_RX; 38. 39./* Init tickstart for timeout managment*/ 40.tickstart = HAL_GetTick(); ...
12__weak void HAL_Delay(uint32_t Delay)13{ 14 uint32_t tickstart = HAL_GetTick();15 ...
发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为 __weak uint32_t HAL_GetTick(v... egren 0 12327 stm32 HAL库函数——GPIO 2019-12-11 21:10 − void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO...
发现问题所在了,是滴答没启动起来导致HAL_GetTick()函数失效进而程序卡死。但是这个bootloader我在另一个...
hspi->RxXferCount--;//}}if((Timeout != HAL_MAX_DELAY) && ((HAL_GetTick()-tickstart) >=Timeout)) { errorcode=HAL_TIMEOUT;gotoerror; } } 问题就解决了。具体原因似乎是因为 hspi->Instance->DR = *((uint16_t*)hspi->pTxBuffPtr); ...
GetTick()是HAL函数中的一个函数,用于获取系统滴答定时器的当前计数值。滴答定时器是STM32微控制器上的一个硬件定时器,它以固定的时间间隔递增计数器的值。通过调用GetTick()函数,开发人员可以获取当前系统的运行时间,通常以毫秒为单位。 使用GetTick()函数可以实现一些时间相关的功能,例如延时、定时器、任务调度等。