Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F334, проблема и решение, может кому пригодится.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
UnDerKetzer
Итак, коротко: начал программировать 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 схалтурили.
k000858
Код
* @file stm32f334x8.h
* @author MCD Application Team
* @version V1.1.0
*[b] @date 12-Sept-2014[/b]



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

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

Цитата(k000858 @ Apr 20 2016, 18:30) *
рекомендую обновить 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.

Там то же самое.
AHTOXA
Цитата(UnDerKetzer @ Apr 21 2016, 03:32) *
Где вы видитe оффтопик и причем тут ссылки на софт? Спасибо за рекламу, конечно, но я юзаю Beyond compare.

Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу.
Проще говоря: если уж решили помочь - надо было выкладывать diff-ы.
UnDerKetzer
Цитата(AHTOXA @ Apr 21 2016, 11:03) *
Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу.
Проще говоря: если уж решили помочь - надо было выкладывать 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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.