реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F334, проблема и решение, может кому пригодится., Ошибка в описании таймера HRTIM в CMSIS
UnDerKetzer
сообщение Apr 19 2016, 15:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 10-03-08
Из: Helsinki
Пользователь №: 35 763



Итак, коротко: начал программировать 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 схалтурили.

Сообщение отредактировал UnDerKetzer - Apr 19 2016, 15:47
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

 
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 20 2016, 06:28
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



bb-offtopic.gif
https://ru.wikipedia.org/wiki/Diff
https://ru.wikipedia.org/wiki/WinMerge


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
k000858
сообщение Apr 20 2016, 12:30
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



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



рекомендую обновить CMSIS камня
Go to the top of the page
 
+Quote Post
UnDerKetzer
сообщение Apr 20 2016, 22:32
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 10-03-08
Из: Helsinki
Пользователь №: 35 763



Цитата

Где вы видит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.

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


Сообщение отредактировал UnDerKetzer - Apr 20 2016, 22:34
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 21 2016, 04:03
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
UnDerKetzer
сообщение Apr 21 2016, 17:35
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 10-03-08
Из: Helsinki
Пользователь №: 35 763



Цитата(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

Прикрепленные файлы
Прикрепленный файл  stm32f334x8.rar ( 48.98 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016