|
давайте делится удобными дефайнами для 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 7 2013, 14:11
|
;
     
Группа: Участник
Сообщений: 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 какой-то сферический пин - нету.
|
|
|
|
|
Feb 8 2013, 11:44
|
Местный
  
Группа: Свой
Сообщений: 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] - для короткого!!!
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|