中级会员
 
- 积分
- 423
- 金钱
- 423
- 注册时间
- 2017-4-1
- 在线时间
- 73 小时
|
发表于 2017-6-15 20:01:32
|
显示全部楼层
我也遇到一些问题,我没有硬件,用的是模拟仿真。通过模拟仿真,我发现手册上存在一些出错误。
一 外部时钟问题。手册上介绍如下
例如,要配置向上计数器在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’,启动计数器
实际上计数器不会计数,而必须使“CC2E=1”(非常重要),才能计数,如果推断设了CC2P=’1’是选定下降沿的话,实际上计数器是不计数的。
二 设置编码器的问题。手册介绍如下
● CC1S=’01’ (TIMx_CCMR1寄存器,IC1FP1映射到TI1)
● CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2)
● CC1P=’0’ (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1)
● CC2P=’0’ (TIMx_CCER寄存器,IC2FP2不反相,IC2FP2=TI2)
● SMS=’011’ (TIMx_SMCR寄存器,所有的输入均在上升沿和下降沿有效).
● CEN=’1’ (TIMx_CR1寄存器,计数器使能)
这里也存在错误,首先第二行的 CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2) 是错的,而应该是TIMx_CCMR1的 CC2S=’01’ ,而且,软件仿真也不计数,只要在启动定时器后再将SMS=’011’ 才可以正反向计数,但还是存在一个问题,就是首次计数时预分频器是有效的,一旦计数器开始计数,预分频器的值并未改变,但实际效果却是=0的1分频效果。
这些都是软件仿真发现的问题,具体硬件的执行情况我还不了解。
|
|