Embed Toolkit

中断服务程序模板生成器

为 STM32 各系列生成可编译的 ISR 框架代码,覆盖 EXTI / TIM / UART / ADC / DMA / SysTick,自动适配 HAL 宏差异,支持 FreeRTOS 任务通知与临界区模板。

选 STM32F4 + EXTI0 上升沿 + Task Notification,立刻得到带 __HAL_GPIO_EXTI_CLEAR_IT 与 vTaskNotifyGiveFromISR + portYIELD_FROM_ISR 的可编译骨架。

预设模板
一键加载常用 ISR 配置
基础配置
选择 MCU 系列与中断类型
任务通知(可选)
启用后在 ISR 中通过 FromISR 接口唤醒任务
临界区
生成 portENTER_CRITICAL_FROM_ISR / portEXIT_CRITICAL_FROM_ISR
生成代码
C / ISR
c
/* ==========================================================================
 * WARNINGS — 中断服务程序必读
 * --------------------------------------------------------------------------
 * ⚠️ 不要在 ISR 中调用 printf / fprintf / puts 等标准 IO(非异步,耗时巨大)
 * ⚠️ 不要调用阻塞 API(HAL_Delay、osDelay、semaphore 非 FromISR 版本等)
 * ⚠️ 不要使用 malloc / free / new / delete(非确定性、可能死锁)
 * ⚠️ 不要在 ISR 内做长循环 / 长延时,保持执行时间最短
 * ⚠️ 共享变量需加 volatile,或使用 FromISR 专用同步原语
 * ⚠️ FreeRTOS 中断优先级必须 ≥ configMAX_SYSCALL_INTERRUPT_PRIORITY
 * ========================================================================== */

/* EXTI Line 0 — 上升沿触发 (STM32F4) */
void EXTI0_IRQHandler(void)
{
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET) {
        /* 清除中断挂起标志 */
        __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);

        // TODO: your handler logic here

    }
}

向量表注册说明

请在启动文件(startup_stm32f4xxxx.s)确认 EXTI0_IRQHandler 已正确注册,或使用 CubeMX/HAL 自动生成的 stm32f4xx_it.c 中对应的向量条目。