Slavka_online
@Slavka_online
Интересная личность

Реализация на stm32 работы дальномера HC-SR04 с помощью ШИМ?

Для работы дальномера нужно отправлять на одну из его ног сигнал длинной по времени 10мкс не чаще чем через каждые 50мс, вначале я реализовал эту работу просто по задержке на таймере
delay(50000);
GPIOB->ODR |= GPIO_ODR_ODR1;
delay(10);
GPIOB->ODR &= ~GPIO_ODR_ODR1;

Но для этого нужно постоянно вызывать функцию для измерения, я решил реализовать эту работу с помощью ШИМ
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->PSC = SystemCoreClock / 1000000 -1; //отстчет каждую 1мкс
TIM3->ARR = 60000; //период 60мс
TIM3->CCR4 = 10; //время импульса 10мкс
TIM3->CCMR2 |= TIM_CCMR2_OC4M_0 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2;
TIM3->CCER |= TIM_CCER_CC4E;
TIM3->CR1 |= TIM_CR1_CEN;

но возникла проблема, что он делает всего одно измерение и больше не хочет, только если перезапустить устройство или дебаг то он опять сделает одно измерение и постоянно только его и выводит. Я мог где-то накосячить в работе с ШИМ?
  • Вопрос задан
  • 1358 просмотров
Решения вопроса 1
@iv_k
а где у вас настройка режима GPIO на шим? GPIO_Mode_AF_PP
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы