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

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


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 8 2013, 06:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 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. Буду рад, если мои идеи кому-то еще пригодятся sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
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   теперь нужно для частот тактирования, выбор источн...   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 Текстовая версия Сейчас: 29th July 2025 - 12:34
Рейтинг@Mail.ru


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