关于STM32通用定时器外部时钟源模式1计数的问题

2019-07-20 02:40发布

void TIM3CH2_jishu_Config(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
TIM_SetAutoreload(TIM3,9);

TIM_TIxExternalClockConfig(TIM3,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);

// TIM3->CCMR1|=1<<8;
// TIM3->SMCR|=0x07;
// TIM3->SMCR|=0x60;
// TIM3->CCER|=1<<4;
// TIM3->CCER&=~(1<<5);
TIM_Cmd(TIM3,ENABLE);
TIM_ITConfig(TIM3,TIM_IT_CC2|TIM_IT_Update,ENABLE); //为什么是TIM_IT_CC2
}
这是我的配置代码,测试可以实现TIM3 CH2通道计数,库函数TIN_TIxExternalClockConfig()和我注释掉的代码是一个作用。
下面是摘自STM32中文手册264页
例如,要配置向上计数器在T12输入端的上升沿计数,使用下列步骤:
1. 配置TIMx_CCMR1寄存器CC2S=’01’,配置通道2检测TI2输入的上升沿
2. 配置TIMx_CCMR1寄存器的IC2F[3:0],选择输入滤波器带宽(如果不需要滤波器,保持
IC2F=0000) 
注:  捕获预分频器不用作触发,所以不需要对它进行配置
3. 配置TIMx_CCER寄存器的CC2P=’0’,选定上升沿极性
4. 配置TIMx_SMCR寄存器的SMS=’111’,选择定时器外部时钟模式1 
5. 配置TIMx_SMCR寄存器中的TS=’110’,选定TI2作为触发输入源
6. 设置TIMx_CR1寄存器的CEN=’1’,启动计数器
当上升沿出现在TI2,计数器计数一次,且TIF标志被设置。

现在我有两个问题不太明白
1.手册里说的是上升沿出现时TIF标志被置位,可是我的代码运行时却是CC2IF被置位也就是说进的中断和手册里说的不一样,我的进的是捕获中断,好奇怪

2.手册里没有说要把CCER寄存器的CC2E位置1,可是我发现不置1的话计不了数,CC2E位的作用是使能捕获,这里好像不需要捕获吧,好奇怪



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
javatar
1楼-- · 2019-07-20 17:41
为什么 我设置的 计数器 计数到最大值后 重新开始计数了,却没有进入中断
想问一下计数器记到最大值 需要进入的是哪个中断?标志位是什么
zkw
2楼-- · 2019-07-20 23:35
javatar 发表于 2016-10-18 08:59
为什么 我设置的 计数器 计数到最大值后 重新开始计数了,却没有进入中断
想问一下计数器记到最大值 需要 ...

你好,我遇到个和你相反的问题,你说的中断应该是更新中断。可是现在我达到计数最大次数后,进更新中断,就不在计数了,cnt停止计数,
金陵李木子
3楼-- · 2019-07-21 02:50
 精彩回答 2  元偷偷看……
cd370717721
4楼-- · 2019-07-21 03:09
 精彩回答 2  元偷偷看……
1547674987
5楼-- · 2019-07-21 06:22
楼主我问下定时器外部时钟源的频率有没有要求,我看IO输出频率最高是50M,输入频率有限制吗

一周热门 更多>