|
давайте делится удобными дефайнами для 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 8 2013, 12:05
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
разницы между set_port("D","7") и PORTD->OUT |= (1<<7) нету, что вы одно слово заменили на другое, а понятную всем кто занимается программированием операцию заменили словом, это все пустое, это шелуха которая не нужна.
Определитесь зачем вы это делаете? Если чтобы самому было удобно читать, то потратите времени больше чем на привыкание к определенному семейству процов. Увеличить читаемость кода? не увеличите. Добавить гибкости и переносимости коду? - сто пудово нет. В новой плате поменяют ножку на которой висел диод - и до свидания, или же правда через год откроете свой код и будите искать кто зажег диод.
если вы в своей программе сделаете TEST_LED_ON (PORTD->OUT |= (1<<7)) TEST_LED_OFF (PORTD->OUT &= (~(1<<7)))
вот это уже имеет смысл. 1. понятно что происходит. 2. при смене проца или переразводке платы, меняете макрос и все едет дальше как и было. Логика програмы сохраняется функционал остается.
Я лично всегда делю проект на то что зависит от проца и конкретной схемы и что не зависит.
В вашем примере с диодом, я бы сделал макрос на мигание как показано выше в отдельном файле тестовые диоды или что-то типа того. объявил бы константу #define TEST_LED_PIN (1<<7)
а порт бы инициализировал в общей для всего проца функции PORTD->DIR |= TEST_LED_PIN;
потому что изменений при смене проца или разводки в данном случае столько же сколько при добавленных макросах инициализации и так далее, но макросы писать не надо, то есть выигрыш имеется.
|
|
|
|
|
Feb 8 2013, 13:32
|
Местный
  
Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197

|
Цитата(Golikov A. @ Feb 8 2013, 16:05)  разницы между set_port("D","7") и PORTD->OUT |= (1<<7) нету, что вы одно слово заменили на другое, а понятную всем кто занимается программированием операцию заменили словом, это все пустое, это шелуха которая не нужна.
Определитесь зачем вы это делаете? Я пытаюсь сделать чуть по-другому в bsp_board_def.h определяю ножку в виде дефайна, а затем ставлю SET_PIN(LED_PIN) и CLEAR_PIN(LED_PIN) соотвественно получается некоторая "ПЛАТОПЕРЕНОСИМОСТЬ"
--------------------
|
|
|
|
Сообщений в этой теме
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  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 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
|
|
|