完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32G473VC,定制板。
我使用一个位于地址 0x00000000 的自己的引导加载程序,用户应用程序位于 0x00008000。 我确实设置了正确的外部文件以使用引导加载程序 在用户应用程序中 system_stm32g4xx.c:#define VECT_TAB_OFFSET 0x00008000U STM32G473VCTX_FLASH.ld:FLASH (rx):ORIGIN = 0x8008000,LENGTH = 220K 在引导加载应用程序中 STM32G473VBTX_FLASH.ld:FLASH (rx):ORIGIN = 0x8000000,LENGTH = 32K 在引导加载程序中,我们使用此代码跳转到用户应用程序
我们在许多其他项目中成功地使用了这个引导加载程序设置,但在这个项目中,如果我们跳转到引导加载代码并返回到用户应用程序,定时器 7 中断将停止中断。 这导致 HAL_IncTick() 未被调用,并且 uwTick 停留在 0 。这导致 HAL_MspInit() ... HAL_SYSCFG_EnableVREFBUF() 在无限循环中运行。 与其他项目唯一不同的是,我们在这个引导加载程序中使用 SPI 来引导,我们在所有其他项目中使用 UART。 我检查了似乎一切正常的定时器 7 寄存器。 奇怪的是,引导加载程序和用户应用程序在复位或断电循环后都能正常运行。引导加载程序首先启动并启动运行良好的用户应用程序。但是当我使用(SPI)命令切换到引导加载程序并返回用户应用程序时,TMR7 中断停止工作。 我还能检查什么来找出为什么定时器 7 没有触发中断? |
|
相关推荐
1个回答
|
|
我已经删除了 __disable_irq,这是我在过去几天寻找解决方案时在引导加载程序代码中添加的……现在它可以工作了。
我不明白 100% 为什么,我想我需要更多关于 STM32 NVIC 中断系统的知识才能知道发生了什么。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2617 浏览 1 评论
3203 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1776 浏览 1 评论
3602 浏览 6 评论
5981 浏览 21 评论
931浏览 4评论
1308浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
576浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1296浏览 3评论
1350浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 12:39 , Processed in 1.176439 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号