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

 
 
> давайте делится удобными дефайнами для stm32f10x
super_puper
сообщение Feb 6 2013, 03:09
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



например я вот такие сделал :
CODE
#define enable_clock(port) RCC->APB2ENR|=RCC_APB2ENR_IOP##port##EN // включение тактирования порта

#define set_pin(port,bit) GPIO##port## -> ODR |= GPIO_ODR_ODR##bit // установить на порте 1
#define clear_pin(port,bit) GPIO##port## -> ODR &= ~ GPIO_ODR_ODR##bit // установить на порте 0
#define test_pin(port,bit) GPIO##port## -> ODR &= GPIO_ODR_ODR##bit // возвращает истинное состояние на выводе ножки порта

//vvvvvvvvvvv Задаём направление и максимальную частоту работы портов MODE[bit1,bit0] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
#define set_in(port,half,bit) GPIO##port##->CR##half##&=~(GPIO_CR##half##_MODE##bit##_0);
GPIO##port##->CR##half##|=(GPIO_CR##half##_MODE##bit##_0)
//00: Input mode (reset state) - порт работает на вход, устанавливается по умолчанию после ресета
#define set_out_10MHz(port,half,bit) GPIO##port##->CR##half##&=~(GPIO_CR##half##_MODE##bit##_0);
GPIO##port##->CR##half##|=(GPIO_CR##half##_MODE##bit##_1)
//01: Output mode, max speed 10 MHz.
#define set_out_2MHz(port,half,bit) GPIO##port##->CR##half##&=~(GPIO_CR##half##_MODE##bit##_1);
GPIO##port##->CR##half##|=(GPIO_CR##half##_MODE##bit##_0) //10: Output mode, max speed 2 MHz.
#define set_out_50MHz(port,half,bit) GPIO##port##->CR##half##&=~(GPIO_CR##half##_MODE##bit##_1);
GPIO##port##->CR##half##|=(GPIO_CR##half##_MODE##bit##_1) //11: Output mode, max speed 50 MHz.
//если биты портов 0-7 то half=L
//если биты портов 8-15 = то half=H
// в регистре GPIOX_CR(L/H) меняет биты MODEx (режимы работы x ножки порта X)
// Пример использования:
// set_in(D,L,7); // устанавливает порт D.7 как вход
// set_out_10MHz(D,L,7); //устанавливает порт D.7 как выход с максимальной частотой 10 Мгц.
// set_out_2MHz(D,L,7);
// set_out_50MHz(D,L,7);
//^^^^^^^^^^^^ Задаём направление и максимальную частоту работы портов ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


Сообщение отредактировал IgorKossak - Feb 7 2013, 18:53
Причина редактирования: форматирование
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Feb 8 2013, 23:02
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



biggrin.gif
А смысл работы GPIO в означенном регионе? Если и так чтобы установить/сбросить атомарно - все есть.
А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 02:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(_Pasha @ Feb 9 2013, 03:02) *
А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу

Б-г с ней, с атомарностью. "Ситуевину представить"(с) - "легко, смеясь"(с) : как я налетел с ремапом. А именно:
Цитата(Tahoe @ Jul 20 2012, 12:28) *
А в библиотеках от ST просто в наглую подставляется константа. И совсем не факт, что она совпадет с тем, как ранее настроил программер.


А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. biggrin.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 9 2013, 06:22
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Tahoe @ Feb 9 2013, 06:03) *
А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. biggrin.gif

А в RMW-операциях можно налететь на грабли и по другому - просто записав битик туда, куда не нужно, - помечено как reserved биты, а каким образом оно себя проявить может - хз.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 10:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(_Pasha @ Feb 9 2013, 10:22) *
А в RMW-операциях можно налететь на грабли и по другому - просто записав битик туда, куда не нужно, - помечено как reserved биты, а каким образом оно себя проявить может - хз.

Можно. Но я же спросил не о новых проблемах, а о решении конкретной и реально существующей. Так кроме bitband, ещё как-то можно корректно и безопасно сделать ремап? Кстати, даже с bitband тоже не все так просто оказалось, но в итоге решилось.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Feb 9 2013, 11:02
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Tahoe @ Feb 9 2013, 13:23) *
Можно. Но я же спросил не о новых проблемах, а о решении конкретной и реально существующей.

