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

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


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



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

Сообщение отредактировал super_puper - Feb 7 2013, 09:14
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 7 2013, 09:38
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(super_puper @ Feb 7 2013, 12:14) *
опять решил сам писать

Вот это и есть главная опасность, если Вам уже пора результат какой-то получить, а Вы начинаете с нуля все переписывать. Рискуете свалиться в бесконечную писанину. Кривизна этих либ бесспорна, но сделать лучше таки сложновато с первого захода, если надо получить нечто, работающее на всех STM32.
Как промежуточный вариант - отлаживаю bsp в симуле кейла, затем добавляю несколько wrapper"ов касательно синтаксиса и перехожу в GCC.
Или хватаю пример использования чего-то там (с этой либой, а как жеж) - и пилю своё.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 7 2013, 13:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_Pasha @ Feb 7 2013, 15:38) *
Кривизна этих либ бесспорна, но сделать лучше таки сложновато с первого захода, если надо получить нечто, работающее на всех STM32.
Не соглашусь с Вами. Вполне можно написать свои макросы, гораздо более лёгкие и понятные чем эти библиотеки.
У меня вызовы макросов типа установить/обнулить/проинвертировать/... пин GPIO одинаковы для разных процессоров, что часто позволяет переносить исходники с одного CPU на другой другого производителя с минимальными модификациями (или вообще без оных).
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 7 2013, 14:11
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(jcxz @ Feb 7 2013, 16:34) *
У меня вызовы макросов типа установить/обнулить/проинвертировать/... пин GPIO одинаковы для разных процессоров, что часто позволяет переносить исходники с одного CPU на другой другого производителя с минимальными модификациями (или вообще без оных).

Вы коснулись хорошей темы, а именно наилучшего API для контроллеров. Его, ессно, не существует, но есть вещи, которые хорошо себя зарекомендовали и на разных платформах. Например вызов инициализации UART в виде
Код
uint_fast8_t async_config(
    const uint_fast8_t    number,  //номер порта
    const uint_fast32_t  baud,      // скорость
    const uint_fast8_t    bits,        // число бит
    const char                 parity,    //'E'-even,  'O'-odd, 'N'-none
    const uint_fast8_t    stops      // 1, 2 для полутора - нет
    );

Но uart - это просто.
Потом, с SPI более менее получается - там где нет аппаратной поддержки, например, DMA, - включается эмуляция оного.
А вот с таймерами - уже засада. Или с АЦП.

А дергать пинами - у меня лично такого уровня просто нет. У меня в board.h есть например "включить реле", а set-reset какой-то сферический пин - нету. laughing.gif

Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 8 2013, 11:44
Сообщение #6


Местный
***

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



Цитата(_Pasha @ Feb 7 2013, 18:11) *
А вот с таймерами - уже засада. Или с АЦП.

Ну а в чем именно засада? Если хорошо продумать имена функций API, плюс самодисциплина, то работать будет для любого проца, с минимальными изменениями, хоть для AVR, хоть для STM32.
CODE
////////////////////////////////////////////////////////////////////////////////
// USER INTERFACE //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void BspUifInit( void )
{
////////////////////////////////////////////////////////////////////////////
McuTmrInit( BSP_TMR_UIF );

McuTmrConfig( BSP_TMR_UIF,
MCU_TMR_TCKINT_DIV_1,
MCU_TMR_PRELOAD_ENABLE,
//MCU_TMR_MODE_UP_NONSTOP,
MCU_TMR_MODE_UP_ONESHOT,
MCU_TMR_UPDT_RQST_SRC_CNT_ONLY );

McuTmrPrescalerSet( BSP_TMR_UIF,
BSP_MCLK_HZ / BSP_TMR_UIF_CLK_HZ );

McuTmrPeriodSet( BSP_TMR_UIF,
BSP_TMR_UIF_PERIOD_LONG_TCKS );

////////////////////////////////////////////////////////////////////////////
McuTmrCompareConfig( BSP_TMR_UIF,
BSP_TMR_CHNL_LEDR,
MCU_TMR_CMPR_CLEAR_BY_ETRF_DISABLE,
MCU_TMR_CMPR_MODE_PWM_POSITIVE,
MCU_TMR_CMPR_PRELOAD_DISABLE,
MCU_TMR_CMPR_FAST_OUTPUT_DISABLE );

McuTmrCompareConfig( BSP_TMR_UIF,
BSP_TMR_CHNL_LEDB,
MCU_TMR_CMPR_CLEAR_BY_ETRF_DISABLE,
MCU_TMR_CMPR_MODE_PWM_POSITIVE,
MCU_TMR_CMPR_PRELOAD_DISABLE,
MCU_TMR_CMPR_FAST_OUTPUT_DISABLE );

McuTmrOutputConfig( BSP_TMR_UIF,
BSP_TMR_CHNL_LEDR,
MCU_TMR_OUT_P_NON_INVERTED,
MCU_TMR_OUT_N_DISABLE );

McuTmrOutputConfig( BSP_TMR_UIF,
BSP_TMR_CHNL_LEDB,
MCU_TMR_OUT_P_NON_INVERTED,
MCU_TMR_OUT_N_DISABLE );

McuTmrOutputsEnable( BSP_TMR_UIF );

McuTmrEnable( BSP_TMR_UIF );

////////////////////////////////////////////////////////////////////////////
McuPinConfig( BSP_PIN_LED_RED, MCU_PIN_MODE_OUT_PP_AF_2MHz );
McuPinConfig( BSP_PIN_LED_BLU, MCU_PIN_MODE_OUT_PP_AF_2MHz );
McuPinConfig( BSP_PIN_BEEP, MCU_PIN_MODE_OUT_PP_AF_2MHz );
}


Сообщение отредактировал IgorKossak - Feb 8 2013, 12:42
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
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
|- - MrYuran   Цитата(_Pasha @ Feb 7 2013, 18:11) А дерг...   Feb 8 2013, 09:41
|- - _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
- - 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 Текстовая версия Сейчас: 24th July 2025 - 22:45
Рейтинг@Mail.ru


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