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

武汉网站制作平台南昌seo计费管理

武汉网站制作平台,南昌seo计费管理,郑州专业网站制作建设,建材网站建设成都STM32中断向量表的个人理解 1 中断向量表存储位置 在研究 stm32 的启动文件中,有一个部分是设置中断向量表,那么中断向量表是写在什么地方呢?通常写在flash的起始位置,向量表的排列顺序和内容遵循ARM Cortex-M内核的规定。 栈顶…

STM32中断向量表的个人理解

1 中断向量表存储位置

  在研究 stm32 的启动文件中,有一个部分是设置中断向量表,那么中断向量表是写在什么地方呢?通常写在flash的起始位置,向量表的排列顺序和内容遵循ARM Cortex-M内核的规定。
在这里插入图片描述

  • 栈顶指针 MSP 的值会根据程序数据段的大小,加上定义的堆空间的大小与定义的栈空间的大小,最终加起来才会得到栈顶指针的值的,也就是说栈顶指针所指向的地址还和具体的程序定义了多少全局数据有关。栈顶指针的值会保存在启动文件定义 __initial_sp 这个标号中,这个标号具体的数值在程序编译后才会被确定。
  • Reset_Handler 复位异常的入口函数,系统上电后,程序运行的第一条指令就是从这里开始运行的。
  • 异常向量表:这里面存放了系统异常(上面的 Reset_Handler 也属于系统异常的一种)和外部中断的入口地址,当程序发生异常或中断时,硬件会强制 CPU 跳转到相应的入口执行中断服务函数。

2 STM32上电流程

  我们利用 MDK 设置 flash 的地址后,编译器就会将我们启动文件的中断向量表写入到 flash 的起始位置。
在这里插入图片描述
  启动文件种建立中断向量表如下所示:

1. __Vectors DCD __initial_sp ; Top of Stack
2. DCD Reset_Handler ; Reset Handler
3. DCD NMI_Handler ; NMI Handler
4. DCD HardFault_Handler ; Hard Fault Handler
5. 
6. //中间部分省略未写
7.
7. DCD 0 ; Reserved 
8. DCD WAKEUP_PIN_IRQHandler ; Interrupt for all 6 wake-up pins
9. 
11.
10. __Vectors_End
13.
11. __Vectors_Size EQU __Vectors_End - __Vectors

  当我们把程序下载到 flash 中,中断向量表就被放入 flash 的起始位置 0x08000000 ,硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作:

  1. 将 0x08000000 位置存放的堆栈栈顶地址存放到 SP 中(MSP)。
  2. 将 0x08000004 位置存放的向量地址装入 PC 程序计数器。

  CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。
在这里插入图片描述
  复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到 C 库中__main 函数。由 C 库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。

  对于启动文件来说 CPU 完成上面两个工作后就会跳到就会跳到 Reset_Handler 处执行复位中断服务程序,对于启动文件里的堆栈操作只是给编译器去看的,并不是在CPU中执行。
在这里插入图片描述

3 补充

  reset_handler 的实际地址是多少?它下面的一堆例如Nmi_handler地址又是多少呢?发生中断是怎么跑到这个地址的呢?下面挨个讲解。

1、我们可以通过反向来得知这些入口地址,查看工程下的map文件就可以看到了,这个地址跟keil里面设置的target->flash起始地址息息相关,实际上我们不太需要关心,让编译器分配,中断向量表放的就是他们的地址。

2、Cortex-M3内核则是固定了中断向量表的位置顺序而起始地址是可变化的。

3、进到C语言后会先配置NVIC,NVIC_SetVectorTable()里面可以配置中断向量表的起始地址和偏移,主要是告诉CPU该向量表是位于Flash还是Ram,偏移是多少。例如设置为位于Flash内,偏移就是烧入的程序地址,可在Keil target中设置。这样CPU就知道入口地址了。

4、发生中断后,CPU找到中断向量表地址,然后根据偏移(对号入座)再找到中断地址,这样就跳过去了。

http://www.dtcms.com/wzjs/124201.html

相关文章:

  • 最优做网站免费网站服务器安全软件下载
  • 网站seo相关设置优化seo网站诊断报告
  • 浦项建设公司员工网站广告营销包括哪些方面
  • 美国疫情最新消息今天又封了网络优化工程师骗局
  • 做网站还是app省钱凡科建站
  • 西苑做网站公司免费二级域名分发网站
  • 企业官方网站建设目的百度广告推广价格
  • 南昌市有帮做网站的吗免费推广产品平台有哪些
  • wordpress开启多站点功大数据获客系统
  • 做天猫网站价格表如何点击优化神马关键词排名
  • 贵州黔东南双控体系建设网站网络营销代运营外包公司
  • 做公司网站 烟台电脑网络优化软件
  • 企业网站建设如何去规划优化新十条
  • 网站建设找工作营销新闻
  • 浦东网站开发培训网络广告网站
  • 网站建设创新点百度权重怎么看
  • window服务器如何做网站访问网站结构有哪几种
  • 专门做防盗门的网站方象科技专注于什么领域
  • 有什么网站可以免费做四六级模拟题电商运营自学网站
  • 网站服务器购买价格快速收录工具
  • 网站建设技术网站建刷粉网站推广便宜
  • wordpress 企业主题下载长春网站优化咨询
  • 做微信的微网站费用多少免费b站推广软件
  • 成都网站建设 erp百度电话号码查询平台
  • cf辅助如何做代理拿网站推广app最快的方法
  • 广州一起做网店网站长沙网络推广外包费用
  • 有和wind一样做用网站seo入口
  • 小伙做钓鱼网站 背警方带走河南今日重大新闻
  • 常德网站建设哪家权威网址查询
  • 动态网站开发语言都有哪些网上营销网站