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

 
 
26 страниц V  « < 17 18 19 20 21 > »   
Reply to this topicStart new topic
> Библиотеки для STM32
AHTOXA
сообщение Apr 20 2017, 06:37
Сообщение #271


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

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



Цитата(Forger @ Apr 20 2017, 11:22) *
Все было указано выше. Читайте внимательнее.

То есть, вы продолжаете утверждать, что int может быть беззнаковым?! Жесть.


Цитата(juvf @ Apr 20 2017, 11:24) *
где определение шаблона Pin<>? ещё 100500 строк!!!

А где определение GPIOA? Ещё 100500 строк! sm.gif
Мы же говорим про использование. То есть, библиотеки считаются уже написанными и оттестированными. Это, кстати, тоже большой их плюс.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 20 2017, 06:43
Сообщение #272


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AHTOXA @ Apr 20 2017, 08:37) *
То есть, вы продолжаете утверждать, что int может быть беззнаковым?! Жесть.

char - может быть sm.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 20 2017, 06:55
Сообщение #273


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AHTOXA @ Apr 20 2017, 09:37) *
То есть, вы продолжаете утверждать, что int может быть беззнаковым?! Жесть.

В некоторых компиляторах, особенно под мелкие 8-битные мк может быть все что угодно.
Я уже наступал на грабли, где по-умолчанию char - знаковый.
Дабы избежать этого, везде писал явно unsigned/signed.
Потом перешел на свои типы (привел выше).
Мне так стало гораздо удобнее, меньше головной боли и ненужных переживаний.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 20 2017, 07:00
Сообщение #274


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AHTOXA @ Apr 20 2017, 11:37) *
Мы же говорим про использование. То есть, библиотеки считаются уже написанными и оттестированными. Это, кстати, тоже большой их плюс.
ну вот у меня новая задача. stm32l052. от чего я эту тему и открыл. Нужно быстро код написать....
цепляю #include "stm32l052xx.h"
написал макрос, т.е. написал определение

#define csOn() (GPIOA->BSRR = (1<<4))
использую
csOn();
если нет stm32l052xx.h - можно заглянуть в даташит (а в него всё равно глядеть) и написать
#define csOn() (*(uint32_t*)0x1234'5678 = (1<<4))
не камельфо, но всёже... один раз определил и забыл.


Но, есть замечательный тру с++ с ооп. чо как лох буду макросы. Нада же легкочитаемый код....
можно через Pin<>. Где его взять? вместе с stm32l052xx.h он не поставляется. писать свой? отлаживать? скаченный с гитхаба для Ф4 серии. а если вообще решили на msp430? Я говорю - это 100500 строк кода. Причем, в этом pin используется всё тотже stm32l052xx.h.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 20 2017, 07:01
Сообщение #275


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

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



Цитата(Forger @ Apr 20 2017, 11:55) *
В некоторых компиляторах, особенно под мелкие 8-битные мк может быть все что угодно.
Я уже наступал на грабли, где по-умолчанию char - знаковый.

Вы не сворачивайте на char. Вы про int скажите.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 20 2017, 07:14
Сообщение #276


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Apr 20 2017, 09:36) *
ну вы не видите, что ваш тогл, при "одновременном" переключении разных бит, в одном порте из разных потоков не будет работать?

Я никогда не обращаюсь к одним и тем же пинам из разных потоков, в моем коде это невозможно, т.к. каждый пин - не глобальный ни разу, а является приватным полем какого-нить класса.
У меня совсем иной принцип построения кода - ни одной глобальной переменной/объекта, даже Pin чей-то.
Более того, работа с пинами скрыта внутри реализации какого-то из модулей и модуль сам решает, что и как у него взять/дать.
Это дает возможность прямо в модуле реализовывать механизмы блокировки (мьютексы), чтобы избежать конкуррентного доступа к каким-то объектам.
Поймите, я приучил себя думать иначе, поэтому повторюсь еще раз для потомственных "танкистов": каждая сущность кому-то принадлежит, не НИ ОДНОГО ГЛОБАЛЬНОГО ОБЪЕКТА.

