同一个定时器,输入捕获和输出比较只能使用一个
检测到电平跳变,执行后面的动作。当前CNT的值,锁存到CCR寄存器中
高频使用测频法,低频使用测周法,分界值呢?使用中界频率区分
测频法实现逻辑:
每来一个上升沿记一次X+=1, 使用定时器定时1S,到时间统计这个X值,就是频率,同时清零,再次计数,循环
测周法实现逻辑:
使用标准频率,统计两个上升沿中间有几个标准频率
PWMI
第一个通道使用上升沿触发来捕获周期
第二个通道使用下降沿触发,来捕获占空比,两个通道同时对一个引脚进行捕获
捕获电路:
每来一个触发信号。CNT的值。就会向CCR转运一次,同时发生一个捕获事件,
这个事件会在状态寄存器置标志位。同时也可产生中断
作用:CNT计数器由内部的标准时钟驱动,可以用来计量两个上沿的时间间隔(周期),每次捕获后要把CNT清零(可以使用主从触发模式,自动清零) 【测周法】
主从触发模式(完成CNT自动清零)
测周法逻辑图解
GPIO输入方波信号,经过滤波器和边缘检测,选择TI1FP1为上升沿触发,选择直连的通道,不分频, 当TI1FP1出现上升沿时,CNT的当前计数的值转运到CCR1,同时触发源选择,选中TI1FP1为触发信号,进入从模式的复位操作,触发CNT清零,先捕获再清零,这个顺序如何确定呢
这里从模式只能用通道1和通道2, 通道3、4 只能开启捕获中断,再中断中手动清零
使用时只需要读取CCR1就可以得到数据
//输入捕获通道配置 TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //选择4个通道的通道1 TIM_ICInitStructure.TIM_ICFilter = 0xF; //选择滤波器 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //触发极性 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; // 每隔几次有效一次,分频 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//配置数据选择器(直连还是交叉) TIM_ICInit(TIM3, &TIM_ICInitStructure); //触发源选择,配置TRGI的触发源为TI1FP1 TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); //配置从模式,当信号来时自动置零CNT TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
TI1FP1上升沿触发
TI1FP2下降沿触发,通过交叉去触发通道2的捕获(高电平)
CCR1从0开计数,计数到CCR2,下降沿触发,不会清零,到下一个上升沿CCR1数值为颜色线,CCR2数值为红色线,此刻占空比为红/蓝,同时可以清零CNT,开始下一轮计数
代码实现逻辑1:分为两个结构体分别配置实现
代码实现逻辑2:使用其内置的方法TIM_PWMIConfig(),自动把另外一个通道初始化为相反的配置(通道1,直连,上升沿 ==通道2,交叉,下降沿)
TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICFilter = 0xF; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);
uint32_t IC_GetDuty(void) { //高电平的计数值存在CCR2里,周期计数值存在CCR1里 return (TIM_GetCapture2(TIM3) + 1) * 100 / (TIM_GetCapture1(TIM3) + 1); }
代码都为测周法
PWM配置
先确定ARR(与分辨率相关),PSC决定频率,CCR决定占空比
1开始GPIO和TIM的RCC时钟
2GPIO初始化
3配置时基单元
4配置输入捕获单元
5选择从模式的触发源,并选择其执行的操作
6TIM_Cmd开启定时器
7直接赌气CCR寄存器,fc/n 得到频率
标签:触发,CNT,定时器,捕获,TIM,输入,清零,ICInitStructure From: https://www.cnblogs.com/liujinmeng/p/17643855.html