硬汉嵌入式论坛

 找回密码
 立即注册
查看: 498|回复: 8
收起左侧

Threadx卡在HAL_GetTick函数中出不来

[复制链接]

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2024-3-4 16:48:09 | 显示全部楼层 |阅读模式
本帖最后由 fsp 于 2024-3-4 16:55 编辑

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

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2024-3-5 08:55:34 | 显示全部楼层
有RTOS的情况下不要用systick作为HAL的定时器。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2024-3-5 09:31:14 | 显示全部楼层
tovinz 发表于 2024-3-5 08:55
有RTOS的情况下不要用systick作为HAL的定时器。

好的,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-3-5 11:49:34 | 显示全部楼层
还有一点要注意,RTOS启动前,所有外设初始化,除了HAL和RCC时钟,都不要做,放在你创建的起始任务里面完成。这样不会有各种各样奇怪问题了。
回复

使用道具 举报

5

主题

10

回帖

25

积分

新手上路

积分
25
发表于 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()实现。
回复

使用道具 举报

5

主题

10

回帖

25

积分

新手上路

积分
25
发表于 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,请教硬汉哥。
a.PNG
s.PNG
d.PNG
f.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-3-29 09:24:30 | 显示全部楼层
WSWSWSWS 发表于 2024-3-28 17:40
硬汉哥你好,我想咨询一个问题,就是你的V6开发板NETXDUO网络教程Template中HAL库时基使用的是RTX5吗?如 ...

不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母



27.jpg
回复

使用道具 举报

5

主题

10

回帖

25

积分

新手上路

积分
25
发表于 2024-3-29 10:54:30 | 显示全部楼层
eric2013 发表于 2024-3-29 09:24
不是,这个就是ThreadX的,我没有修改这个RTX5这几个字母

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-3-30 09:12:25 | 显示全部楼层
WSWSWSWS 发表于 2024-3-29 10:54
硬汉哥,就是我将#if 0改为if 1 但是程序就不运行了,这个是什么原因

下载我们的例子对比参考下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 01:06 , Processed in 0.296037 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表