由于RTX5的系统时钟节拍默认是用的滴答定时器,STM32H7的HAL库时间基准也是用的滴答定时器
对于这种情况,我们一般的情况下是使用其他的通用定时器替代,不过要额外的占用一点系统性能,多占用一个定时器倒是没有关系,应该H7的定时器很多。
简单的处理办法是重新下面两个函数即可:
HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority)
{
return HAL_OK;
}
uint32_t HAL_GetTick (void)
{
static uint32_t ticks = 0U;
uint32_t i;
/* RTX5启动后使用 */
if (osKernelGetState () == osKernelRunning)
{
return ((uint32_t)osKernelGetTickCount ());
}
/* RTX5启动前使用 */
for (i = (SystemCoreClock >> 14U); i > 0U; i--)
{
__NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
__NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
}
return ++ticks;
} |