- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
NUCLEO教程之五:溯源
编译:netlhx
灯也点得差不多了!
今天我们来看一下,加电后到我们的程序运行,这中间到底经历了哪些过程,也算是追本溯源吧!需要
注意的是,到现在为止,我们的开发板都是跑的裸机,即没有使用OS支持!不过就算后面添加OS支持
的吧,启动过程也是差不多的。
MDK调试工具
要寻根溯源,我们要用到MDK的调试工具,一步一步追踪指令的执行过程。
默认情况下,当启动调试工具时,指令会自动跳到main函数处,这样做的好处是:可以跳过一些无需关
心的细节。但今天我们要来探究程序运行的始末,这样就要做一点修改了。
把“Runtomain()”处的标志去掉,这样下次调试的时候就会从头开始了。
设置好了之后,下面我们来调试一下程序。怎么调试程序,硬件还是硬件,在这里都没有区别,我们只
是要找一下程序的流程就好。
从上图看出,进入调试状态后,自动打开一个名为startup_stm32f072rxb.s的文件,这是一个汇编文件,
负责硬件的初始化工作。具体来说,该文件完成的工作如下:
•设置SP的初始值,设置堆栈的大小
•初始化PC值,PC就是指令指针,指向下一条要执行的指令
•设置中断向量表
•调用函数SystemInit
•调用函数main,也就是进入主函数
黄色箭头所指处为下一条要执行的指令,从上图可以看出,在完成初始化后,要执行的第一条指令就是
调用函数SystemInit。
SystemInit
按两次F11键,就会进入SystemInit函数了。
从名字上猜测,这就是系统初始化函数,事实也是如此。
该函数的主要功能就是打开HSI时钟,然后初始化PLL值,也就是配置各分频及倍频设置。
下面是代码代参考:
voidSystemInit(void)
{
/*ResettheRCCclockconfigurationtothedefaultresetstate*/
/*SetHSIONbit*/
RCC-CR|=(uint32_t)0
#ifdefined(STM32F051x8)||defined(STM32F058x8)
/*ResetSW[1:0],HPRE[3:0],PPRE[2:0],ADCPREandMCOSEL[2:0]bits*/
RCC-CFGR=(uint32_t)0xF8FFB80C;
#else
/*ResetSW[1:0],HPRE[3:0],PPRE[2:0],ADCPRE,MCOSEL[2:0],MCOPRE[2:0]and
PLLNODIVbits*/
RCC-CFGR=(uint32_t)0x08FFB80C;
#endif/*STM32F051x8orSTM32F058x8*/
/*ResetHSEON,CSSONandPLLONbits*/
RCC-CR=(uint32_t)0xFEF6FFFF;
/*ResetHSEBYPbit*/
RCC-CR=(uint32_t)0xFFFBFFFF;
/*ResetPLLSRC,PLLXTPREandPLLMUL[3:0]bits*/
RCC-CFGR=(uint32_t)0xFFC0FFFF;
/*ResetPREDIV[3:0]bits*/
RCC-CFGR2=(uint32_t)0xFFFFFFF0;
#ifdefined(STM32F071xB)||defined(STM32F072xB)||defined(STM32F078xB)
/*ResetUSART2SW[1:0]USART1SW[1:0],I2C1SW,CECSW,USBSWandADCSWbits*/
RCC-CFGR3=(uint32_t)0xFFFCFE2C;
#elifdefined(STM32F091xC)||defined(STM32F098xx)
/*ResetUSART3SW[1:0],USART2SW[1:0],USART1SW[1:0],I2C1SW,CECSWbits*/
RCC-CFGR3=(uint32_t)0xFFF0FFAC;
您可能关注的文档
- 参考学习资料 单片机 HUSB365 Training Template V11.pdf
- 参考学习资料 单片机 HX3608.pdf
- 参考学习资料 单片机 include.docx
- 参考学习资料 单片机 keil常见警告处理大全(比较全).pdf
- 参考学习资料 单片机 L298N原理图.pdf
- 参考学习资料 单片机 LCDwen.pdf
- 参考学习资料 单片机 ld3985.pdf
- 参考学习资料 单片机 LM324.doc
- 参考学习资料 单片机 LTH7_4054 (2)-Copy-Reduced-Flattened-Reduced.pdf
- 参考学习资料 单片机 M25P16-VME6TG.pdf
- 参考学习资料 单片机 nucleo_tutorial6.pdf
- 参考学习资料 单片机 nucleo_tutorial7.pdf
- 参考学习资料 单片机 nucleo_tutorial8.pdf
- 参考学习资料 单片机 Panasonic-MIP2910MTSCF.pdf
- 参考学习资料 单片机 PCB设计软件.doc
- 参考学习资料 单片机 PID控制器的模糊优化与参数学习自整定.pdf
- 参考学习资料 单片机 PLC矩阵输出驱动发光二极管.pdf
- 参考学习资料 单片机 pu110(20200923).pdf
- 参考学习资料 单片机 RC522示例教程.pdf
- 参考学习资料 单片机 RC522调试随记.pdf
原创力文档


文档评论(0)