新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2016-8-31
- 在线时间
- 3 小时
|
1金钱
刚接触HAL库,写了一个增量编码器4倍频的程序,占用TIM2的CH1,CH2,可以采输入方波信号,可是,每有一个边沿就要触发中断,不能实现预设比如累计200个边沿触发一次中断。初始化代码如下:
// STM32L152
void HAL_TIM2_Init(void)
{
TIM_Encoder_InitTypeDef sConfig;
// TIM_MasterConfigTypeDef sMasterConfig;
htim2.State = HAL_TIM_STATE_RESET;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 190;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
// HAL_TIM_Base_Init(&htim2);
sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
sConfig.IC1Polarity = TIM_ICPOLARITY_FALLING;
sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
sConfig.IC1Filter = 6;
sConfig.IC2Polarity = TIM_ICPOLARITY_BOTHEDGE;
sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
sConfig.IC2Filter = 6;
if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK)
{
Error_Handler();
}
/*
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}*/
HAL_NVIC_Init();
}
HAL_TIM_Encoder_Start_IT(&htim2,TIM_CHANNEL_ALL);
开启中断。
请大神指点指点
|
|