news 2026/7/25 0:54:04

为什么 DCD 分配向量表时,函数地址要加 1(LSB=1)?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么 DCD 分配向量表时,函数地址要加 1(LSB=1)?

难度:★★
本文首发于我的嵌入式技术号「OneChan」,未经授权禁止转载。


打开任何一个 Cortex-M3 的启动文件,查看向量表,你会看到类似这样的代码:

__Vectors DCD __initial_sp ; 0x00000000:栈顶 DCD Reset_Handler ; 0x00000004:复位入口 DCD NMI_Handler ; 0x00000008:NMI入口 DCD HardFault_Handler ; 0x0000000C:HardFault入口

第一项__initial_sp是栈顶地址,这个值是多少就是多少,不用改。

但后面的函数地址呢?

假设Reset_Handler实际位于 Flash 的0x08000100处。向量表里应该填什么?

如果你填DCD 0x08000100,程序一跑就 HardFault。

正确答案是填0x08000101——这个地址的 LSB(最低位)必须是 1。

为什么?

这是一个困扰过无数嵌入式工程师的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 0:40:15

猫抓视频嗅探工具:你的网页视频下载专家指南

猫抓视频嗅探工具:你的网页视频下载专家指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天,我们…

作者头像 李华
网站建设 2026/7/25 0:37:28

AI时代,公司到底该怎么招聘程序员?

如果未来大部分业务代码都由AI完成,那程序员该怎么招聘? 我自己理解是:未来面试的重点,大概率会从代码实现能力,逐渐转向系统设计能力AI协作能力。 这里说的系统设计,不是说画几张架构图那种,而…

作者头像 李华