|
давайте делится удобными дефайнами для 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, 02:03
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(_Pasha @ Feb 9 2013, 03:02)  А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу Б-г с ней, с атомарностью. "Ситуевину представить"(с) - "легко, смеясь"(с) : как я налетел с ремапом. А именно: Цитата(Tahoe @ Jul 20 2012, 12:28)  А в библиотеках от ST просто в наглую подставляется константа. И совсем не факт, что она совпадет с тем, как ранее настроил программер. А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты.
|
|
|
|
|
Feb 9 2013, 10:23
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(_Pasha @ Feb 9 2013, 10:22)  А в RMW-операциях можно налететь на грабли и по другому - просто записав битик туда, куда не нужно, - помечено как reserved биты, а каким образом оно себя проявить может - хз. Можно. Но я же спросил не о новых проблемах, а о решении конкретной и реально существующей. Так кроме bitband, ещё как-то можно корректно и безопасно сделать ремап? Кстати, даже с bitband тоже не все так просто оказалось, но в итоге решилось.
|
|
|
|
|
Feb 9 2013, 11:02
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tahoe @ Feb 9 2013, 13:23)  Можно. Но я же спросил не о новых проблемах, а о решении конкретной и реально существующей. Нет там никакой проблемы с ремап... есть временное недопонимание/трактование по своему... Это всё из ряда: Цитата Кстати, даже с bitband тоже не все так просто оказалось, но в итоге решилось.
|
|
|
|
|
Feb 9 2013, 12:47
|
Местный
  
Группа: Свой
Сообщений: 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 были уже установлены. Тот редкий случай, когда получу удовольствие, если меня ткнут носом. Вот только шансов на это нет.
|
|
|
|
|
Feb 9 2013, 14:03
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 9 2013, 14:23
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(HHIMERA @ Feb 9 2013, 18:03)  И это не считалось проблемой... считалось - решением... С каких пор, вырезание гландов через анус, называется "решением"? И что тогда называть "костылём", если создание фантомного регистра - "решение". Реальное решение, это использовать bit-band. Вот это - действительно решение. А наплодить тонну фантомных регистров, создать прослойку для работы с ними и радоваться, что хоть как-то разрулили аппаратный недостаток... Философия Microchip/Microsoft в действии?  Цитата(HHIMERA @ Feb 9 2013, 18:03)  Сколько налетал на "проблему" в STM32, столько раз сам и убеждался, что просто "не дочитал/не досмотрел/не угадал вариант неоднозначной трактовки"... ИМХО... Вся сложность STM32 - в его простоте... при широких возможностях... Ну вот, опять общие слова - "вы не поняли", "вы не дочитали". Ну а конкретно-то можно? Что именно я "недочитал" и "не понял", касательно работы с AFIO_MAPR_SWJ_CFG? Может наоборот, это вы оба недочитали, раз не используете bit-band, а заводите какую-то левую переменную в памяти? Да чего уж скромничать, продублируем все регистры ядра и периферии в памяти. Вот будет веселье.
|
|
|
|
|
Feb 9 2013, 14:49
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Tahoe @ Feb 9 2013, 17:23)  С каких пор, вырезание гландов через анус, называется "решением"? И что тогда называть "костылём", если создание фантомного регистра - "решение". Реальное решение, это использовать bit-band. Вот это - действительно решение. А наплодить тонну фантомных регистров, создать прослойку для работы с ними и радоваться, что хоть как-то разрулили аппаратный недостаток... Философия Microchip/Microsoft в действии?  Разрулить аппаратный "недостаток" (а для меня это просто факт, особенность регистра, не более) - и есть решение... А постоянно ныть о "проблемах" (которые многие просто, почему-то, и не замечают) - и есть хождение "на костылях"... Цитата Вот будет веселье.  Вот... лучше не надо... веселья... поверьте...
|
|
|
|
|
Feb 9 2013, 14:53
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600

|
Цитата(HHIMERA @ Feb 9 2013, 18:49)  Разрулить аппаратный "недостаток" (а для меня это просто факт, особенность регистра, не более) - и есть решение... Есть много разных способов избавиться от головной боли. Гильотина - не лучший. Хотя некоторые сочтут его вполне годным. В данном случае, никто не ноет. Есть вариант с bit-band. Это - решение. Все остальное - не решения, а какая-то отрыжка из конца 90-х, с их кривыми PIC-ами.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|