完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 STM32F733 启动一个新项目,其中的代码从 CubeMX 版本 6.6.1 生成,但有困难。寻找建议。
1) 当我将 HAL 时基源从默认的 Systick 更改为其他内容时,我尝试了 TIM2 和 TIM10,然后对 HAL_Init() 的调用永远不会返回,它用完了堆栈。我已经将堆栈从默认的 0x200 增加到 0x2000,但仍然用完了堆栈。这是在我自己的任何代码被调用之前,只有立方体生成的代码。 2) 将 HAL 时基源设置为 SysTick,它通过调试器 (Segger J-Link) 逐步完成。如果我添加一个紧凑的 for 循环,除了递增一个变量之外什么都不做,单步执行,查看调用堆栈,短时间内一切看起来都很正常。当我让它运行时,该变量看起来增加了大约 1,500 次,然后微程序开始单步执行意外代码。调用堆栈仅显示 __iar_SB + 0x1fcfed56,例如,与 __iar_SB 的偏移量在运行时递增。 我应该在哪里看?硬件问题?多维数据集的 HAL_Init() 中存在错误?通常捕获错误的 ISR 都没有捕获它。如果我配置了外部时钟,cubeMX 会检查时钟配置并且不会显示任何错误。外部时钟停止,显然与代码开始在 __iar_SB + offset 处运行指令的时间相同。 更新:禁用 SysTick 计数可以解决我的调用堆栈问题。怀疑中断向量有问题。 |
|
相关推荐
1个回答
|
|
由启动代码在 main 之前调用并包含在 system_stm32f7xx.c 中的函数 SystemInit() 确实没有正确设置向量表。cubeMX 为我设置的项目包含一个明显过时的 system_stm32f7xx.c 版本。我将 system_stm32f7xx.c 替换为我在 IAR 的一个示例项目中找到的它自己的更新版本,现在向量表已正确设置。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2655 浏览 1 评论
3216 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1790 浏览 1 评论
3619 浏览 6 评论
5997 浏览 21 评论
946浏览 4评论
1319浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
591浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1309浏览 3评论
1369浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 12:07 , Processed in 1.133467 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号