当前位置: 首页 > news >正文

STM32_bug总结(TIM定时中断进不去和只进1次)

一、定时中断进不去

  /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC_Init();
MX_TIM3_Init();
MX_TIM16_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
Remote_Init();

void Remote_Init(void) {// 启动TIM3的10us定时中断(需确保TIM3已配置为10us周期)
//	__HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);HAL_TIM_Base_Start_IT(&htim3);}

当时的情况就是Remote_Init();在MX_TIM3_Init();前面了,导致就是先开启中断,然后再配置定时器,那肯定是不对的。

二、定时中断只进1次

自动重装一定要开,然后先前的配置是PSC:80-1  ,Period:1-1

我的定时是10us,系统总频率是8KHZ,相对精度要低一点。像上图那样配置,就是PSC不能太小。可以将period(也就是ARR)变大一点。

  • Period=0 时,计数器从 0 开始计数,下一个时钟周期就会溢出(因为 0+1 超过 Period=0),导致 UIF 标志被瞬间置位。
  • 此时计数频率是 100kHz(10us 一次溢出),但实际中断处理需要时间(即使是空函数,也需要执行清除标志位的指令)。如果 UIF 标志被置位的速度超过了 ISR 清除标志位的速度,就会出现:
    • 第一个中断触发后,ISR 还没来得及清除 UIF 标志,下一次溢出又置位了 UIF,但此时 UIF 已经是 1,不会重复触发中断(STM32 定时器的 UIF 标志是 “电平触发”,需先清 0 才能再次触发)。
    • 最终表现为 “只进一次中断”(第一次中断后,UIF 未被及时清除,后续溢出无法触发新中断)。

http://www.lryc.cn/news/618498.html

相关文章:

  • 高性能web服务器Nginx
  • 【Android】【bug】Json解析错误Expected BEGIN_OBJECT but was STRING...
  • linux 开机进入initramfs无法开机
  • 跨设备开发不再难:HarmonyOS 分布式任务管理应用全解析
  • 《Fast Automatic White Balancing Method by Color Histogram Stretching》论文笔记
  • 让齿轮与斑马线共舞:汽车文化驿站及安全教育基地的展陈实践
  • 农业智慧大屏系统 - Flask + Vue实现
  • 安全合规5--终端安全检测和防御技术
  • Python初学者笔记第二十二期 -- (JSON数据解析)
  • 【智慧城市】2025年湖北大学暑期实训优秀作品(3):基于WebGIS的南京市古遗迹旅游管理系统
  • 机器学习 [白板推导](十)[马尔可夫链蒙特卡洛法]
  • js高阶-总结精华版
  • [ 数据结构 ] 时间和空间复杂度
  • 机器学习之TF-IDF文本关键词提取
  • 机器学习-决策树(上)
  • HCIP项目之OSPF综合实验
  • 《算法导论》第 21 章-用于不相交集合的数据结构
  • Linux下命名管道和共享内存
  • django celery 动态添加定时任务后不生效问题
  • 自建知识库,向量数据库 体系建设(二)之BERT 与.NET 8
  • “生成式UI革命”:Tambo AI如何让你的应用“开口说话、动手搭界面” | 全面深剖、案例实践与未来展望
  • 深度学习自动并行技术:突破计算瓶颈的智能调度艺术
  • 每日任务day0812:小小勇者成长记之挤牛奶
  • 13-docker的轻量级私有仓库之docker-registry
  • Dataset类案例 小土堆Pytorch入门视频记录
  • 【Vue.js】生产设备规划工具(报价单Word文档生成)【开发全流程】
  • [TryHackMe]Internal(hydra爆破+WordPress主题修改getshell+Chisel内网穿透)
  • 在Colab上复现LoRA相关论文实验的完整指南
  • 嵌入式硬件中CD4013芯片控制与实现
  • linux Phy驱动开发之mido总线介绍