初级会员

- 积分
- 192
- 金钱
- 192
- 注册时间
- 2015-7-22
- 在线时间
- 126 小时
|

楼主 |
发表于 2017-10-14 11:20:55
|
显示全部楼层
贴上我设置TIM5编码器模式的代码
void TIM5_Encoder_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
TIM_DeInit(TIM5);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);//时间基数单位初始化为默认值。
TIM_TimeBaseStructure.TIM_Period = 14396;//3600*4 -4,计数器预装载值。完成一圈时的总计数值。
TIM_TimeBaseStructure.TIM_Prescaler = 0;//预分频系数为0,即不进行预分频
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分割 T_dts = T_ck_int
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);//使用编码器模式3,上升下降都计数(4倍频)
TIM_ICStructInit(&TIM_ICInitStructure);//将结构体中的内容缺省输入
TIM_ICInitStructure.TIM_ICFilter = 4;//选择输入比较滤波器
TIM_ICInit(TIM5, &TIM_ICInitStructure);
TIM5->CNT = 0;
TIM_Cmd(TIM5,ENABLE);
}
这样设置完TIM5->CNT的读取时间如何设置?还有读取TIM5->CNT的时候是否可以通过设置中断优先级之类的调整读取先后顺序? |
|