完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32-仿真调试时的SystemInit
我在开始STM32的仿真调试时,遇到一个问题,就是调试时程序一直停在SystemInit()中的等待晶振中,怎么也出不来。 SystemInit()前面部分的代码,都能走过,就是在执行到最后一个函数时出问题了。 最后一个函数是:SetSysClock(); 执行到下面这个循环之后,出不来了: /* Wait till HSE is ready and if Time out is reached exit */ do { HSEStatus = RCC-》CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); 这里,我就有疑问了: 1,我希望的是直接进main函数,那么,这个SystemInit()函数是从哪里来的? 2,为什么会进入死循环? 我全工程搜索“SystemInit”,发现在startup_stm32f0xx.s中有这样的代码: IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP 看来,系统是先执行SystemInit,然后才执行main的啊。 接下来是第二个问题,为什么进入死循环? 看看注释:/* Wait till HSE is ready and if Time out is reached exit */ 等待HSE准备就绪且超时时间到达。超时时间且不去管它,这个HSE是什么? HSE(High Speed External Clock signal),高速外部时钟信号,是接外部时钟源的。 相应的还有HSI(High Speed Internal Clock signal),高速内部时钟信号,是stm32芯片自带的。 是DEBUG里面的设置有问题,调用的DLL错误,在Dialogue DLL中填DARMSTM.DLL, Parameter 填-pSTM32F103ZE(根据你板子的型号决定) 仿真stm的那一款就对应填那个参数,这是仿真STM32的动态链接,具体为什么这样还等大虾来解决; |
|
|
|
只有小组成员才能发言,加入小组>>
2235 浏览 0 评论
1266浏览 3评论
719浏览 2评论
399浏览 1评论
1255浏览 0评论
142浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-6-30 14:16 , Processed in 1.152572 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号