Ещё более извращенский способ измерения скважности силами STM32 (когда совсем плохо с полноценными таймерами и остались только ущербные) - тупо по прерыванию на ноге (настроить на прерывания и по фронту и по спаду)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
if (GPIO_Pin == GPIO_PIN_х)
{
if (HAL_GPIO_ReadPin(GPIOх, GPIO_PIN_х)) // типа по фронту
{
Period=TIMх->CNT; //период предыдущего цикла
__HAL_TIM_SET_COUNTER(&htimХ, 0x00);
}
else // кроме фронта остались только спады
{
Duty=TIMх->CNT; //длительность текущего цикла
}
...не быстро, затратно, чувствительно к дребезгу, но на безрыбье, как говорится, сам раком встанешь...
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
if (GPIO_Pin == GPIO_PIN_х)
{
if (HAL_GPIO_ReadPin(GPIOх, GPIO_PIN_х)) // типа по фронту
{
Period=TIMх->CNT; //период предыдущего цикла
__HAL_TIM_SET_COUNTER(&htimХ, 0x00);
}
else // кроме фронта остались только спады
{
Duty=TIMх->CNT; //длительность текущего цикла
}
...не быстро, затратно, чувствительно к дребезгу, но на безрыбье, как говорится, сам раком встанешь...
Комментариев нет :
Отправить комментарий