Нет там никакой проблемы с ремап... есть временное недопонимание/трактование по своему...

Это всё из ряда:
Цитата
Кстати, даже с bitband тоже не все так просто оказалось, но в итоге решилось.

Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 12:47
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(HHIMERA @ Feb 9 2013, 15:02) *
Нет там никакой проблемы с ремап... есть временное недопонимание/трактование по своему...

Это всё из ряда:

Ребят, что в той ветке, что сейчас, вы оба просто не вникли в суть проблемы. поэтому ее не видите. Придется повторить ещё раз.

Есть регистр AFIO_MAPR, в котором есть три write only бита SWJ_CFG[2:0]. Результат чтения из них - не определен. Как модифицировать произвольный бит этого регистра, сохранив ранее установленные в SWJ_CFG[2:0] значения? Учитывая, что прочитать SWJ_CFG[2:0] невозможно.

Причем это не высосано из пальца, я реально налетел на эту проблему, когда понадобился remap SPI1, а биты SWJ_CFG были уже установлены. Тот редкий случай, когда получу удовольствие, если меня ткнут носом. Вот только шансов на это нет.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Feb 9 2013, 14:03
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Tahoe @ Feb 9 2013, 16:47) *
Ребят, что в той ветке, что сейчас, вы оба просто не вникли в суть проблемы. поэтому ее не видите. Придется повторить ещё раз.

Есть регистр AFIO_MAPR, в котором есть три write only бита SWJ_CFG[2:0]. Результат чтения из них - не определен. Как модифицировать произвольный бит этого регистра, сохранив ранее установленные в SWJ_CFG[2:0] значения? Учитывая, что прочитать SWJ_CFG[2:0] невозможно.

А как вы думаете... как боролись с RMW в младших ПИКах, в которых не было регистра LAT ??? Создавали "фантомный" регистр... типа:
Цитата(Golikov A. @ Feb 9 2013, 16:52) *
запомнить значение битов в переменной%)

И это не считалось проблемой... считалось - решением...

Цитата
Причем это не высосано из пальца, я реально налетел на эту проблему, когда понадобился remap SPI1, а биты SWJ_CFG были уже установлены. Тот редкий случай, когда получу удовольствие, если меня ткнут носом. Вот только шансов на это нет.

Сколько налетал на "проблему" в STM32, столько раз сам и убеждался, что просто "не дочитал/не досмотрел/не угадал вариант неоднозначной трактовки"...

ИМХО... Вся сложность STM32 - в его простоте... при широких возможностях...


Сообщение отредактировал HHIMERA - Feb 9 2013, 14:04
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 14:23
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(HHIMERA @ Feb 9 2013, 18:03) *
И это не считалось проблемой... считалось - решением...

С каких пор, вырезание гландов через анус, называется "решением"? И что тогда называть "костылём", если создание фантомного регистра - "решение". Реальное решение, это использовать bit-band. Вот это - действительно решение. А наплодить тонну фантомных регистров, создать прослойку для работы с ними и радоваться, что хоть как-то разрулили аппаратный недостаток... Философия Microchip/Microsoft в действии? sm.gif

Цитата(HHIMERA @ Feb 9 2013, 18:03) *
Сколько налетал на "проблему" в STM32, столько раз сам и убеждался, что просто "не дочитал/не досмотрел/не угадал вариант неоднозначной трактовки"...
ИМХО... Вся сложность STM32 - в его простоте... при широких возможностях...

Ну вот, опять общие слова - "вы не поняли", "вы не дочитали". Ну а конкретно-то можно? Что именно я "недочитал" и "не понял", касательно работы с AFIO_MAPR_SWJ_CFG? Может наоборот, это вы оба недочитали, раз не используете bit-band, а заводите какую-то левую переменную в памяти? Да чего уж скромничать, продублируем все регистры ядра и периферии в памяти. Вот будет веселье. biggrin.gif
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Feb 9 2013, 14:49
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Tahoe @ Feb 9 2013, 17:23) *
С каких пор, вырезание гландов через анус, называется "решением"? И что тогда называть "костылём", если создание фантомного регистра - "решение". Реальное решение, это использовать bit-band. Вот это - действительно решение. А наплодить тонну фантомных регистров, создать прослойку для работы с ними и радоваться, что хоть как-то разрулили аппаратный недостаток... Философия Microchip/Microsoft в действии? sm.gif

