关于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条回答
骑着蜗牛追梦想
1楼-- · 2019-07-20 02:47
好吧,这个问题已经解决了,烧到板子上发现其实这两个中断都能进,CC2E不置1也可以,只是下午在办公室仿真的 时候不行,板子上按手册来也可以。
mengxiao1980
2楼-- · 2019-07-20 03:03
回复【2楼】骑着蜗牛追梦想:
---------------------------------
亲,设置外部输入脉冲的检测边沿(上升沿、下降沿)、外部时钟模式1(上升沿驱动计数器)对最后输出的波形分别有什么影响?
xiaojiasb
3楼-- · 2019-07-20 06:50
 精彩回答 2  元偷偷看……
xiaojiasb
4楼-- · 2019-07-20 07:43
为什么要开IT_CC2中断啊?
Sunny^o^
5楼-- · 2019-07-20 12:34
 精彩回答 2  元偷偷看……
Sunny^o^
6楼-- · 2019-07-20 17:28
 精彩回答 2  元偷偷看……

一周热门 更多>