开源网站源码下载网站导航网站可以做吗

diannao/2026/1/24 1:32:11/文章来源:
开源网站源码下载,网站导航网站可以做吗,怎么看一个网站是用模板什么做的,科技创新绘画单片机上电后执行的第一段代码 1.初始化堆栈指针 SP_initial_sp 2.初始化 PC 指针Reset_Handler 3.初始化中断向量表 4.配置系统时钟 5.调用 C 库函数_main 初始化用户堆栈#xff0c;然后进入 main 函数。 在正式讲解之前#xff0c;我们需要了解STM32的启动模式。 STM32的…单片机上电后执行的第一段代码 1.初始化堆栈指针 SP_initial_sp 2.初始化 PC 指针Reset_Handler 3.初始化中断向量表 4.配置系统时钟 5.调用 C 库函数_main 初始化用户堆栈然后进入 main 函数。 在正式讲解之前我们需要了解STM32的启动模式。 STM32的启动模式 手册可以在Keil中跳转查看 STM32的三种启动模式 首先要讲一下STM32的启动模式因为启动模式决定了向量表的位置STM32有三种启动模式 1. 主闪存存储器(Main Flash memory)启动 从STM32内置的Flash启动(0x0800 0000-0x0807 FFFF)一般我们使用JTAG或者SWD模式下载程序时就是下载到这个里面重启后也直接从这启动程序。以0x08000000 对应的内存为例则该块内存既可以通过0x00000000 操作也可以通过0x08000000 操作且都是操作的同一块内存。 2. 系统存储器(System memory)启动 从系统存储器启动(0x1FFFF000 - 0x1FFF F7FF)这种模式启动的程序功能是由厂家设置的。一般来说我们选用这种启动模式时是为了从串口下载程序因为在厂家提供的ISP程序中提供了串口下载程序的固件可以通过这个ISP程序将用户程序下载到系统的Flash中。以0x1FFFFFF0对应的内存为例则该块内存既可以通过0x00000000 操作也可以通过0x1FFFFFF0操作且都是操作的同一块内存。 3. 片上SRAM(Embedded SRAM)启动 从内置SRAM启动(0x2000 0000-0x3FFFFFFF)既然是SRAM自然也就没有程序存储的能力了这个模式一般用于程序调试。SRAM 只能通过0x20000000进行操作与上述两者不同。从SRAM 启动时需要在应用程序初始化代码中重新设置向量表的位置。 用户可以通过设置BOOT0和BOOT1的引脚电平状态来选择复位后的启动模式。 如下图所示 总结  启动模式只决定程序烧录的位置加载完程序之后会有一个重映射(映射到0x00000000地址位置)真正产生复位信号的时候CPU还是从开始位置执行。 值得注意的是STM32上电复位以后代码区都是从0x00000000开始的三种启动模式只是将各自存储空间的地址映射到0x00000000中。 STM32的启动文件分析 因为单片机上电启动过程主要是由汇编完成的因此STM32的启动的大部分内容都是在启动文件里。我用CubeMX生成的的启动文件是startup_stm32f103xb.s不管使用标准库还是使用HAL库启动文件都是差不多的。 1. Stack栈 栈的作用是用于局部变量函数调用函数形参等的开销栈的大小不能超过内部SRAM 的大小。当程序较大时需要修改栈的大小不然可能会出现的HardFault的错误。 第32行表示开辟栈的大小为 0X4001KBEQU是伪指令相当于C 中的 define。 第34行开辟一段可读可写数据空间ARER 伪指令表示下面将开始定义一个代码段或者数据段。此处是定义数据段。ARER 后面的关键字表示这个段的属性。段名为STACK可以任意命名NOINIT 表示不初始化READWRITE 表示可读可写ALIGN3表示按照 8 字节对齐。 第35行SPACE 用于分配大小等于 Stack_Size连续内存空间单位为字节。 第37行 __initial_sp表示栈顶地址。栈是由高向低生长的。 2. Heap堆 堆主要用来动态内存的分配像malloc()函数申请的内存就在堆中。 开辟堆的大小为 0X200512 字节名字为 HEAPNOINIT 即不初始化可读可写8字节对齐。__heap_base 表示对的起始地址__heap_limit 表示堆的结束地址。 3. 向量表 向量表是一个WORD 32 数组每个下标对应一种异常该下标元素的值则是该 ESR 的入口地址。向量表在地址空间中的位置是可以设置的通过 NVIC 中的一个重定位寄存器来指出向量表的地址。在复位后该寄存器的值为 0。因此在地址 0 即 FLASH 地址 0处必须包含一张向量表用于初始时的异常分配。 值得注意的是这里有个另类 0 号类型并不是什么入口地址而是给出了复位后 MSP 的初值后面会具体讲解。 第55行定义一块代码段段名字是RESETREADONLY 表示只读。 第56-58行使用EXPORT将3个标识符申明为可被外部引用声明 __Vectors、__Vectors_End 和__Vectors_Size 具有全局属性。 第60行__Vectors 表示向量表起始地址DCD 表示分配 1 个 4 字节的空间。每行 DCD 都会生成一个 4 字节的二进制代码中断向量表 存放的实际上是中断服务程序的入口地址。当异常也即是中断事件发生时CPU 的中断系统会将相应的入口地址赋值给 PC 程序计数器之后就开始执行中断服务程序。在60行之后依次定义了中断服务程序的入口地址。 第121行__Vectors_End 为向量表结束地址。 第123行__Vectors_Size则是向量表的大小向量表的大小是通过__Vectors 和__Vectors_End 相减得到的。 4. 复位程序 复位程序是系统上电后执行的第一个程序复位程序也是中断程序只是这个程序比较特殊因此单独提出来讲解。 第128行定义了一个服务程序PROC表示程序的开始。 第129行使用EXPORT将Reset_Handler申明为可被外部引用后面WEAK表示弱定义如果外部文件定义了该标号则首先引用该标号如果外部文件没有声明也不会出错。这里表示复位程序可以由用户在其他文件重新实现这种写法在HAL库中是很常见的。 第130-131行表示该标号来自外部文件SystemInit()是一个库函数在system_stm32f1xx.c中定义的__main 是一个标准的 C 库函数主要作用是初始化用户堆栈这个是由编译器完成的该函数最终会调用我们自己写的main函数从而进入C世界中。 第132行这是一条汇编指令表示从存储器中加载SystemInit到一个寄存器R0的地址中。 第133行汇编指令表示跳转到寄存器R0的地址并根据寄存器的 LSE 确定处理器的状态还要把跳转前的下条指令地址保存到 LR。 第134行和132行是一个意思表示从存储器中加载__main到一个寄存器R0的地址中。 第135行和133稍微不同这里跳转到至指定寄存器的地址后不会返回。 第136行和PROC是对应的表示程序的结束。 5. 中断服务程序 我们平时要使用哪个中断就需要编写相应的中断服务程序只是启动文件把这些函数留出来了但是内容都是空的真正的中断复服务程序需要我们在外部的 C 文件里面重新实现这里只是提前占了一个位置罢了。 这部分没啥好说的和服务程序类似的只需要注意‘B .’语句B表示跳转这里跳转到一个‘.’即表示无线循环。 6. 堆栈初始化 堆栈初始化是由一个IF条件来实现的MICROLIB的定义与否决定了堆栈的初始化方式。 这个定义是在Options-Target中设置的 这部分也没啥讲的需要注意的是ALIGN表示对指令或者数据存放的地址进行对齐缺省表示4字节对齐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业网站 静态页面杭州定制网站开发

