PY32 定时器中断回调不执行的解决办法
一发现问题我在调试 PY32 的定时器中断时按 HAL 库的流程配好了定时器也写了回调函数但全速运行后回调就是不执行。voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim-InstanceTIM14){// 这里的代码从来不执行}}打断点发现 HAL 层的回调根本没被调用。二排查过程我先是检查了定时器分频、重装值、中断优先级都没问题。然后去查了一下发现根因在 startup 启动文件里PY32 的 startup 文件虽然标了TIM14_IRQHandler这个标签但它是一个weak 弱别名默认指向一个空函数。中断发生后 CPU 跳到了空函数里根本没进到 HAL 库。三解决方法手动实现TIM14_IRQHandler把中断重定向到HAL_TIM_IRQHandler。下面是一个完整的可运行例程#includepy32f0xx_hal.hTIM_HandleTypeDef htim14;volatileuint32_ttimer_irq_count0;staticvoidAPP_SystemClockConfig(void){RCC_OscInitTypeDef RCC_OscInitStruct{0};RCC_ClkInitTypeDef RCC_ClkInitStruct{0};RCC_OscInitStruct.OscillatorTypeRCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIStateRCC_HSI_ON;RCC_OscInitStruct.HSIDivRCC_HSI_DIV1;RCC_OscInitStruct.HSICalibrationValueRCC_HSICALIBRATION_24MHz;HAL_RCC_OscConfig(RCC_OscInitStruct);RCC_ClkInitStruct.ClockTypeRCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;RCC_ClkInitStruct.SYSCLKSourceRCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDividerRCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDividerRCC_HCLK_DIV1;HAL_RCC_ClockConfig(RCC_ClkInitStruct,FLASH_LATENCY_0);}staticvoidAPP_TimerInit(void){__HAL_RCC_TIM14_CLK_ENABLE();htim14.InstanceTIM14;htim14.Init.Prescaler23999;// 24MHz/(239991) 1KHzhtim14.Init.CounterModeTIM_COUNTERMODE_UP;htim14.Init.Period999;// 1KHz/1000 1Hz 中断htim14.Init.ClockDivisionTIM_CLOCKDIVISION_DIV1;htim14.Init.AutoReloadPreloadTIM_AUTORELOAD_PRELOAD_DISABLE;HAL_TIM_Base_Init(htim14);HAL_NVIC_SetPriority(TIM14_IRQn,1,0);HAL_NVIC_EnableIRQ(TIM14_IRQn);HAL_TIM_Base_Start_IT(htim14);}/* 关键手动实现 IRQHandler调用 HAL 库的处理函数 */voidTIM14_IRQHandler(void){HAL_TIM_IRQHandler(htim14);}/* 定时器中断回调 */voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim-InstanceTIM14){timer_irq_count;}}intmain(void){HAL_Init();APP_SystemClockConfig();APP_TimerInit();while(1){// 主循环timer_irq_count 每秒自增一次}}把上面这段代码复制到一个新工程添加 HAL 库后编译下载定时器中断就能正常工作了。四补充说明为什么 HAL 要用回调中断发生后CPU 直接跳到向量表里的函数。但 HAL 库不知道用户想在这个中断里做什么事所以它设计了两层 weak 定义TIM14_IRQHandler (weak) ← startup 给的默认空函数 ↓ 你实现了就覆盖 你写的 TIM14_IRQHandler → HAL_TIM_IRQHandler() ← HAL 帮你清标志 → HAL_TIM_PeriodElapsedCallback (weak) ← 你实现的回调HAL 负责通用操作判断哪个中断源、清标志用户只需实现回调。互不干扰。也可以不用回调直接在中断函数里处理所有事结果一样voidTIM14_IRQHandler(void){// 在这里判断标志、清标志、做事不经过 HAL}两种写法选一种即可没有强制。五总结PY32 的 startup 文件只给了中断入口标签默认是弱定义。想让 HAL 库的中断回调生效必须自己实现 IRQHandler 并调用对应的 HAL 处理函数。同理串口中断、外部中断 etc. 都需要手动重定向例如voidUSART2_IRQHandler(void){HAL_UART_IRQHandler(huart2);}voidEXTI0_1_IRQHandler(void){HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);}这个步骤容易忽略希望能帮到遇到同样问题的人。如果有纰漏之处欢迎指正。

相关新闻

【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

前言 在机器学习和数据科学的面试或实战中,我们常常听到“向量空间”、“降维”、“基向量”等词汇。很多初学者在死记硬背线性代数的定理时,往往忽略了一个关键事实:线性代数是计算机处理高维数据的底层语言。 今天,我们就深入剖析线性代数中 “向量组等价” 与核心矩阵…

2026/7/22 22:20:10 阅读更多 →
【DEIM 创新改进】TCSVT 2026顶刊 | 独家首发创新、Conv卷积改进篇 | 引入FRConv模糊残差卷积,自适应增强与目标相关的邻域信息,助力遥感目标检测、小目标检测任务,有效涨点

【DEIM 创新改进】TCSVT 2026顶刊 | 独家首发创新、Conv卷积改进篇 | 引入FRConv模糊残差卷积,自适应增强与目标相关的邻域信息,助力遥感目标检测、小目标检测任务,有效涨点

一、本文介绍 🔥本文给大家介绍使用 FRConv模糊残差卷积 改进 DEIM 网络模型,FRConv通过逐点卷积和深度卷积提取目标边缘、纹理与局部结构,并利用基于空间距离和特征相似度的模糊加权机制,自适应增强与目标相关的邻域信息、抑制复杂背景、噪声及异常特征,再借助残差连接…

2026/7/22 22:20:10 阅读更多 →
AnimationController核心概念:Flutter在鸿蒙平台控制动画生命周期

AnimationController核心概念:Flutter在鸿蒙平台控制动画生命周期

作者:付文龙(红目香薰) 仓库地址:https://gitcode.com/feng8403000/FlutterfromBeginnertoAdvancedForHarmonyOS.git 联系邮箱:372699828qq.com 概述 在Flutter中,AnimationController是动画系统的核心组…

2026/7/22 22:19:10 阅读更多 →

最新新闻

EntryAbility 全局初始化 + 网络请求 HttpUtil 完整源码

EntryAbility 全局初始化 + 网络请求 HttpUtil 完整源码

一、EntryAbility 全局统一初始化(项目启动唯一入口)etsimport UIAbility from ohos.app.ability.UIAbility; import hilog from ohos.hilog; import GlobalStore from ohos:har_base/utils/store; import FileUtil from ohos:har_base/utils/file_util;…

2026/7/22 23:06:00 阅读更多 →
5分钟掌握CosyVoice:免费AI语音生成神器实战指南

5分钟掌握CosyVoice:免费AI语音生成神器实战指南

5分钟掌握CosyVoice:免费AI语音生成神器实战指南 【免费下载链接】CosyVoice Multi-lingual large voice generation model, providing inference, training and deployment full-stack ability. 项目地址: https://gitcode.com/gh_mirrors/cos/CosyVoice 还…

2026/7/22 23:06:00 阅读更多 →
速卖通违反欧盟《数字服务法》,被处 5.5 亿欧元罚款!需在 2026 年 10 月 20 日前整改

速卖通违反欧盟《数字服务法》,被处 5.5 亿欧元罚款!需在 2026 年 10 月 20 日前整改

速卖通因产品管控不力领欧盟巨额罚单速卖通(AliExpress)因未能阻止非法、不安全或假冒产品在其电商平台上销售,违反了欧洲《数字服务法》(DSA)规定,被处以 5.5 亿欧元(约合 6.29 亿美元&#xf…

2026/7/22 23:06:00 阅读更多 →
OpenHarmony API23 四层HAR+HSP分层架构实战

OpenHarmony API23 四层HAR+HSP分层架构实战

一、前言:为什么不要再写单模块鸿蒙项目?很多鸿蒙初学者、在校毕设项目、小型Demo 全部采用 单 Entry 单体开发,看似写得快,实则隐患极大:所有工具、页面、业务逻辑全部堆在 entry,代码极度混乱无分层、无规…

2026/7/22 23:06:00 阅读更多 →
边缘AI主控测评:飞凌RV1126B核心板凭什么更稳更省

边缘AI主控测评:飞凌RV1126B核心板凭什么更稳更省

边缘AI落地加速背景下,核心板作为设备“大脑”,直接决定项目成败。对于中小企业和项目方而言,选型核心是在千元内同价位区间,找到“稳定可靠、成本可控”的高性价比方案。目前千元内边缘AI核心板市场竞争激烈,飞凌嵌入…

2026/7/22 23:06:00 阅读更多 →
Applio语音克隆完整指南:5分钟上手专业级声音转换

Applio语音克隆完整指南:5分钟上手专业级声音转换

Applio语音克隆完整指南:5分钟上手专业级声音转换 【免费下载链接】Applio A simple, high-quality voice conversion tool focused on ease of use and performance. 项目地址: https://gitcode.com/gh_mirrors/ap/Applio 如果你正在寻找一款简单易用、功能…

2026/7/22 23:05:00 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