高级会员

- 积分
- 726
- 金钱
- 726
- 注册时间
- 2012-4-27
- 在线时间
- 189 小时
|
1金钱
STM32f072 TIM3CH2输入捕获进不了HAL_TIM_IC_CaptureCallback中断,不知道是什么原因?代码如下:
void TIM3_CH2_Cap_Init(uint32_t arr,uint16_t psc)
{
TIM_IC_InitTypeDef TIM3_CH2Config;
TIM3_Handler.Instance=TIM3;
TIM3_Handler.Init.Prescaler=71; //分频系数
TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //向上计数器
TIM3_Handler.Init.Period=0xFFFF; //自动装载值
TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频银子
HAL_TIM_IC_Init(&TIM3_Handler);//初始化输入捕获时基参数
TIM3_CH2Config.ICPolarity=TIM_INPUTCHANNELPOLARITY_FALLING;
TIM3_CH2Config.ICSelection=TIM_ICSELECTION_DIRECTTI;//映射到TI1上
TIM3_CH2Config.ICPrescaler=TIM_ICPSC_DIV1;
TIM3_CH2Config.ICFilter=0; //配置输入滤波器,不滤波
HAL_TIM_IC_ConfigChannel(&TIM3_Handler,&TIM3_CH2Config,TIM_CHANNEL_2);
__HAL_TIM_SET_CAPTUREPOLARITY(&TIM3_Handler, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_FALLING);
HAL_TIM_Base_Start_IT(&TIM3_Handler);
HAL_TIM_IC_Start(&TIM3_Handler,TIM_CHANNEL_2);
HAL_TIM_IC_Start_IT(&TIM3_Handler,TIM_CHANNEL_2);
HAL_NVIC_SetPriority(TIM3_IRQn,2,0); //设置中断优先级,抢占优先级2,子优先级0
HAL_NVIC_EnableIRQ(TIM3_IRQn);
}
void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
{
GPIO_InitTypeDef GPIO_Initure;
if(htim->Instance==TIM3)
{
__HAL_RCC_TIM3_CLK_ENABLE(); //使能TIM5时钟
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
GPIO_Initure.Pin=GPIO_PIN_7; //PA7
GPIO_Initure.Mode=GPIO_MODE_INPUT; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速
GPIO_Initure.Alternate = GPIO_AF1_TIM3;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
HAL_NVIC_SetPriority(TIM3_IRQn,2,0); //设置中断优先级,抢占优先级2,子优先级0
HAL_NVIC_EnableIRQ(TIM3_IRQn); //开启ITM5中断通道
}
}
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//捕获中断发生时执行
{
TIM_IC_InitTypeDef sConfigIC;
Gpio_EnableRunLED();
u16InputEndCounter = 120;
}
|
|