RTX5的系统时钟节拍和STM32H7的HAL库时间基准都使用Systick的简单方法

[复制链接]
382|0
 楼主| 白闻不如怡见 发表于 2018-8-10 07:16 | 显示全部楼层 |阅读模式
由于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;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

384

主题

384

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部