你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
D.哒

D.哒

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
4 回答

STM8L的bootload中断向量表重映射

程序 STM8L UART
xmshao xmshao 回答时间: 2025-12-2 11:38

基于STM8芯片做IAP的话,通常使用两个独立的工程,即一个bootloader、一个用户APP功能代码。 芯片的复位矢量及中断程序入口从硬件层面来讲是固定而唯一的,就是0x8000开始的一个矢量表。不同中断在这个表中找到各自的响应入口地址。理解这点很关键。 现在芯片里要放两套工程,即BOOT和APP工程。APP代码往往放在别的地址区域,假设0x9000开始的地方,APP里通常有更多或更频繁的中断响应需求。对于这些中断,CPU是没法直接在APP区找到中断响应入口的,因为所有中断响应入口都在0x8000开始那块表格里。于是先在0x9000开始的地方先建立一个矢量表,矢量表的内容就是各个APP中断服务函数的地址。同时,把这个表格本身的地址依次对应地填到BOOT区的0x8000开始的矢量表中,换言之,0x8000表格里的内容,除了复位矢量外,其它都对应到APP区的矢量表地址。这就是所谓的矢量重定向。 基于这个设计,也就不难理解为什么BOOT区不能开启中断了。【当然,这个要求不是绝对的,但基于这个方案就不建议在BOOT区开启中断了】 具体到你当前的设计,BOOT工程的矢量表需要你依照APP的矢量表的地址自行改写,没有简单覆盖的说法,也没有复杂的操作,仿照例程写法即可。这个过程中,注意各个中断矢量编号别搞乱了,否则会出现张冠李戴的情形。比方说,别把TIMER中断入口矢量安排到UART头上去了。

赞0
3 回答

STM8L的block大小和数量

STM8L
D.哒 D.哒 回答时间: 2025-11-28 14:30

哦哦看到了,是128

赞0
D.哒 D.哒


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16