Цитата
Т.е. вы не оспариваете что у вас мина в коде, вам предлагают её разминировать, на что ответ - это придирки. )))

У меня эта "мина" никогда не сработает, проекты изначально построены иначе. Поэтому подобные "затычки" просто не нужны.
Это позволяет строить код более свободно, не ломая голову над такими граблями.

Цитата
225 постов.... не увидел где была ссылка или упоминание на стандарт, в котором int беззнаковый.

Стандарт тут ни при чем, я говорю про особенности некоторых компиляторов под некоторые МК. Я сталкивался с таким.
В частности под PIC-контроллеры: то ли PICC-компилятор, то ли MCC, уже не упомню где именно.
Поэтому проверять так это или нет в новом компиляторе не хочу, мне проще прикрутить несколько строк, которые ЯВНО тайпдефят эти типы на привычные МНЕ.

Цитата(AHTOXA @ Apr 20 2017, 10:01) *
Вы не сворачивайте на char. Вы про int скажите.

Не скажу, давно это было, не помню, где именно. Но почему-то запомнилось что int там был 16-битный.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 20 2017, 07:14
Сообщение #277


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

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



Цитата(juvf @ Apr 20 2017, 12:00) *
ну вот у меня новая задача. stm32l052. от чего я эту тему и открыл. Нужно быстро код написать....

Ну, выбор, конечно, за вами. Вы каждый раз готовы писать
GPIOA->MODER = (GPIOA->MODER & ~(3UL << pin * 2)) | (2 << pin * 2);
и лазать в даташит на каждом проекте. (Или, может быть, вы способны выучить все режимы ножек и перечень альтернативных функций для каждой ножки - тогда не нужно лазать). Я лично потратил некоторое время на написание модуля, который сам знает про все эти подробности, и теперь пишу CS::Mode(INPUT_PULLUP) и не парюсь.
Я думаю, что в долгосрочной перспективе мой подход лучше. Но выбор, естественно, за вами.

ЗЫ. Для L0/F0 серии тоже есть pin.h sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 20 2017, 07:17
Сообщение #278


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 20 2017, 11:55) *
Я уже наступал на грабли, где по-умолчанию char - знаковый.
По стандарту char/int/long - без указания знаковости считаются знаковые. Во всех компиляторах. Нет других компиляторов. По крайней мере я не встерчал. если встретите - маякните, поизучаю.

что касательно этих граблей.... можно дать ключ компилятору, считать char без явного указания unsigned/signed как беззнаковый. у int/short/long это не поменять, только у char.
я char использую всегда как занковый, как стандартный дефолтный. ибо если собрать на другой платформе без ключа - то упс!!! Но, в идэ, например в IAR в гуях есть галочка "char как беззнаковый". При создании нового проекта, эта галочка установлена, т.е. иар в тихушку просовывает этот ключ компиялтору меняя у чара знак. Я тоже на это наступал.... решил проблему отказом от char взамен на uint8_t в качестве байтовой переменной. или же всегда указываю у чара явно знаковость. а если мне нужно хранить текст, например char *p = "hello world"; - тут без разницы - есть знак или нет, тут можно упустить знак.

Цитата
Дабы избежать этого, везде писал явно unsigned/signed.
Для чара это тру!!!
из-за таких тихих подстав от IDE у некоторых складывается впечатление, что char по дефолту беззнаковый.


Цитата(AHTOXA @ Apr 20 2017, 12:14) *
ЗЫ. Для L0/F0 серии тоже есть pin.h sm.gif
Спасибо большое!!!! А есть для f1 и вообще... огласите полный список? )))) может и для авр кто написал такие классы? ))
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 20 2017, 07:17
Сообщение #279


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

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



Цитата(Forger @ Apr 20 2017, 12:14) *
Не скажу, давно это было, не помню, где именно. Но почему-то запомнилось что int там был 16-битный.