Разрулить аппаратный "недостаток" (а для меня это просто факт, особенность регистра, не более) - и есть решение...
А постоянно ныть о "проблемах" (которые многие просто, почему-то, и не замечают) - и есть хождение "на костылях"...
Цитата
Вот будет веселье. biggrin.gif

Вот... лучше не надо... веселья... поверьте... lol.gif lol.gif
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 14:53
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(HHIMERA @ Feb 9 2013, 18:49) *
Разрулить аппаратный "недостаток" (а для меня это просто факт, особенность регистра, не более) - и есть решение...

Есть много разных способов избавиться от головной боли. Гильотина - не лучший. Хотя некоторые сочтут его вполне годным.

В данном случае, никто не ноет. Есть вариант с bit-band. Это - решение. Все остальное - не решения, а какая-то отрыжка из конца 90-х, с их кривыми PIC-ами. sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- super_puper   давайте делится удобными дефайнами для stm32f10x   Feb 6 2013, 03:09
- - jcxz   хм.... И что-ж тут удобного??? Во-первых - неудо...   Feb 6 2013, 04:12
- - ISK2010   Ну, раз для STM32F1, т.е. для контроллера с ядром ...   Feb 6 2013, 05:19
- - super_puper   я обнаружил что есть готовые стандартные бибилотек...   Feb 7 2013, 02:04
|- - _Pasha   Цитата(super_puper @ Feb 7 2013, 06:04) я...   Feb 7 2013, 06:33
- - super_puper   поизучал и ужаснулся как то мягко говоря неудобно ...   Feb 7 2013, 09:14
|- - _Pasha   Цитата(super_puper @ Feb 7 2013, 12:14) о...   Feb 7 2013, 09:38
|- - jcxz   Цитата(_Pasha @ Feb 7 2013, 15:38) Кривиз...   Feb 7 2013, 13:34
|- - _Pasha   Цитата(jcxz @ Feb 7 2013, 16:34) У меня в...   Feb 7 2013, 14:11
|- - MrYuran   Цитата(_Pasha @ Feb 7 2013, 18:11) А дерг...   Feb 8 2013, 09:41
|- - Tahoe   Цитата(_Pasha @ Feb 7 2013, 18:11) А вот ...   Feb 8 2013, 11:44
|- - _Pasha   Цитата(Tahoe @ Feb 8 2013, 15:44) Ну а в ...   Feb 8 2013, 12:07
|- - Tahoe   Цитата(_Pasha @ Feb 8 2013, 16:07) Я так ...   Feb 8 2013, 12:29
- - super_puper   CODE#define uchar unsigned char // VVVVVVVVVVVVVVV...   Feb 8 2013, 02:27
|- - Forger   Цитата(super_puper @ Feb 8 2013, 06:27) т...   Feb 8 2013, 06:23
- - super_puper   теперь нужно для частот тактирования, выбор источн...   Feb 8 2013, 03:48
|- - HHIMERA   Цитата(super_puper @ Feb 8 2013, 06:48) н...   Feb 8 2013, 05:29
|- - Lmx2315   QUOTE (super_puper @ Feb 8 2013, 06:48) т...   Feb 8 2013, 06:18
|- - _Pasha   Цитата(Lmx2315 @ Feb 8 2013, 10:18) http:...   Feb 8 2013, 07:32
|- - Lmx2315   QUOTE (_Pasha @ Feb 8 2013, 11:32) Это ми...   Feb 8 2013, 09:08
|- - _Pasha   Цитата(Lmx2315 @ Feb 8 2013, 12:08) всмыс...   Feb 8 2013, 09:22
|- - Lmx2315   QUOTE (_Pasha @ Feb 8 2013, 12:22) Code g...   Feb 8 2013, 10:45
|- - _Pasha   Цитата(Lmx2315 @ Feb 8 2013, 13:45) ничег...   Feb 8 2013, 11:30
- - Golikov A.   разницы между set_port("D","7...   Feb 8 2013, 12:05
|- - SyncLair   Цитата(Golikov A. @ Feb 8 2013, 16:05) ра...   Feb 8 2013, 13:32
|- - HHIMERA   Цитата(SyncLair @ Feb 8 2013, 17:32) став...   Feb 8 2013, 13:52
- - Golikov A.   сдается мне что писать код который учитывает особе...   Feb 8 2013, 12:33
|- - Tahoe   Цитата(Golikov A. @ Feb 8 2013, 16:33) вк...   Feb 8 2013, 12:36
- - Rash   Сам юзаю StdLib от STM, для инициализации вполне н...   Feb 8 2013, 13:50
|- - _Pasha   Цитата(Rash @ Feb 8 2013, 16:50) перемест...   Feb 8 2013, 14:17
- - Rash   Цитата(_Pasha @ Feb 8 2013, 18:17) Соверш...   Feb 8 2013, 14:49
|- - HHIMERA   Цитата(Rash @ Feb 8 2013, 17:49) если все...   Feb 8 2013, 15:00
|- - _Pasha   Цитата(Rash @ Feb 8 2013, 17:49) не понят...   Feb 8 2013, 15:08
|- - HHIMERA   Цитата(_Pasha @ Feb 8 2013, 19:08) Ухты...   Feb 8 2013, 15:33
- - Rash   ну да стандарты, есть стандарты. Но для себя решил...   Feb 8 2013, 15:33
|- - Tahoe   Цитата(Rash @ Feb 8 2013, 19:33) Что удоб...   Feb 8 2013, 18:18
- - _Pasha   Смотрю я на этот битбанд и что-то выигрыш не особо...   Feb 8 2013, 18:29
|- - Tahoe   Цитата(_Pasha @ Feb 8 2013, 22:29) выигры...   Feb 8 2013, 19:05
|- - jcxz   Цитата(Tahoe @ Feb 9 2013, 01:05) Использ...   Feb 9 2013, 08:10
|- - adnega   Цитата(jcxz @ Feb 9 2013, 12:10) А что - ...   Feb 9 2013, 11:23
- - adnega   А, вроде, в новеньких F3 вход-вывод не попадает в ...   Feb 8 2013, 19:14
|- - Tahoe   Цитата(adnega @ Feb 8 2013, 23:14) А, вро...   Feb 8 2013, 19:48
- - adnega   Про фичу ядра согласен. Но в приведенном Вами доку...   Feb 8 2013, 22:05
||- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 18:53) Есть мн...   Feb 9 2013, 15:13
||- - Tahoe   Цитата(HHIMERA @ Feb 9 2013, 19:13) ...   Feb 9 2013, 15:58
|- - adnega   Цитата(_Pasha @ Feb 9 2013, 03:02) А смыс...   Feb 9 2013, 07:13
- - Golikov A.   запомнить значение битов в переменной%) в самом на...   Feb 9 2013, 12:52
|- - Tahoe   Цитата(Golikov A. @ Feb 9 2013, 16:52) за...   Feb 9 2013, 13:43
- - Golikov A.   не очень понимаю в чем спор то? раньше бит-банда н...   Feb 9 2013, 15:17
|- - HHIMERA   Цитата(Golikov A. @ Feb 9 2013, 18:17) не...   Feb 9 2013, 15:59
|- - Tahoe   Цитата(Golikov A. @ Feb 9 2013, 19:17) не...   Feb 9 2013, 16:07
|- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 20:07) проблем...   Feb 9 2013, 16:40
|- - Golikov A.   Цитата(HHIMERA @ Feb 9 2013, 20:40) Дальш...   Feb 9 2013, 17:26
|- - HHIMERA   Цитата(Golikov A. @ Feb 9 2013, 20:26) вы...   Feb 9 2013, 18:01
|- - Tahoe   Цитата(HHIMERA @ Feb 9 2013, 22:01) Ещё р...   Feb 9 2013, 18:16
|- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 22:16) Круто. ...   Feb 9 2013, 18:24
- - Petka   Возвращаясь в тему. ИМХО для АРМов использовать ...   Feb 9 2013, 16:45
- - HHIMERA   C vs C++ ???   Feb 9 2013, 16:55
- - Petka   Цитата(HHIMERA @ Feb 9 2013, 20:55) C vs ...   Feb 9 2013, 17:07
- - HHIMERA   Цитата(Petka @ Feb 9 2013, 21:07) Это-то ...   Feb 9 2013, 17:24


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

 


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


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