当前位置: 首页 > wzjs >正文

那些网站可以做0首付分期手机外网如何访问群晖wordpress

那些网站可以做0首付分期手机,外网如何访问群晖wordpress,音乐网站需求分析,wordpress 搜索高亮STM32开发中__main与用户main()函数的本质区别及工作机制 在STM32开发中,__main和用户定义的main()函数是启动过程中的两个关键节点,分别承担运行时初始化和用户程序入口的职责。以下是它们的核心差异及协作机制: 一、定义与层级差异 ​__ma…

STM32开发中__main与用户main()函数的本质区别及工作机制

在STM32开发中,__main和用户定义的main()函数是启动过程中的两个关键节点,分别承担运行时初始化用户程序入口的职责。以下是它们的核心差异及协作机制:


一、定义与层级差异
  1. __main函数

    • 定位​:属于C/C++运行时库的初始化入口,由编译器自动生成,开发者不可见。
    • 作用​:完成从加载域(Flash)到执行域(RAM)的代码和数据段拷贝、初始化ZI(零初始化)段、配置堆栈,并最终跳转至用户main()函数。
    • 调用链​:启动文件(如startup_stm32fxxx.s)中的复位中断服务程序调用__main,再由__main触发__rt_entry进入用户main()
  2. 用户main()函数

    • 定位​:开发者编写的程序入口,负责硬件初始化(如HAL库配置)和业务逻辑。
    • 可见性​:需显式定义,若缺失会导致链接错误(尤其在调用B __main时)。

二、启动流程对比
阶段__main函数的作用用户main()的作用
系统初始化1. 拷贝代码段(RO)和数据段(RW)到RAM;
2. 清零ZI段;
3. 初始化堆栈
无(此时尚未执行)
运行时环境准备调用__rt_entry完成C库初始化(如标准IO、内存分配)
用户程序执行跳转至main()1. 初始化外设(如GPIO、时钟);
2. 启动主循环或任务调度

三、关键技术细节
  1. 段拷贝的必要性

    • 在复杂系统中,代码的加载地址​(Flash存储位置)与执行地址​(RAM运行位置)不同。例如,中断服务程序若需快速响应,需从Flash拷贝到RAM执行。__main自动处理此过程,而直接跳转B main会跳过段拷贝,需手动实现。
  2. 堆栈初始化

    • __main通过链接脚本(如.ld文件)定义的Stack_Size初始化主堆栈指针(MSP),确保函数调用和中断处理的安全。
  3. 调试观察差异

    • 使用B __main调试时,会先执行库初始化代码(约几十毫秒),再进入用户main();而B main直接跳转,但可能导致未初始化的内存错误。

四、实际开发中的注意事项
  1. 启动文件配置

    • 在STM32CubeMX生成的启动文件中,默认使用B __main进入初始化流程。若需自定义启动(如无操作系统裸机项目),需确保链接脚本正确配置加载/执行域。
  2. ZI段清零的重要性

    • 未初始化的全局变量位于ZI段,若__main未清零该区域,变量值可能为随机值,导致程序行为异常。
  3. IAP升级的特殊处理

    • 在Bootloader跳转至APP时,需手动重定位中断向量表(通过SCB->VTOR),并确保__main已正确初始化APP的运行时环境。

五、示例代码分析
#include "stm32f10x.h"
int main(void) {HAL_Init();              // 初始化HAL库SystemClock_Config();    // 配置系统时钟MX_GPIO_Init();          // 初始化GPIOwhile (1) {              // 主循环// 业务逻辑}
}

此代码中,HAL_Init()等函数依赖__main已完成的堆栈和内存初始化。若直接使用B main跳过__main,这些函数可能因未初始化环境而崩溃。


总结

__main与用户main()是STM32启动过程中不可分割的协作环节​:前者为C程序构建安全的执行环境,后者在此环境上实现业务逻辑。理解两者差异,可避免内存错误、初始化遗漏等问题,尤其在移植代码或优化启动速度时至关重要。


文章转载自:

http://8yOKoCFS.jyjqh.cn
http://pfTnXTbB.jyjqh.cn
http://qSpg4wJh.jyjqh.cn
http://eBDuJpVo.jyjqh.cn
http://7BtaOSV3.jyjqh.cn
http://Pdtr7oiB.jyjqh.cn
http://Ix6HVSQM.jyjqh.cn
http://TcclI2aT.jyjqh.cn
http://SsgUlvc6.jyjqh.cn
http://fWXDA2XQ.jyjqh.cn
http://ufFsKKMi.jyjqh.cn
http://INsvPV2a.jyjqh.cn
http://cACtF2FU.jyjqh.cn
http://iVflUSwZ.jyjqh.cn
http://XOJzjUMP.jyjqh.cn
http://zNavSfzJ.jyjqh.cn
http://Y1HPlkKO.jyjqh.cn
http://sxE9wp21.jyjqh.cn
http://QoBaPq7P.jyjqh.cn
http://g1srFIKs.jyjqh.cn
http://fhpCTqAC.jyjqh.cn
http://gsaWDC1I.jyjqh.cn
http://KNheNbiz.jyjqh.cn
http://ZVFQxpUc.jyjqh.cn
http://iFazRWSF.jyjqh.cn
http://oSkeQ9Cf.jyjqh.cn
http://cYrHKy1D.jyjqh.cn
http://loV6atNj.jyjqh.cn
http://9p5w3yt0.jyjqh.cn
http://xsENMoZs.jyjqh.cn
http://www.dtcms.com/wzjs/642363.html

相关文章:

  • 福建网站建设有限公司襄樊网站制作公司
  • 重庆网站建设 狐灵国内建筑设计网站
  • 做ppt的背景图片网站网站改版 删除栏目
  • 深圳网站建设团队买卖链接网站
  • wordpress检查全站链接WordPress上不了
  • 卓越高职院建设网站wordpress蜜蜂采集
  • 网站建设怎么样网站里的活动专题栏怎么做
  • 前几年做那个网站能致富网页设计与制作项目教程答案
  • 网站开发是怎么开发的网站建设基本流程备案
  • 织梦dedecms网站简略标题shorttitle的使用方法云南建设注册考试中心网站app
  • 杭州建设网站公司网站网站建设走什么科目
  • 从哪些方面建设网站周至做网站的公司
  • 上海网站建设服务电话只做网站不做app
  • 站群网站和做seo那个号上海做网站站优云一一十七
  • 网站备案主体信息变更湖北网站seo设计
  • 漳州市网站建设网站建设步骤和流程
  • 苏州建设交通学校网站logo智能设计
  • 泉州做网站建设聊城做网站的公司咨询
  • 做网上商城网站设计茶叶网站建设策划书ppt
  • 北京网站关键词排名推广响水做网站
  • 禄丰网站建设濮阳网站建设网站
  • 学校实验室网站建设现状小企业想做网站推广找哪家强
  • 注册个人网站要多少钱深圳做公司英文网站多少钱
  • 免费ai写作网站3000字群排名优化软件
  • 坚持网站机制建设个人网站建设基本教程
  • 合肥网站建设怎么做河南建设人才教育信息网
  • 搭建网站多少钱8一9岁的手工
  • 内蒙古自治区生态文明建设网站2017网站开发薪资
  • 延安免费做网站网站排名软件利搜怎么样
  • 京鑫建设集团网站网站建设属于硬件还是软件