1、Python3 元组 Python中的元组是一个不可变的序列类型,用于存储一组有序的数据。 元组的主要特点包括: 不可变性:一旦创建,元组的内容不能更改,这使得它们成为保护数据不被修改的理想选择。有序性:元组…

仿牌外贸网站WordPress添加CA

**中文摘要:**随着互联网技术的不断发展和普及,人们对于信息化、数字化的需求也越来越高。在此背景下,校友录系统的设计与开发显得尤为重要。本文旨在设计和开发一款方便实用的校友录系统,为学校提供一个联系和管理校友的平台&…

鲜花网站建设深圳网站建设那家好

while中的break意思是结束循环 start 0 while True:print(start)if start 100:break # 如果start 100 就退出循环start 1转载于:https://www.cnblogs.com/zhengkui/p/9052875.html

青岛网站建站团队网站底部图片代码

微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 后台回复 源码 即可;如果觉得对你有帮助,欢迎关注C# Linq中 Where使用技巧hello 大家好,很开心又能重新分享C#编程开发技巧了,之前因为工作和生活…

做网站域名多少钱php通用企业网站源码

一、定义 函数,指可以实现某个功能,可以重复使用的一段代码。不同的函数之间相互独立,即函数之间的功能互不影响(互相的代码)。 二、结构 1. 定义 返回值类型 函数名(形参1, 形参2, 形参3...形参n) {...return 值; }2…

