程序卡在if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)处
时间: 2023-05-20 13:06:53 浏览: 630
这是一个关于程序卡住的问题,可能是由于 HSE 超时导致的。建议检查 HSE 的设置和配置,确保其正确性。同时,也可以尝试增加 HSE 超时的时间,以避免程序卡住。如果需要更具体的帮助,请提供更多的上下文和代码细节。
相关问题
if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
这是一段 C 语言代码,它的作用是检查时间是否超时。其中,`HAL_GetTick()` 函数返回当前系统距离启动的时间,`Tickstart` 是开始计时的时间,`Timeout` 是超时时间。如果当前时间距离开始计时的时间超过了超时时间,或者超时时间被设置为 0,那么条件成立,代码会执行条件语句中的内容。
while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U) { if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE) { /* Update error code */ hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT; /* Change CAN state */ hcan->State = HAL_CAN_STATE_ERROR; return HAL_ERROR; } } 为什么会返回错误
这段代码是用于等待CAN总线退出睡眠模式的。如果CAN总线在指定的超时时间内没有退出睡眠模式,就会返回 `HAL_ERROR`,并将CAN状态设置为 `HAL_CAN_STATE_ERROR`。返回错误可能是由于CAN总线硬件故障、接线问题或软件配置错误等原因引起的。如果您要进一步了解原因,需要检查CAN总线的硬件、软件和配置是否正确。
阅读全文