STM32 - Как вызвать прерывание после определенного времени включения ШИМ?
Я новичок в микроконтроллерах ARM (STM32F411), и я пытался обойти периферийные устройства, используя библиотеку STAL HAL и STM32Cube.
Я уже настроил свою плату для использования некоторых периферийных устройств:
Таймер 2 для запуска прерывания с определенной частотой
Таймер 3 для запуска ШИМ на 3 каналах.
АЦП с 4 каналами, в режиме DMA, для чтения некоторых аналоговых входов.
Предположим теперь, что весь период ШИМ равен 100 мс, а его рабочий цикл равен 50% (50 мс ШИМ включен и 50 мс ШИМ выключен).
Я хотел бы вызвать прерывание после определенного времени ШИМ на уровне, скажем, 50% от него.
Следовательно, я хотел бы запустить прерывание на 25 мс, чтобы использовать АЦП для выборки его аналоговых входов.
Есть ли у вас какие-либо предложения о том, как я могу реализовать такое прерывание?
Заранее спасибо за вашу помощь!
1 ответ
Поскольку АЦП STM32F411 используется в обычном режиме (не в режиме с инжекцией), и только три канала из четырех используются для генерации ШИМ на таймере 3, четвертый канал может использоваться для запуска АЦП.
Следовательно, Таймер 3 настроен следующим образом:
- CH1 используется для режима сравнения выходов 0(TIM3-> CCMR1.OC1M = 0)
- CH2, CH3, CH4 используются для выходов ШИМ
Поэтому TIM3->CCR1 загружается до значения, которое дает 25% режима работы, затем он генерирует события TIM3_CH1, которые можно использовать для запуска начала преобразования АЦП на 25% от вашей временной базы TIM3.