东阿做网站推广免费小程序制作软件

并发1. 并发和并行并发:两个或多个任务在同一时间段内运行。关注点在任务分割。并行:两个或多个任务在同一时刻同时运行。关注点在同时执行。本文大多数情况下不会严格区分这两个概念,默认并发就是指并行机制下的并发。2. 好处随着多核处理器…

自建服务器做网站要备案互联网技术岗位校园招聘

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 📜redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿 目录 1、引入依赖 2、对 Redis 的配置文件进行书写 3、S…

主播做的头像在哪个网站上做的绍兴公司注册

三个主要数据库解释: sharepoint_admin_content -- 管理中心数据库 sharepoint_config -- 配置数据库 WSS_content -- 网站内容数据库 数据库中表解释: sharepoint_config.objects :物理对象表,包括站点,数据库,工作流作业等;其中的ID字段&#xff…

怎么在手机上做网站北京网站建设有限公司

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Cookie 知识介绍 Cookie(HTTP Cookie)是服务器发送到用户浏览器并保存在本地的一小段数据,用于记录用户的相关信息和状态。这些信息通常包括用户的身份标识、网站偏好设置…

深圳58同城网站建设崇义网站建设

图1:2023ACM中国图灵大会现场 生于1912年的艾伦图灵被称为“计算机科学之父”、“人工智能之父”。1966年,国际计算机协会(ACM)为了纪念这位卓越的科学家,设立了以其名字命名的ACM图灵奖,以表彰在计算机领…

前端素材网站不花钱的网页游戏排行

今天的任务是主面板master嘿嘿 上头有几个按钮,登录登出,个人信息,注册注销等,他们是根据用户是否等率决定的 具体代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System…

网站的外链是什么建一个商业网站要多少钱

目录 一、引言 二、GridView控件 三、DataList控件 四、GridView与DataList的比较 五、结论 一、引言 ASP.NET是微软公司开发的一款强大的Web应用程序开发框架,它提供了丰富的控件库,使得开发人员能够更快速、更高效地构建功能强大的Web应用程序。…

人与马做的网站牡丹江网络推广公司

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 临近学期结束&#xff…

网站登录如何做苏州哪家保洁公司好

函数: 即function语句的集合,就是将多个语句封装到一起; 函数的执行要会自己遍历,遇见函数 a();执行语句,就要移交控制权,函数执行完毕之后,控制权又移交回…

人力资源做网站的好处wordpress下划线

【壹】笛卡尔坐标系(Cartesian coordinates)就是直角坐标系和斜坐标系的统称。相交于原点的两条数轴,构成了平面放射坐标系。如两条数轴上的度量单位相等,则称此放射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标…

最新章节 第四百六十二章 花两亿做的网站中国宁波网首页

大数据人工智能八大在线实习项目: 某实习网站招聘信息采集与分析 股票价格形态聚类与收益分析 某平台网络入侵用户自动识别 某平台广东省区采购数据分析 产品订单的数据分析与需求预测 基于注意力机制的评论者满意度分析 基于锅炉工况实现…

乌兰察布做网站公司展馆设计论文

1:what is it jvm把描述类的数据从class字节码文件加载到内存,并对数据进行校验、解析、初始化,最终成为jvm直接使用的数据类型 1、ClassNotFoundExcetpion   我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常&#xf…

信息发布的网站怎么做python不用框架做网站

随着移动互联网的快速发展,小程序已经成为企业展示形象、推广产品和服务的重要工具。拥有一个优秀的小程序可以帮助企业提高品牌知名度,吸引更多潜在客户,提升用户体验。以下是拥有一个展示小程序的步骤: 确定需求和目标 首先&am…

企业站官网高级设计网站

定义一个字符串为内容的数组,每一行的多个文本框为一组,要求点击切换内容,且内容不重复. 代码 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">2 <html>3 <head>4 <title>New Document </title>5 <script>6 …

html5手机app网站模板支付宝小程序

Python中的循环控制语句 一、引言 在Python编程中&#xff0c;循环是重复执行一段代码直到满足特定条件的基本结构。Python提供了多种循环控制语句&#xff0c;如For 和While &#xff0c;以及用于控制循环流程的辅助语句&#xff0c;如Break、Continue和Pass。这些语句的组合…