Беззнаковый?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 20 2017, 07:21
Сообщение #280


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 20 2017, 12:14) *
Я никогда не обращаюсь к одним и тем же пинам из разных потоков, в моем коде это невозможно, т.к. каждый пин - не глобальный ни разу, а является приватным полем какого-нить класса.
пишете мне Читайте внимательней, а сами невнимательны wink.gif. Я писал
Цитата
ну вы не видите, что ваш тогл, при "одновременном" переключении разных бит, в одном порте из разных потоков не будет работать?
давайте перефразирую

Цитата
ну вы не видите, что ваш тогл, при "одновременном" переключении разных пинов, в одном порте из разных потоков не будет работать?

вы в одном потоке дергаете cs? который есть PA13, а в другом потомке маргаете диодом который сидит на PA5.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 20 2017, 07:28
Сообщение #281


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Apr 20 2017, 10:17) *
можно дать ключ компилятору

В моей явной реализации типов вообще не нужно разбираться с особенностями конкретного компилятора, галочками и т.п.
Один раз составил эти тайпдефы под новый компилятор, проверил соответствие разрядности (при сомнениях) и ЗАБЫЛ.
При написании очередного кода категорически не хочу держать в голове, что там у компилятора по-умолчанию, а что нет. У меня других забот хватает )))

Цитата(juvf @ Apr 20 2017, 10:21) *
вы в одном потоке дергаете cs? который есть PA13, а в другом потомке маргаете диодом который сидит на PA5.

Ага, я понял к чему вы - я имел ввиду не порт, а пин.
Но и в данном случае проблем тоже не будет - в MODER пишется маска, меняющая всего лишь ОДИН соотв. бит, а не группу битов.
Даже если переключение задач произойдет прямо посреди переписывания MODER или формирования этой маски, ничего страшного не будет - доступ к MODER атомарный, он не переписывается кусками.




--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 20 2017, 07:28
Сообщение #282


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 20 2017, 12:22) *
В моей явной реализации типов вообще не нужно разбираться с особенностями конкретного компилятора, галочками и т.п.
я вам не говорю, что явно не надо задавать. я вам говорю, что int - всегда знаковый. и объяснил вам от куда у вас были грабли с чаром. и что компиляторы одинакого компилят.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 20 2017, 07:30
Сообщение #283


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Apr 20 2017, 10:28) *
я вам не говорю, что явно не надо задавать. я вам говорю, что int - всегда знаковый. и объяснил вам от куда у вас были грабли с чаром. и что компиляторы одинакого компилят.

У меня нет граблей с char-ом и другими типами уже давно, очень давно )))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 20 2017, 07:30
Сообщение #284


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

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



Цитата(juvf @ Apr 20 2017, 12:17) *
Спасибо большое!!!! А есть для f1 и вообще... огласите полный список? )))) может и для авр кто написал такие классы? ))

Вот собственно главный pin.h, который подключает уже нужный pin_xxx.h, в зависимости от контроллера. Список поддерживаемых контроллеров - там же. Это для STM32.
Для AVR есть вот такой набор макросов. Это знаменитые в узких кругах "Макросы Аскольда Волкова". Собственно, я от них отталкивался, когда писал свой pin.h.

Ещё известные мне варианты pin.h:


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 20 2017, 07:36
Сообщение #285


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Apr 20 2017, 12:28) *
Но и в данном случае проблем тоже не будет - в MODER пишется маска, меняющая всего лишь ОДИН соотв. бит, а не группу битов.
Даже если переключение задач произойдет прямо посреди переписывания MODER или формирования этой маски, ничего страшного не будет - доступ к MODER атомарный, он не переписывается кусками.

бррррр... а при чем тут модер? )))) от куда вброс про многопоточность? вот от куда

Цитата
Код
inline void toggle(void) { port->ODR ^= pinMask; }


C++ это круто, но про многопоточность мы не слышали.
тогел потоко не защищённый. Осторожно, тут мины!! ))

Цитата(Forger @ Apr 20 2017, 12:30) *
У меня нет граблей с char-ом и другими типами уже давно, очень давно )))

я вам про фому - вы мне про ерёму ))))
Go to the top of the page
 
+Quote Post

26 страниц V  « < 17 18 19 20 21 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th August 2025 - 10:52
Рейтинг@Mail.ru


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