|
давайте делится удобными дефайнами для stm32f10x |
|
|
|
Feb 6 2013, 03:09
|
Местный
  
Группа: Участник
Сообщений: 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
Причина редактирования: форматирование
|
|
|
|
|
 |
Ответов
|
Feb 9 2013, 15:17
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
не очень понимаю в чем спор то? раньше бит-банда не было, его не хватало, его сделали. Появился инструмент, появился он не просто так, значит он нужен, и его надо использовать. Но с другой стороны и без него решали задачи, в 9 и 7 арме если не ошибаюсь его не было.
Мои проекты вообще далеки от драйверов, операционок и прочих прелестей, я если что-то иничу или ремаплю, то делаю это один раз, и могу выбрать последовательность в которой все пройдет гладко, и могу не заморачиватся с ним. Но и отрицать его и гонятся за ним с крестом тоже не стану%)...
|
|
|
|
|
Feb 9 2013, 16:07
|
Местный
  
Группа: Свой
Сообщений: 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. "Пушкин, он как гамлЕт. Все отрицал." (с) Шура Каретный
|
|
|
|
|
Feb 9 2013, 16:40
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tahoe @ Feb 9 2013, 20:07)  проблему я выше изложил. Позже даже разжевал, причем подробно. Но раз нет - значит нет. Хорошо... Почему проблема возникла только у вас... судя по отсутствию "горячего" обсуждения... проблема "чисто ваша"... Иначе... было-бы и обсуждение и методы решения... Думать, что ремапом пользуетесь только вы.... наивно, по крайней мере... Отсюда: Проблемы нет... и она никому не интересна, ввиду её полного отсутствия... Дальше... Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска??? Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы??? А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея...
|
|
|
|
|
Feb 9 2013, 17:26
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(HHIMERA @ Feb 9 2013, 20:40)  Дальше... Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска??? Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы??? А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея... вы не совсем правы. Если регистр прочитать нельзя, то нельзя установить его значения. Следовательно присвоение по маске тоже не сработает. так как общее правило для него считать значение, изменить нужные маскированные биты, и записать значение обратно. В этом случае если нет возможности достоверного считывания значения то и нет возможности записать его достоверно обратно. к примеру бит который читается всегда как 0, но может быть выставлен в единицу, после считывания и записывания обратно гарантировано занулиться... единственное мне очень странно слышать недоступный для чтения бит, недоступный для записи я могу понять, но для чтения?... Зачем они такие... Такое возможно только если этот бит реально не надо читать, то есть допустим он задает режим работы, который жестко определен и не может быть изменен, тогда этот режим определяет константную часть регистра, которую либо вычисляют от состояния либо хранять в памяти. как то так.... но бит-банд на самом деле сделан для экономии инструкций и увеличения скорости битошевеления, замена изменения одного бита - одной инструкцией против читать, маскировать, менять, записывать весьма соблазнительная для быстрого кода. а что нет портов ввода вывода, так это потому что часто для них есть свой регистр поставить бит и стереть бит, меняющий именно один бит одного регистра за один такт, и нет смысла отъедать лишнюю память... резюме: без бит-банда можно обойтись, иначе не было прошлых процов без него, он также удобен - иначе бы его не делали. То есть это инструмент который делает нашу жизнь лучше и не надо его отрицать  , ровно как и положить за него жизнь... ИМХО
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|