<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>中断 on 吾思 梦阁</title><link>https://wstk.pages.dev/tags/%E4%B8%AD%E6%96%AD/</link><description>Recent content from 吾思 梦阁</description><generator>Hugo</generator><language>zh-cn</language><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Wed, 14 Oct 2026 22:30:00 +0800</lastBuildDate><atom:link href="https://wstk.pages.dev/tags/%E4%B8%AD%E6%96%AD/index.xml" rel="self" type="application/rss+xml"/><item><title>STM32F4 配置中断</title><link>https://wstk.pages.dev/posts/stm32f4-interrupt/</link><pubDate>Wed, 14 Oct 2026 22:30:00 +0800</pubDate><guid>https://wstk.pages.dev/posts/stm32f4-interrupt/</guid><description>
<![CDATA[<h1>STM32F4 配置中断</h1><p>作者：WuSi（）</p>
        
          <p>以 <strong>STM32F411CEU6</strong> 与 <strong>标准外设库（Standard Peripheral Library，以下简称 SPL）</strong> 为例，完整实现「PA0 下降沿触发 → EXTI0 中断 → 翻转 PC13 电平」这一中断链路。文中代码取自实际工程 <code>STM32_SPL</code>（Keil 工程，启动文件 <code>startup_stm32f411xe.s</code>），可直接编译运行。</p>
<p><a
  href="/images/stm32/interrupt-path.webp"
  data-fancybox="gallery">
  <img
    class="lazyload"
    data-src="/images/stm32/interrupt-path.webp"
    data-sizes="auto"
    alt=""
  />
</a></p>
<p><em>图 1：外部中断的信号通路，以及各环节对应的寄存器。</em></p>
<p>该链路是单向的：<strong>引脚 → SYSCFG 选线 → EXTI 边沿触发 → NVIC 仲裁与使能 → ISR 执行</strong>。所谓配置中断，本质上是依次打通上述五个环节。</p>
<h2 id="一中断配置涉及的六个环节">
<a class="header-anchor" href="#%e4%b8%80%e4%b8%ad%e6%96%ad%e9%85%8d%e7%bd%ae%e6%b6%89%e5%8f%8a%e7%9a%84%e5%85%ad%e4%b8%aa%e7%8e%af%e8%8a%82"></a>
一、中断配置涉及的六个环节
</h2><table>
  <thead>
      <tr>
          <th>#</th>
          <th>环节</th>
          <th>关键技术点</th>
          <th>相关函数</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>时钟使能</td>
          <td>GPIO 挂载于 AHB1，SYSCFG 挂载于 APB2</td>
          <td><code>RCC_AHB1PeriphClockCmd</code>、<code>RCC_APB2PeriphClockCmd</code></td>
      </tr>
      <tr>
          <td>2</td>
          <td>GPIO 配置</td>
          <td>中断引脚须配置为输入，上下拉决定空闲电平</td>
          <td><code>GPIO_Init</code></td>
      </tr>
      <tr>
          <td>3</td>
          <td>线映射</td>
          <td>EXTI 仅有 16 条信号线，由 SYSCFG 指定其归属端口</td>
          <td><code>SYSCFG_EXTILineConfig</code></td>
      </tr>
      <tr>
          <td>4</td>
          <td>EXTI 配置</td>
          <td>选择信号线、触发边沿与中断模式</td>
          <td><code>EXTI_Init</code></td>
      </tr>
      <tr>
          <td>5</td>
          <td>NVIC 配置</td>
          <td>优先级分组、抢占/子优先级、通道使能</td>
          <td><code>NVIC_PriorityGroupConfig</code>、<code>NVIC_Init</code></td>
      </tr>
      <tr>
          <td>6</td>
          <td>中断服务程序</td>
          <td>函数名须与启动文件向量表一致，并清除挂起标志</td>
          <td><code>EXTI0_IRQHandler</code>、<code>EXTI_ClearITPendingBit</code></td>
      </tr>
  </tbody>
</table>
<p>任一环节缺失，结果只能是两种：<strong>中断始终不触发</strong>，或<strong>触发后无法正常返回</strong>。</p>
        
        <hr><p>本文2026-10-14首发于<a href='https://wstk.pages.dev/'>吾思 梦阁</a>，最后修改于2026-10-14</p>]]></description><category>STM32</category></item></channel></rss>