|
давайте делится удобными дефайнами для 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, 02:27
|
Местный
  
Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845

|
CODE #define uchar unsigned char // VVVVVVVVVVVVVVVVVVVVV Работа с портами VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV #define enable_clock(port) RCC->APB2ENR|=RCC_APB2ENR_IOP##port##EN // включение тактирования порта #define pin_on(port,bit) GPIO##port## -> ODR |= GPIO_ODR_ODR##bit // установить на порте 1 #define pin_off(port,bit) GPIO##port## -> ODR &= ~ GPIO_ODR_ODR##bit // установить на порте 0 #define pin_test(port,bit) GPIO##port## -> ODR &= GPIO_ODR_ODR##bit // возвращает истинное состояние на выводе ножки порта
//vvvvvvvvvvv Конфигурируем порты: направление и максимальная частота работы портов vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv #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.x как выход с максимальной частотой 10 Мгц. // set_out_2MHz(D,L,7); //устанавливает порт D.x как выход с максимальной частотой 2 Мгц. // set_out_50MHz(D,L,7); //устанавливает порт D.x как выход с максимальной частотой 50 Мгц. //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #define pin_config(port,half,pin,b1,b0) GPIO##port##->CR##half##&=~(GPIO_CR##half##_CNF##pin##_0);GPIO##port##->CR##half##&=~(GPIO_CR##half##_CNF##pin##_1) ; // конфигурация регистра CNF
//vvvvvvvvvvv меняем настройки портов настроенных на выход, general/alternativ и push-pull/open-drain vvvvvvvvvvvvvvv #define general_push_pull(port,half,pin) pin_config(##port##,##half##,##pin##,0,0)//00: set port as General purpose output push-pull #define general_open_drain(port,half,pin) pin_config(##port##,##half##,##pin##,0,1)//01: set port as General purpose output Open-drain #define alternate_push_pull(port,half,pin) pin_config(##port##,##half##,##pin##,1,0)//10: set port as Alternate function output Push-pull #define alternate_open_drain(port,half,pin) pin_config(##port##,##half##,##pin##,1,1)//11: set port as Alternate function output Open-drain // пример использования: //out_general_push_pull(D,L,7); //set port D, pin7 as General purpose output push-pull //out_general_open_drain(D,L,7); //set port as General purpose output push-pull //out_alternate_push_pull(D,L,7); //set port as alternate output push-pull //out_alternate_open_drain(D,L,7);//set port as alternate output push-pull //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
//vvvvvvvvvvv меняем настройки портов настроенных на вход vvvvvvvvvvvvvvv #define input_analog(port,half,pin) pin_config(##port##,##half##,##pin##,0,0)//00: set port as Analog mode #define input_float(port,half,pin) pin_config(##port##,##half##,##pin##,0,1)//01: set port as Floating input (reset state) #define input_pull_up_down(port,half,pin) pin_config(##port##,##half##,##pin##,1,0)//10: set port as Input with pull-up / pull-down // пример использования: //input_analog(port,half,pin);// set port as Analog mode //input_float(port,half,pin);// set port as Floating input (reset state) //input_pull_up_down(port,half,pin); //set port as Input with pull-up / pull-down //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ CODE enable_clock(D);//включение тактирования порта set_out_2MHz(D,L,7); //устанавливает порт D.x как выход с максимальной частотой 2 Мгц. general_push_pull(D,L,7); //set port as General purpose output push-pull
while (1) { if (pin_test(D,7)) { pin_off(D,7); } else { pin_on(D,7); } for (d=0; d<1000000; ++d){e ++;}; теперь програмка моргания светодиодом выглядет высокоуровневее
Сообщение отредактировал super_puper - Feb 8 2013, 03:47
|
|
|
|
|
Feb 8 2013, 06:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(super_puper @ Feb 8 2013, 06:27)  теперь програмка моргания светодиодом выглядет высокоуровневее Ну, ну... Почитайте этот же код через этак пару месяцев, занявшись в это время другим проектом. Уверен, что хрен поймете, что это за абстрактные "D", 7, что они делают в проге. Нормальный высокоуровневый код НЕ должен выглядеть, как куча дефайнов поверх других дефайнов. Не это - его цель. Если уже делаете обертки, то они должны отражать суть программы, ее действия, а вовсе не суть самой этой обертки - избавиться от чужого говнокода. Я тоже пытался что-то вразумительное сделать поверх либ от ST, но в итоге из всего осталось только - пинодрыгание. Остальное сделать удобным под все линейки процев, увы, нереально. По сути, ST-либы реально ускоряют разработку, а в последствии переписать "быстрые" куски кода в обход библиотеки - это уже оптимизация, которая, зачастую, не так уж и обязательна. Например, мне приходилось "разворачивать" и оптимизировать код этих либ в обработчиках прерываний CAN, т.к. это реально ускорило работу системы... Чтобы не быть голословным, поделюсь своим вариантом обертки для пинов (STM32L). Базовый класс пина: Код class PinBase { public: PinBase(GPIO_TypeDef * port, UNSIGNED8 pinIndex) { this->port = port; this->pinIndex = pinIndex; switch ((UNSIGNED32)(this->port)) { case ((UNSIGNED32)GPIOA): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); break; case ((UNSIGNED32)GPIOB): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); break; case ((UNSIGNED32)GPIOC): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); break; case ((UNSIGNED32)GPIOD): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE); break; case ((UNSIGNED32)GPIOE): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE); break; case ((UNSIGNED32)GPIOH): RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOH, ENABLE); break; default : break; } disablePullUpAndPullDown(); }
void setAsInput(void) // MODER = 0 { port->MODER &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->MODER |= (((UNSIGNED32)0x00) << (pinIndex * 2)); } void setAsOutput(void) // MODER = 1 { port->MODER &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->MODER |= (((UNSIGNED32)0x01) << (pinIndex * 2)); }
typedef UNSIGNED8 AlternativeFunction; void setAsAlternative(AlternativeFunction function) // MODER = 2 { port->MODER &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->MODER |= (((UNSIGNED32)0x02) << (pinIndex * 2)); if (pinIndex < 8) { port->AFR[0] &= ~(((UNSIGNED32)0x0F) << (pinIndex * 4)); port->AFR[0] |= (((UNSIGNED32)function & 0x0F) << (pinIndex * 4)); } else { port->AFR[1] &= ~(((UNSIGNED32)0x0F) << ((pinIndex - 8) * 4)); port->AFR[1] |= (((UNSIGNED32)function & 0x0F) << ((pinIndex - 8) * 4)); } } void setAsAnalogInput(void) // MODER = 3 { disablePullUpAndPullDown(); port->MODER &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->MODER |= (((UNSIGNED32)0x03) << (pinIndex * 2)); } void setAsPushPull(void) { port->OTYPER &= ~(1 << pinIndex); } // OTYPER = 0 void setAsOpenDrain(void) { port->OTYPER |= (1 << pinIndex); } // OTYPER = 1 void setOutputSpeed400kHz(void) { port->OSPEEDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->OSPEEDR |= (((UNSIGNED32)0x00) << (pinIndex * 2)); } // OSPEEDR = 0 void setOutputSpeed2MHz(void) { port->OSPEEDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->OSPEEDR |= (((UNSIGNED32)0x01) << (pinIndex * 2)); } // OSPEEDR = 1 void setOutputSpeed10MHz(void) { port->OSPEEDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->OSPEEDR |= (((UNSIGNED32)0x02) << (pinIndex * 2)); } // OSPEEDR = 2 void setOutputSpeed40MHz(void) { port->OSPEEDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->OSPEEDR |= (((UNSIGNED32)0x03) << (pinIndex * 2)); } // OSPEEDR = 3 void disablePullUpAndPullDown(void) { port->PUPDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->PUPDR |= (((UNSIGNED32)0x00) << (pinIndex * 2)); } // PUPDR = 0 void enablePullUp(void) { port->PUPDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->PUPDR |= (((UNSIGNED32)0x01) << (pinIndex * 2)); } // PUPDR = 1 void enablePullDown(void) { port->PUPDR &= ~(((UNSIGNED32)0x03) << (pinIndex * 2)); port->PUPDR |= (((UNSIGNED32)0x02) << (pinIndex * 2)); } // PUPDR = 2 void lock(void) { volatile UNSIGNED32 tempRegister = ((UNSIGNED32)1 << pinIndex); port->LCKR = tempRegister | (1 << 16); // Set LCKK bit port->LCKR = tempRegister; // Reset LCKK bit port->LCKR = tempRegister | (1 << 16); // Set LCKK bit tempRegister = port->LCKR; // Read LCKK bit tempRegister = port->LCKR; // Read LCKK bit }
private: volatile GPIO_TypeDef * port; volatile UNSIGNED8 pinIndex; }; Шаблон класса пина: Код template <UNSIGNED32 PORT_ADDR, UNSIGNED8 PIN_INDEX> class Pin : public PinBase { public: Pin(void) : PinBase(((GPIO_TypeDef*)PORT_ADDR), PIN_INDEX) { setToLow(); }
inline void setToHigh(void) __attribute__((always_inline)) { ((GPIO_TypeDef*)PORT_ADDR)->BSRRL = (((UNSIGNED32)1) << PIN_INDEX); } inline void setToLow(void) __attribute__((always_inline)) { ((GPIO_TypeDef*)PORT_ADDR)->BSRRH = (((UNSIGNED32)1) << PIN_INDEX); } inline bool isHigh(void) const __attribute__((always_inline)) { return (((((GPIO_TypeDef*)PORT_ADDR)->IDR) & (((UNSIGNED32)1) << PIN_INDEX)) != 0); } inline bool isLow(void) const __attribute__((always_inline)) { return (((((GPIO_TypeDef*)PORT_ADDR)->IDR) & (((UNSIGNED32)1) << PIN_INDEX)) == 0); } }; Увы, в компиляторе KEIL нельзя в качестве параметров шаблонов использовать указатели, хотя стандарт C++ это вполне допускает. Поэтому приходится его обманывать: Код #define PORTA (((UNSIGNED32)GPIOA)) #define PORTB (((UNSIGNED32)GPIOB)) #define PORTC (((UNSIGNED32)GPIOC)) ..... Ну, и пример использования (внешний акселерометр с программным SPI). H-файл: Код // ACCELEROMETER #define PORT_ACCEL_CS (PORTB) #define PIN_ACCEL_CS (15)
#define PORT_ACCEL_SCK (PORTB) #define PIN_ACCEL_SCK (14)
#define PORT_ACCEL_MOSI (PORTB) #define PIN_ACCEL_MOSI (13)
#define PORT_ACCEL_MISO (PORTB) #define PIN_ACCEL_MISO (12)
#define PORT_ACCEL_INT (PORTB) #define PIN_ACCEL_INT (11)
..... ..... ....
class Accelerometer : public Singleton<Accelerometer> { .....
private: Pin<PORT_ACCEL_CS, PIN_ACCEL_CS> pinCS; Pin<PORT_ACCEL_SCK, PIN_ACCEL_SCK> pinSCK; Pin<PORT_ACCEL_MOSI, PIN_ACCEL_MOSI> pinMOSI; Pin<PORT_ACCEL_MISO, PIN_ACCEL_MISO> pinMISO; Pin<PORT_ACCEL_INT, PIN_ACCEL_INT> pinINT; ..... }; CPP-файл: Код void Accelerometer::initialize(void) { .... pinCS.setAsOutput(); pinCS.setAsPushPull(); pinCS.setOutputSpeed10MHz(); pinCS.setToLow();
.... pinMISO.setAsInput(); pinMISO.enablePullDown();
pinINT.setAsInput(); pinINT.enablePullDown(); .... }
void Accelerometer::writeRegister(UNSIGNED8 address, UNSIGNED8 value) { pinCS.setToLow(); pinSCK.setToLow();
for (UNSIGNED8 bit = 8; bit > 0; --bit) { if ((address & 0x80) != 0) pinMOSI.setToHigh(); else pinMOSI.setToLow(); pinSCK.setToHigh(); address = address << 1; pinSCK.setToLow(); }
for (UNSIGNED8 bit = 8; bit > 0; --bit) { if ((value & 0x80) != 0) pinMOSI.setToHigh(); else pinMOSI.setToLow(); pinSCK.setToHigh(); value = value << 1; pinSCK.setToLow(); }
pinSCK.setToHigh(); pinCS.setToHigh(); } p.s. Буду рад, если мои идеи кому-то еще пригодятся
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
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 теперь нужно для частот тактирования, выбор источн... 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
|
|
|