GD32E103 Keil 环境下在 FreeRTOS 任务中使用浮点运算报 HardFault 异常的问题

刚开始移植了个SX1262 (LORA芯片)驱动,驱动里面有个计算频率值的地方用到了double 类型,然后直接导致吗GD32进入了硬件错误中断。
当时以为是计算频率的表达式本身有问题。

后来 ,我自己编程过程中用到了float类型,才意识到,是要使用浮点类型变量就会进硬件错误中断。

2.1 HardFault 异常方向排查问题,分析出现的问题

出现 HardFault 硬件错误的原因主要有两个方面:

内存溢出或者访问越界
堆栈溢出
但是从配置角度而言,任务栈空间是足够的,就算加了浮点运算,需要的空间大,我创建任务直接加大栈空间到 2048 问题依旧存在,根据 JLINK 仿真调试也是一头雾水,无果。

修改启动文件 startup_gd32f30x_hd.s 的堆栈空间,增加堆栈空间问题依旧。

原文链接:https://blog.csdn.net/QQ1452008/article/details/121758899

  1. 总结
    问题困扰几天,虽然解决,但不知根本,内心煎熬。后续有时间再来一探究竟!

现已知晓来龙去脉,请看第二回

GD32F30x Keil 环境下在 FreeRTOS 任务中使用浮点运算报 HardFault 异常的问题(二)
https://blog.csdn.net/QQ1452008/article/details/122820744

分析一个关于STM32 芯片异常复位的经典案例!

https://zhuanlan.zhihu.com/p/65086983

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用提到,GD32E103芯片是一款比较强大的芯片,其内核为M4,主频为120MHz。因此,在GD32E103芯片上运行FreeRTOS是没有问题的。FreeRTOS是一个轻量级的操作系统,提供了任务管理、时间管理、信号量、消息队列、内存管理等功能,可以满足较小系统的需求。FreeRTOS内核支持优先级调度算法,任务可以根据重要程度被赋予一定的优先级,CPU会优先执行优先级最高的任务。同时,FreeRTOS还支持轮换调度算法,允许不同优先级的任务共享CPU使用时间。 引用列出了在使用FreeRTOS时需要包含的头文件,其包括FreeRTOS.h、task.h、queue.h和semphr.h。这些头文件提供了使用FreeRTOS所需的任务、队列和信号量的定义和函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* [GD32E103 Keil 环境下在 FreeRTOS 任务使用浮点运算 HardFault 异常问题](https://blog.csdn.net/dianqicyuyan/article/details/124378189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* *4* [gd32e103加入freertos的步骤](https://blog.csdn.net/hua_ren79/article/details/118522104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值