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

 
 
> давайте делится удобными дефайнами для 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 8 2013, 12:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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;

потому что изменений при смене проца или разводки в данном случае столько же сколько при добавленных макросах инициализации и так далее, но макросы писать не надо, то есть выигрыш имеется.
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Feb 8 2013, 13:32
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 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) соотвественно получается некоторая "ПЛАТОПЕРЕНОСИМОСТЬ"



--------------------
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
|- - 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


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

 


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


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