_Pasha 0 6 ноября, 2015 Опубликовано 6 ноября, 2015 · Жалоба "В свете ж вот какое чудо" stm32plus Чувак проделал огромную работу. Выглядит прям не либа, а целый фреймворк. Сам не пробовал. тоже... ткнулся наугад /** * @brief Deinitializes the SDIO peripheral registers to their default reset values. * @param None * @retval None */ void SDIO_DeInit(void) { SDIO->POWER = 0x00000000; SDIO->CLKCR = 0x00000000; SDIO->ARG = 0x00000000; SDIO->CMD = 0x00000000; SDIO->DTIMER = 0x00000000; SDIO->DLEN = 0x00000000; SDIO->DCTRL = 0x00000000; SDIO->ICR = 0x00C007FF; SDIO->MASK = 0x00000000; } и сразу же вопрос: а нафига, если есть RCC? :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drozel 0 6 ноября, 2015 Опубликовано 6 ноября, 2015 (изменено) · Жалоба Хотя гораздо интереснее бы было этого же добится в основной ветке с помощью директив условной компиляции (#IFDEF и прочее). Сейчас не могу найти док, но как то читал code style разрабов, они там довольно резко написали, что-то типа "мы используем GCC, если вам нравится другой тулчейн, мучайтесь с портированием сами, мы таким не страдаем". Что, в целом, разумно, ибо: 1) пора переходить на ГЦЦ 2) если неохота, можно собрать либу в объектник с помощью ГЦЦ и цеплять тем же ИАРом. Я, пожалуй, в свободное время так и поступлю Изменено 6 ноября, 2015 пользователем drozel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 6 ноября, 2015 Опубликовано 6 ноября, 2015 · Жалоба непонятно к чему эти рассуждения. там нет шаблонов готовых проектов Кейл. только и всего. Т.е. чтобы собрать либу (именно либу а не таскать с собой килограмм любимых исходников) - нужно притащить в кейловский проект все что нужно выясняется что же нужно командой make -n мэйк вывалит те команды, которые он собирается выполнять. Оттуда понять, какие файлы куда и сделать один большой мультитаргет, потом собрать все что необходимо в либу - и энджой. никаких там мифических директив GCC и в помине нету. и непортируемых фишек а-ля winAVR там не найдете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drozel 0 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба никаких там мифических директив GCC и в помине нету. Возможно, __attribute__ packed(4) и множество других - и не директивы GCC, но в ИАРе они не компилируются Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба Возможно, __attribute__ packed(4) и множество других - и не директивы GCC, но в ИАРе они не компилируются Где там packed(4)? Вот grep'ом прошелся - нигде и близко такого нету __attribute__((packed)) понимается кейлом с полуслова. И при чем тут ИАР если речь про кейл. А вот про always_inline - кейл его просто игнорирует Вот асмовые вставки надо пересмотреть, то да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drozel 0 7 ноября, 2015 Опубликовано 7 ноября, 2015 (изменено) · Жалоба Где там packed(4)? Вот grep'ом прошелся - нигде и близко такого нету __attribute__((packed)) понимается кейлом с полуслова. И при чем тут ИАР если речь про кейл. А вот про always_inline - кейл его просто игнорирует Вот асмовые вставки надо пересмотреть, то да. Ну мы немного про разное думаем) Я в ответ на это Странно, что никто еще не сделал расширение для поддержки чего-нибудь еще кроме gcc в рамках исходников проекта начал мыслить в сторону ИАРа, которым пользуюсь, а вы в сторону кейла, хотя, не спорю, конкретики было больше про кейл. Кстати, не знал, что он понимает __attribute. А packed(4) был в одной из вложенных структур в USB Не скажете, что за стиль писать объявлять структуры без typedef у разрабов? Есть какие-то подводные камни?[/code] Изменено 7 ноября, 2015 пользователем drozel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба Не скажете, что за стиль писать объявлять структуры без typedef у разрабов? Есть какие-то подводные камни?[/code] Это же плюсы, там структура это тоже класс, никаких typedef не надо, имя структуры можно сразу использовать для объявления переменных и без слова struct. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drozel 0 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба Это же плюсы, там структура это тоже класс, никаких typedef не надо, имя структуры можно сразу использовать для объявления переменных и без слова struct. Поясните? Вроде, объявлять без struct можно как раз тогда, когда определена она как typedef struct { .... }myType_t; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба Поясните? Вроде, объявлять без struct можно как раз тогда, когда определена она как Писал на эту тему недавно: http://electronix.ru/forum/index.php?s=&am...t&p=1326899 Ваш пример на C++ можно переписать так: struct myType_t{ .... }; //теперь myType_t является именем нового пользовательского типа (класса) // можно объявить переменную такого типа: myType_t myVar; //или указатель на неё myType_t *myPtr = &myVar; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба Это же плюсы, там структура это тоже класс, никаких typedef не надо, имя структуры можно сразу использовать для объявления переменных и без слова struct. libopencm3 - это си без плюсов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 7 ноября, 2015 Опубликовано 7 ноября, 2015 · Жалоба libopencm3 - это си без плюсов. это я с stm32plus перепутал, а в libopencm3 (посмотрел сейчас) конструкция typedef struct присутствует в изрядных количествах. По большому счёту, объявления typedef struct не являются совершенно необходимыми, можно и без них обойтись, просто писанины чуть больше. Если где-то их не оказалось - это не криминал, тут больше вопрос вопрос о читабельности и единстве стиля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 9 ноября, 2015 Опубликовано 9 ноября, 2015 · Жалоба посмотрел исходники, не впечатлило Я и не агитирую за неё, просто _моему_ глазу приятнее смотрится, чем куб и иже с ним (структурированность и кодестайл). Многое я бы реализовал иначе. Что касается УАРТа, то у меня он свой собственный без каких бы то ни было библиотек, так что ничем помочь не могу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 17 ноября, 2016 Опубликовано 17 ноября, 2016 · Жалоба Подскажите бывалые, а есть возможность использовать libopencm3 в проекте уже напиленом на HAL, с keil-RTX? сосуществование возможно или вообще никак? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rudy_b 4 18 ноября, 2016 Опубликовано 18 ноября, 2016 · Жалоба Извиняюсь за вопрос не по теме (ну не совсем по теме), но тут много писали про работу с UART. Понятно, что передавать проще всего через DMA. А вот с приемом через DMA - проблема, пока решаю ее приемом по прерываниям, что накладно. Если принимать по DMA, то что будет с ошибками? Что сделает DMA при наличии ошибок типа parity error или frame error? Положит в буфер фуфловое значение или даст ошибку DMA (что неправильно) или пропустит этот байт? Как это определить по данным в буфере DMA или FIFO? Прерывания приемника по ошибке можно сделать, но, при работе по DMA, это мало что даст. Вот если бы в буфер писался бы еще и байт статуса... В описаниях STM32(f207) не нашел подробностей, может кто подскажет как решается эта проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 18 ноября, 2016 Опубликовано 18 ноября, 2016 · Жалоба Какой смысл работать с UART по DMA, если там скорости никакущие? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться