新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2020-3-13
- 在线时间
- 0 小时
|
1金钱
//IO口配置
gpio_initstruct.Pin = GPIO_PIN_2;
gpio_initstruct.Mode = GPIO_MODE_AF_PP;
gpio_initstruct.Pull = GPIO_NOPULL;
gpio_initstruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
gpio_initstruct.Alternate = GPIO_AF3_TIM9;
HAL_GPIO_Init(GPIOA, &gpio_initstruct);
//定时器配置
htim9.Instance = TIM9;
htim9.Init.Prescaler =0;//不分配
htim9.Init.CounterMode = TIM_COUNTERMODE_UP;
htim9.Init.Period = 65535; //0-65535
htim9.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim9.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_IC_Init(&htim9) != HAL_OK)
{
return 1;
}
sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;//
sConfigIC.ICFilter = 0;//不滤波
if (HAL_TIM_IC_ConfigChannel(&htim9, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
{
return 1;
}
如何改进呢,需要捕获的信号最大可达到1m?
测试过程捕获产生中断时HAL_TIM_ReadCapturedValue读捕获值,两次捕获高电平差用来计算频率,大于500k信号时误差太大
|
|