fsp 发表于 2024-3-4 16:48:09

Threadx卡在HAL_GetTick函数中出不来

本帖最后由 fsp 于 2024-3-4 16:55 编辑

使用STM32CubeMx工具生成工程,stm32f429igt6,开启ETH外设之后就会一直卡在HAL_GetTick函数中(开启GPIO,uart外设无这种情况,工程中已经添加APPstart启动任务计数),请问这是为什么,该如何解决?

tovinz 发表于 2024-3-5 08:55:34

有RTOS的情况下不要用systick作为HAL的定时器。

fsp 发表于 2024-3-5 09:31:14

tovinz 发表于 2024-3-5 08:55
有RTOS的情况下不要用systick作为HAL的定时器。

好的,谢谢

eric2013 发表于 2024-3-5 11:49:34

还有一点要注意,RTOS启动前,所有外设初始化,除了HAL和RCC时钟,都不要做,放在你创建的起始任务里面完成。这样不会有各种各样奇怪问题了。

WSWSWSWS 发表于 2024-3-28 15:49:42

uint32_t HAL_GetTick (void)
{
      static uint32_t ticks = 0U;
      uint32_t i;

      if (_tx_thread_system_state == TX_INITIALIZE_IS_FINISHED)
      {
                return ((uint32_t)_tx_time_get());
      }

      /* 如果ThreadX还没有运行,采用下面方式 */
      for (i = (SystemCoreClock >> 14U); i > 0U; i--)
      {
                __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
                __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
      }
      
      return ++ticks;
}
硬汉哥的工程中有这个代码,你加入之后可以HAL_GetTick()实现。

WSWSWSWS 发表于 2024-3-28 17:40:42

eric2013 发表于 2024-3-5 11:49
还有一点要注意,RTOS启动前,所有外设初始化,除了HAL和RCC时钟,都不要做,放在你创建的起始任务里面完成 ...

硬汉哥你好,我想咨询一个问题,就是你的V6开发板NETXDUO网络教程Template中HAL库时基使用的是RTX5吗?如图所示,如果我不用RTX5,使用TIM7作为时基,主程序就卡在了0x080001DE E7FE B 0x080001DE,请教硬汉哥。

eric2013 发表于 2024-3-29 09:24:30

WSWSWSWS 发表于 2024-3-28 17:40
硬汉哥你好,我想咨询一个问题,就是你的V6开发板NETXDUO网络教程Template中HAL库时基使用的是RTX5吗?如 ...
不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母




WSWSWSWS 发表于 2024-3-29 10:54:30

eric2013 发表于 2024-3-29 09:24
不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母

硬汉哥,就是我将#if 0改为if 1 但是程序就不运行了,这个是什么原因

eric2013 发表于 2024-3-30 09:12:25

WSWSWSWS 发表于 2024-3-29 10:54
硬汉哥,就是我将#if 0改为if 1 但是程序就不运行了,这个是什么原因

下载我们的例子对比参考下。
页: [1]
查看完整版本: Threadx卡在HAL_GetTick函数中出不来