论坛元老
 
- 积分
- 4562
- 金钱
- 4562
- 注册时间
- 2010-12-14
- 在线时间
- 32 小时
|
发表于 2013-5-15 14:37:38
|
显示全部楼层
楼主这个问题问得非常好。。。当时我也纠结了一下这个问题。。。
库函数只提供给了下面的函数输出比较极性函数:
void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
根据有效性判断这个函数的入口参数为:
#define TIM_OCPolarity_High ((uint16_t)0x0000)
#define TIM_OCPolarity_Low ((uint16_t)0x0002)
第二个参数取值判断:
#define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \
((POLARITY) == TIM_OCPolarity_Low))
查看了固件库V1.5版本,并没有输入捕获极性判断的函数,但是因为在两种模式下,都是配置同一个位,而且,
#define TIM_ICPolarity_Rising ((uint16_t)0x0000)
#define TIM_ICPolarity_Falling ((uint16_t)0x0002)
也就是说: TIM_OCPolarity_High = TIM_ICPolarity_Rising
TIM_OCPolarity_Low = TIM_ICPolarity_Falling
所以:TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);
和 TIM_OC1PolarityConfig(TIM5,TIM_OCPolarity_Low);
都是对寄存器CCER配置: TIM5->CCER|=1<<1;
不知道是我没找到还是就是这样,当时我看到这里,就直接这样用,使用起来肯定没有问题。因为入口参数的值也符合。。。。
不过名字就有点难看了。。。。。。
大家怎么理解???
库函数不是万能的,使用的时候能了解一下寄存器,对库函数使用还是大有帮助的。。。
|
|