Перейти к содержанию
    

STM32F334, проблема и решение, может кому пригодится.

Итак, коротко: начал программировать STM32F334 (без использования HAL, SPL или что там у них сейчас?..), наткнулся на неприятность: CMSIS имеет некорректное описание подмодулей таймера HRTIM.

Версия либы

* @file stm32f334x8.h

* @author MCD Application Team

* @version V1.1.0

* @date 12-Sept-2014

 

Суть проблемы.

Регистры таймера объединены в три подструктуры:

HRTIM_Master_TypeDef

HRTIM_Timerx_TypeDef

HRTIM_Common_TypeDef

Для HRTIM1_COMMON указано корректное смещение, структура HRTIM_Common_TypeDef - тут вопросов нет, все прекрасно адресуется.

Для подтаймеров HRTIM1_TIMA..E также указаны корректные смещения, но! указана структура HRTIM_TIM_TypeDef, которая не задефайнена. Видимо, ребята из ST просто выдернули это из другого кода.

Для мастер-таймера еще круче ситуация: его даже не задефайнили и не указали смещение (хотя оно и нулевое, но все-таки, должно быть явно описано).

Скриншоты 1 и 2 поясняют картинку.

 

Решение.

Привожу изменения в коде, может кому-нибудь пригодится (см скриншоты, желтым помечены правки).

Добавилась строка 816 - явно задано смещение модуля Master.

Добавилась строка 860 - дефайн подмодуля Master.

Изменились строки 861..865 - прописаны корректные имена структуры.

См. скриншоты 11 и 22.

 

В общем, ребята из ST схалтурили.

post-35763-1461080533_thumb.png

post-35763-1461080536_thumb.png

post-35763-1461080539_thumb.png

post-35763-1461080541_thumb.png

Изменено пользователем UnDerKetzer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

* @file stm32f334x8.h
* @author MCD Application Team
* @version V1.1.0
*[b] @date 12-Sept-2014[/b]

 

 

рекомендую обновить CMSIS камня

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где вы видитe оффтопик и причем тут ссылки на софт? Спасибо за рекламу, конечно, но я юзаю Beyond compare.

 

рекомендую обновить CMSIS камня

Обновил:

* @file stm32f334x8.h

* @author MCD Application Team

* @version V2.2.0

* @date 13-November-2015

* @brief CMSIS STM32F334x8 Devices Peripheral Access Layer Header File.

 

Там то же самое.

 

Изменено пользователем UnDerKetzer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где вы видитe оффтопик и причем тут ссылки на софт? Спасибо за рекламу, конечно, но я юзаю Beyond compare.

Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу.

Проще говоря: если уж решили помочь - надо было выкладывать diff-ы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу.

Проще говоря: если уж решили помочь - надо было выкладывать diff-ы.

Оу, теперь понял.

Не предполагал, что кто-то будет копировать исходник, тут жеж сама идея важна.

Но если кому-то действительно это может помочь...

Кстати, оффтопик, но в этом файле также дописаны дефайны для альтернативных функций GPIO:

............................
    #define GPIO_AFRL_AFRL0_11           ((uint32_t)0x0000000B)
    #define GPIO_AFRL_AFRL0_12           ((uint32_t)0x0000000C)
    #define GPIO_AFRL_AFRL0_13           ((uint32_t)0x0000000D)
    #define GPIO_AFRL_AFRL0_14           ((uint32_t)0x0000000E)
#define GPIO_AFRL_AFRL1            ((uint32_t)0x000000F0)
    #define GPIO_AFRL_AFRL1_1            ((uint32_t)0x00000010)
    #define GPIO_AFRL_AFRL1_2            ((uint32_t)0x00000020)
    #define GPIO_AFRL_AFRL1_3            ((uint32_t)0x00000030)
    #define GPIO_AFRL_AFRL1_4            ((uint32_t)0x00000040)
............................

 

Т.о. теперь прописывать альтернативные функции гораздо проще, например

 

GPIOB->AFR[0]    |= (GPIO_AFRL_AFRL6_13); // Set AF13

stm32f334x8.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...