Макрос STM32F303 STM32CubeMX __HAL_TIM_SetCompare не существует

Я использую CubeMX для генерации кода для своего NucleoF303. Я немного запутался, как установить ширину импульса таймера в режиме PWM.

Ранее (используя F4) в файле stm32fxxx_hal_tim.h был макрос __HAL_TIM_SetCompare.

Но этого не существует. Я должен установить рабочий цикл каким-то другим способом?

Конечно, я могу просто напрямую установить регистры CCRx. Это работает. Но если я собираюсь использовать HAL с большим количеством абстракций, как, кажется, куб, я хотел бы, по крайней мере, знать, как они собираются его использовать. Даже если я этого не сделаю.

На самом деле нет никакого кода для этого вопроса. Но вот мой текущий коммит на случай, если он будет полезен: https://github.com/c-herring/Sumo2017_NucleoF303/tree/221dc57a305ccd64a4b98726df3cce02720b280b

Ваше здоровье!

Ну, вы можете проверить описание STM32CubeF3 HAL, но, насколько я знаю, для вас ничего нет, кроме перенастройки всего канала. __HAL_TIM_SetCompareв любом случае это просто устанавливает регистр CCRx напрямую. Так что ИМО сейчас в порядке.

Ответы (1)

Ранее (используя F4) в файле stm32fxxx_hal_tim.h был макрос __HAL_TIM_SetCompare.

Это действительно было некоторое время назад. Я нашел копию STM32CubeF4 V1.6.0 (выпущенную 28 мая 2015 г.), лежащую в старом каталоге проекта, и у нее уже есть следующее определение псевдонима.

Inc/Legacy/stm32_hal_legacy.h:#define __HAL_TIM_SetCompare            __HAL_TIM_SET_COMPARE

Копаем еще глубже, в описании 1.4.0 говорится

Пакет прошивки STM32CubeF4 V1.4.0 / 26 декабря 2014 г.

Основные изменения

Технический выпуск для исправления известных дефектов и реализации нескольких улучшений.

Макросы и литералы HAL переименованы для обеспечения совместимости между сериями STM32, обратная совместимость поддерживается благодаря новому добавленному файлу stm32_hal_legacy.h в /Inc/Legacy.

Таким образом, это должно быть время, когда __HAL_TIM_SetCompareустарело в пользу __HAL_TIM_SET_COMPARE.

Однако вы все равно должны получить определение псевдонима, потому что все заголовки HAL включают stm32_hal_legacy.h.