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

 
 
> давайте делится удобными дефайнами для 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
Ответов
Golikov A.
сообщение Feb 9 2013, 15:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



не очень понимаю в чем спор то?
раньше бит-банда не было, его не хватало, его сделали. Появился инструмент, появился он не просто так, значит он нужен, и его надо использовать.
Но с другой стороны и без него решали задачи, в 9 и 7 арме если не ошибаюсь его не было.

Мои проекты вообще далеки от драйверов, операционок и прочих прелестей, я если что-то иничу или ремаплю, то делаю это один раз, и могу выбрать последовательность в которой все пройдет гладко, и могу не заморачиватся с ним. Но и отрицать его и гонятся за ним с крестом тоже не стану%)...
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 16:07
Сообщение #3


Местный
***

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



Цитата(Golikov A. @ Feb 9 2013, 19:17) *
не очень понимаю в чем спор то?

Изначально - нужен bit-band или "можно и без него обойтись, не очень-то и хотелось".

Цитата(Golikov A. @ Feb 9 2013, 19:17) *
я если что-то иничу или ремаплю, то делаю это один раз, и могу выбрать последовательность в которой все пройдет гладко

Ключевое слово здесь "я". Это частный случай. Но начиная с какого-то размера, трудоемкость raw кодирования сильно увеличивается. Избежать этого поможет разбиение на блоки. Но появляется ограничение - блоки должны работать корреткно, в т.ч. независимо от того, в какой последовательности их вызывают. В моем случае, есть несколько разных модулей верхнего уровня, каджый из которых может вызвать инициализацию в произвольный момент, а не только в начале программы. Больше того, модули верхнего уровня могут быть написаны сторонними людьми, поэтому достоверно определить, когда вызывается инициализация - затруднительно. Совсем не факт, что она вызывается только один раз в самом начале.

Цитата(HHIMERA @ Feb 9 2013, 19:59) *
Нет там никаких проблем с ремапом... ни в каком виде... изначально... всё это надуманно...

Вообще-то, проблему я выше изложил. Позже даже разжевал, причем подробно. Но раз нет - значит нет. На том и порешим.
P.S.
"Пушкин, он как гамлЕт. Все отрицал." (с) Шура Каретный
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Feb 9 2013, 16:40
Сообщение #4


Местный
***

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



Цитата(Tahoe @ Feb 9 2013, 20:07) *
проблему я выше изложил. Позже даже разжевал, причем подробно. Но раз нет - значит нет.

Хорошо...
Почему проблема возникла только у вас... судя по отсутствию "горячего" обсуждения... проблема "чисто ваша"...
Иначе... было-бы и обсуждение и методы решения...
Думать, что ремапом пользуетесь только вы.... наивно, по крайней мере...
Отсюда: Проблемы нет... и она никому не интересна, ввиду её полного отсутствия...

Дальше...
Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска???
Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы???
А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 9 2013, 17:26
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(HHIMERA @ Feb 9 2013, 20:40) *
Дальше...
Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска???
Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы???
А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея...


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

так как общее правило для него считать значение, изменить нужные маскированные биты, и записать значение обратно. В этом случае если нет возможности достоверного считывания значения то и нет возможности записать его достоверно обратно.
к примеру бит который читается всегда как 0, но может быть выставлен в единицу, после считывания и записывания обратно гарантировано занулиться...

единственное мне очень странно слышать недоступный для чтения бит, недоступный для записи я могу понять, но для чтения?... Зачем они такие...

Такое возможно только если этот бит реально не надо читать, то есть допустим он задает режим работы, который жестко определен и не может быть изменен, тогда этот режим определяет константную часть регистра, которую либо вычисляют от состояния либо хранять в памяти. как то так....

но бит-банд на самом деле сделан для экономии инструкций и увеличения скорости битошевеления, замена изменения одного бита - одной инструкцией против читать, маскировать, менять, записывать весьма соблазнительная для быстрого кода.

а что нет портов ввода вывода, так это потому что часто для них есть свой регистр поставить бит и стереть бит, меняющий именно один бит одного регистра за один такт, и нет смысла отъедать лишнюю память...

резюме: без бит-банда можно обойтись, иначе не было прошлых процов без него, он также удобен - иначе бы его не делали. То есть это инструмент который делает нашу жизнь лучше и не надо его отрицать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
- - _Pasha   А смысл работы GPIO в означенном регионе? Если и т...   Feb 8 2013, 23:02
|- - Tahoe   Цитата(_Pasha @ Feb 9 2013, 03:02) А конф...   Feb 9 2013, 02:03
||- - _Pasha   Цитата(Tahoe @ Feb 9 2013, 06:03) А тепер...   Feb 9 2013, 06:22
||- - Tahoe   Цитата(_Pasha @ Feb 9 2013, 10:22) А в RM...   Feb 9 2013, 10:23
||- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 13:23) Можно. ...   Feb 9 2013, 11:02
||- - Tahoe   Цитата(HHIMERA @ Feb 9 2013, 15:02) Нет т...   Feb 9 2013, 12:47
||- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 16:47) Ребят, ...   Feb 9 2013, 14:03
||- - Tahoe   Цитата(HHIMERA @ Feb 9 2013, 18:03) И это...   Feb 9 2013, 14:23
||- - HHIMERA   Цитата(Tahoe @ Feb 9 2013, 17:23) С каких...   Feb 9 2013, 14:49
||- - Tahoe   Цитата(HHIMERA @ Feb 9 2013, 18:49) Разру...   Feb 9 2013, 14:53
||- - 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
|- - HHIMERA   Цитата(Golikov A. @ Feb 9 2013, 18:17) не...   Feb 9 2013, 15:59
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 01:19
Рейтинг@Mail.ru


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