Threadx卡在HAL_GetTick函数中出不来
本帖最后由 fsp 于 2024-3-4 16:55 编辑使用STM32CubeMx工具生成工程,stm32f429igt6,开启ETH外设之后就会一直卡在HAL_GetTick函数中(开启GPIO,uart外设无这种情况,工程中已经添加APPstart启动任务计数),请问这是为什么,该如何解决?
有RTOS的情况下不要用systick作为HAL的定时器。 tovinz 发表于 2024-3-5 08:55
有RTOS的情况下不要用systick作为HAL的定时器。
好的,谢谢 还有一点要注意,RTOS启动前,所有外设初始化,除了HAL和RCC时钟,都不要做,放在你创建的起始任务里面完成。这样不会有各种各样奇怪问题了。 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()实现。 eric2013 发表于 2024-3-5 11:49
还有一点要注意,RTOS启动前,所有外设初始化,除了HAL和RCC时钟,都不要做,放在你创建的起始任务里面完成 ...
硬汉哥你好,我想咨询一个问题,就是你的V6开发板NETXDUO网络教程Template中HAL库时基使用的是RTX5吗?如图所示,如果我不用RTX5,使用TIM7作为时基,主程序就卡在了0x080001DE E7FE B 0x080001DE,请教硬汉哥。 WSWSWSWS 发表于 2024-3-28 17:40
硬汉哥你好,我想咨询一个问题,就是你的V6开发板NETXDUO网络教程Template中HAL库时基使用的是RTX5吗?如 ...
不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母
eric2013 发表于 2024-3-29 09:24
不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母
硬汉哥,就是我将#if 0改为if 1 但是程序就不运行了,这个是什么原因 WSWSWSWS 发表于 2024-3-29 10:54
硬汉哥,就是我将#if 0改为if 1 但是程序就不运行了,这个是什么原因
下载我们的例子对比参考下。
页:
[1]