UnDerKetzer 0 19 апреля, 2016 Опубликовано 19 апреля, 2016 (изменено) · Жалоба Итак, коротко: начал программировать 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 схалтурили. Изменено 19 апреля, 2016 пользователем UnDerKetzer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба :bb-offtopic: https://ru.wikipedia.org/wiki/Diff https://ru.wikipedia.org/wiki/WinMerge Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k000858 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба * @file stm32f334x8.h * @author MCD Application Team * @version V1.1.0 *[b] @date 12-Sept-2014[/b] рекомендую обновить CMSIS камня Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UnDerKetzer 0 20 апреля, 2016 Опубликовано 20 апреля, 2016 (изменено) · Жалоба bb-offtopic.gif https://ru.wikipedia.org/wiki/Diff https://ru.wikipedia.org/wiki/WinMerge Где вы видит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. Там то же самое. Изменено 20 апреля, 2016 пользователем UnDerKetzer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 21 апреля, 2016 Опубликовано 21 апреля, 2016 · Жалоба Где вы видитe оффтопик и причем тут ссылки на софт? Спасибо за рекламу, конечно, но я юзаю Beyond compare. Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу. Проще говоря: если уж решили помочь - надо было выкладывать diff-ы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UnDerKetzer 0 21 апреля, 2016 Опубликовано 21 апреля, 2016 · Жалоба Коллега вам тактично намекал, что необходимость срисовывать ваши (безусловно полезные) исправления со скриншотов практически полностью нивелирует их пользу. Проще говоря: если уж решили помочь - надо было выкладывать 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться