中级会员
 
- 积分
- 435
- 金钱
- 435
- 注册时间
- 2014-8-16
- 在线时间
- 56 小时
|
5金钱
先po上红外实验的代码:
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; // 选择输入端 IC2映射到TIM5_CH2上
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频
TIM_ICInitStructure.TIM_ICFilter = 0x03;//IC4F=0011 配置输入滤波器 8个定时器时钟周期滤波
TIM_ICInit(TIM5, &TIM_ICInitStructure);//初始化定时器输入捕获通道
1.这个TIM_Channel_2 是 设置捕获比较寄存器CCMR1的 CCS2[1:0] 为 01: CC2通道被配置为输入, IC2映射在TI2上 吗??
我查了一下,TIM_CHannel_2 的值是0x0004
#define TIM_Channel_1 ((uint16_t)0x0000)
#define TIM_Channel_2 ((uint16_t)0x0004)
可是跟0x0004好像对不上号啊??
我又go to definition "TIM_ICInit()" 查找TIM_Channel 究竟是操作哪个寄存器,看到这句
/* Set or reset the CCxE Bit */
TIMx->CCER |= (uint16_t)(TIM_CCx << TIM_Channel);
是写入 TIMx->CCER 吗 ,还是我操作错了?
看了下 TIM_CCER好像也不对啊。。究竟是哪里出问题了
2.看了一下手册,好像TIM的一个通道可以选择两个捕获通道,例如TIM5_CH2,既可以选择IC1,又可以选择成IC2,这样理解正确吗?
为什么我把TIM_Channel_2改成TIM_CHannel_1就不行了呢??
疑惑好久啊。。求指教。。。。
|
最佳答案
查看完整内容[请看2#楼]
1. CCS2[1:0] 为 01:意思就是 CC2通道被配置为输入, IC2映射在TI2上 但你要明白IC2 和TI2的意思 : IC2是指输入捕获通道2,TI2是指信号输入通道(TIMx->CHx x=1,2,3,4)
2. TIM_Channel_x(x=1,2,3,4)只是一个标志 TIM_ICInit根据这个标志,用TIx_Config 和TIM_SetICxPrescaler(x=1,2,3,4) 配置相应的通道
3.  ...
|