STM32 CCR寄存器

1. CCR寄存器在输入捕获模式下的特性

  • 只读属性
    当定时器通道配置为输入捕获模式(如捕获上升沿/下降沿)时,CCR寄存器硬件自动变为只读。软件写入操作无效,只能在捕获事件发生时由硬件自动更新为当前CNT值。
  • 硬件自动装载
    当指定的边沿(如PA8下降沿)触发捕获时,硬件自动将当前计数器值(CNT)写入CCR寄存器,并置位中断标志位(如TIM_IT_CC1)。

⚙️ ​2. 清零机制:硬件复位CNT计数器

用户代码中通过主从模式实现了间接清零效果:

cpp 复制代码
TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1);   // 选择PA8作为触发源
TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset); // 复位模式:PA8下降沿复位CNT
  • 工作流程
    1. PA8下降沿 → 触发硬件复位信号 → CNT计数器立即清零并重启计数。
    2. CCR1的值 :在中断中读取TIM1->CCR1时,实际是复位前CNT的值(即信号周期)。
    3. CCR2的值 :在PA9下降沿触发时,硬件捕获当前CNT值(即PA9与PA8的时间差)。

✅ ​关键点​:CCR寄存器存储的是捕获瞬间的CNT值,而CNT的清零由硬件自动完成,与CCR无关。


📥 ​3. 中断服务中的操作

在中断函数中,​只需读取CCR值并清除中断标志,无需操作CCR寄存器:

cpp 复制代码
void TIM1_CC_IRQHandler(void) {
    if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) {
        Cycle = TIM1->CCR1;  // 读取周期值(CNT复位前的值)
        TIM_ClearITPendingBit(TIM1, TIM_IT_CC1); // 清除中断标志
    }
    if (TIM_GetITStatus(TIM1, TIM_IT_CC2) != RESET) {
        Phase = TIM1->CCR2;  // 读取相位差(PA9下降沿时的CNT值)
        TIM_ClearITPendingBit(TIM1, TIM_IT_CC2); // 清除中断标志
    }
}
  • 中断标志的作用
    仅表示"捕获事件已发生",清除后等待下次事件。
  • CCR值更新
    下一次捕获事件发生时,硬件自动覆盖CCR寄存器的值。

⚠️ ​4. 常见误区与注意事项

误区 正确理解
手动写CCR1=0 ❌ 输入捕获模式下无效,CCR只读。
CNT复位=CCR清零 ❌ CNT清零由硬件完成,CCR存储的是复位前的值。
不清除中断标志 ❌ 导致中断持续触发,CPU被阻塞。

💎 ​总结

  • CCR清零机制 :通过TIM_SlaveMode_Reset在PA8下降沿硬件自动复位CNT,实现计数器的周期性清零。
  • CCR寄存器角色:只读存储单元,记录捕获瞬间的CNT值(周期或相位差)。
  • 软件操作 :仅需在中断中读取CCR值 + 清除中断标志,无需操作CCR寄存器。

🔍 ​验证方法 ​:在调试时监控TIM1->CNTTIM1->CCR1,可观察到PA8下降沿时CNT被清零,而CCR1的值保持不变直至下次捕获。

相关推荐
Dr.kangder1 小时前
嵌入式面试总结(十五)——异常处理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡3 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛139246256733 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun5 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界5 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
Lzh编程小栈6 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展
Rocktech_ruixun6 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
水果里面有苹果6 小时前
28-DRV8825PWPR步进电机驱动器
单片机
恒锐丰科技韩生7 小时前
率能 SS6625E|3.0~20V 单通道 H 桥直流电机驱动 SOP8 电子锁玩具机器人分享
嵌入式硬件·硬件工程
zlinear数据采集卡7 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#