STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

Скорей всего, никаких. SWD для того и делали, что бы сделать лучше.
Чик например..
alexi$
Родился
Сообщения: 14
Зарегистрирован: Вт окт 30, 2012 23:34:54

Re: STM32 новичку в ARM что к чему

Сообщение alexi$ »

Кто скачал stm32cube_mx 4.14 и библиотеку для f1 1.3.1 скиньте пожалуйста на alex555cs@yandex.ru
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

О.. хоспади, Вы до сих пор что ли не скачали? Сейчас сделаем.
Я скачал за минуту :tea:
Alex_Golubev
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Re: STM32 новичку в ARM что к чему

Сообщение Alex_Golubev »

Не могу скачать с сайта ST.com выдает SORRY, PAGE NOT FOUND. Это у меня одного или еще у кого ?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Это вас судьба оберегает от трагической ошибки. :)))
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Re: STM32 новичку в ARM что к чему

Сообщение SyncM »

Скажите пожалуйста можно ли как то сделать чтобы работало условие

vibor=0;
switch (vibor){
case 0:
#define shtok vxod5
break;
case 4:
#define shtok vxod1
break;

}

все время берет значение vxod1
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: STM32 новичку в ARM что к чему

Сообщение menzoda »

Блеать, когда же вы начнете читать книги. Ну хоть что-нибудь прочитайте перед тем как начать программировать. Потому что вот эта твоя писанина - это как держать молоток не той стороной. Не той стороной, Карл!

Ладно, еще раз. define - это директива препроцессора. Препроцессор работает до компилятора и просто заменяет одни последовательности символов на другие. Поэтому твой, извиняюсь, бред, после препроцессинга превратится в:

Код: Выделить всё

vibor=0;
switch (vibor)
{
    case 0:
        break;
    case 4:
        break;
}
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Re: STM32 новичку в ARM что к чему

Сообщение SyncM »

Но можно ли как-то такое сделать по другому???
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25163
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32 новичку в ARM что к чему

Сообщение КРАМ »

Вероятно

Код: Выделить всё

shtok =: vxodX;
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: STM32 новичку в ARM что к чему

Сообщение menzoda »

SyncM писал(а):Но можно ли как-то такое сделать по другому???

Зависит от того как это дальше используется.
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Re: STM32 новичку в ARM что к чему

Сообщение SyncM »

vxod это какой то вход порта микроконтроллера
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: STM32 новичку в ARM что к чему

Сообщение menzoda »

Тогда так:

Код: Выделить всё

void do_something_with_port_1(void)
{
    // Делаем действие 1 с портом 1.
    // Делаем действие 2 с портом 1.
    // ...
    // Делаем действие N с портом 1.
}

void do_something_with_port_2(void)
{
    // Делаем действие 1 с портом 2.
    // Делаем действие 2 с портом 2.
    // ...
    // Делаем действие N с портом 2.
}

// Далее, где нужно вызываем либо первую, либо вторую функцию.
switch (vibor)
{
    case 0:
        do_something_with_port_1();
        break;
    case 4:
        do_something_with_port_1();
        break;
}



Или так:

Код: Выделить всё

void do_something_with_port(int vibor)
{
    if (vibor== 0)
        // Делаем действие 1 с портом 1.
    else if (vibor== 4)
        // Делаем действие 1 с портом 2.

    if (vibor== 0)
        // Делаем действие 2 с портом 1.
    else if (vibor== 4)
        // Делаем действие 2 с портом 2. 

    //...

    if (vibor== 0)
        // Делаем действие N с портом 1.
    else if (vibor== 4)
        // Делаем действие N с портом 2.
}


// Далее, вызываем функцию, и передаем ей "номер" порта, пускай она сама разбирается.
do_something_with_port(vibor)


Ну и такой вариант, посложнее:

Код: Выделить всё

volatile int *port_address;
switch (vibor)
{
    case 0:
        port_address = взять_адрес_порта(vxod5);
        break;
    case 4:
        port_address = взять_адрес_порта(vxod1);
        break;
}

// Далее работаем с конкретным адресом конкретного порта.
// ...


Внимание! Выше приведен всего лишь псевдокод. Не стоит пытаться бездумно его копировать и надеяться, что он заработает. Он годится только для общего понимания идеи.
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Re: STM32 новичку в ARM что к чему

Сообщение SyncM »

Спасибо решил так:

uint16_t pin[16]={GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3,
GPIO_Pin_4, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_7,
GPIO_Pin_8, GPIO_Pin_9, GPIO_Pin_10, GPIO_Pin_11,
GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14, GPIO_Pin_15};

GPIO_TypeDef* por[2]={GPIOA,GPIOB};

unsigned int shtok=pin[11];
unsigned int shtok5=por[0];

while(3){
if (GPIO_ReadInputDataBit (shtok5, shtok)==1){
String_print(10,10,"1111",Green,Black,2,2);
}
if (GPIO_ReadInputDataBit (shtok5, shtok)==0){
String_print(10,10,"1111",Red,Black,2,2);
}

}
стьюдент
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт мар 20, 2012 07:16:43

Re: STM32 новичку в ARM что к чему

Сообщение стьюдент »

Подскажите, можно ли как-нибудь в отладчике отследить изменение флага EOC (плата STM32L-Discovery среда Keil). И второй вопрос, при флаге EOCS=0 флаг EOC должен устанавливаться только в конце всех преобразований или только после первого преобразования из группы? Нужно ли чистить флаг EOC перед самым первым запуском преобразования?
Аватара пользователя
Porada
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Сб авг 22, 2015 08:32:37
Откуда: Киев

Re: STM32 новичку в ARM что к чему

Сообщение Porada »

Здравствуйте. У меня вопрос по тактированию STM32. Насколько я успел разобраться, предусмотрено три способа тактирования - от внешнего кварца, от внутреннего RC-генератора и с использованием множителя. При этом, если использовать внутренний RC-генератор страдает точность, до 1% при 25 градусах и более значительно (не помню цифру) при температуре от 0 до 75. Вопрос - при каких применениях эти смещения тактовой частоты скажутся на реальной работе устройства? Может, есть ещё какие-то недостатки применения внутреннего RC-генератора? Спасибо.
Нужно добиваться того чего хочется. В противном случае останется лишь довольствоваться тем, что есть.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: STM32 новичку в ARM что к чему

Сообщение isx »

Приветствую :) .
В stm32f30x.h отсутствует работа с регистрами USB. Решил добавить туда дефайны. Все поставил, но оказалось там нет описания для USB-> . Судя по другой периферии должны быть еще #define USB_BASE и #define USB. Должно быть что-то вроде:

Код: Выделить всё

#define USB                ((USB_TypeDef *) USB_BASE)
#define USB_BASE       (APB1PERIPH_BASE + 0xХХХХХХХХ)

Вот как раз этот XXXXXXXX адрес я никак и не могу найти. Может кто-нибудь подсказать где его взять и в правильном ли направлении я двигаюсь? :solder:
BorisSPB
Встал на лапы
Сообщения: 145
Зарегистрирован: Ср фев 01, 2012 10:55:53

Re: STM32 новичку в ARM что к чему

Сообщение BorisSPB »

Определения для USB находятся в STM32_USB-FS-Device_Lib_Vx.x.x. Надо скачать эту библиотеку с сайта ST.
А вообще все адреса указаны в Reference Manual.
СпойлерUniversal serial bus full-speed device interface (USB) RM0008
612/1096 Doc ID 13902 Rev 14
23.5 USB registers
The USB peripheral registers can be divided into the following groups:
● Common Registers: Interrupt and Control registers
● Endpoint Registers: Endpoint configuration and status
● Buffer Descriptor Table: Location of packet memory used to locate data buffers
All register addresses are expressed as offsets with respect to the USB peripheral registers
base address 0x4000 5C00, except the buffer descriptor table locations, which starts at the
address specified by the USB_BTABLE register. Due to the common limitation of APB1
bridges on word addressability, all register addresses are aligned to 32-bit word boundaries
although they are 16-bit wide. The same address alignment is used to access packet buffer
memory locations, which are located starting from 0x4000 6000.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: STM32 новичку в ARM что к чему

Сообщение isx »

BorisSPB писал(а):Надо скачать эту библиотеку с сайта ST.

Хочу без библиотеки сделать. Но для образца скачал и посмотрел дефайны. Нифига не понял :dont_know: Может кто-нибудь помочь разобраться?
Накидал по подобию в файле stm32f30x.h :
Спойлер

Код: Выделить всё

typedef struct
{
  __IO uint32_t CNTR;       
  __IO uint32_t ISTR;     
  __IO uint32_t FNR;       
  __IO uint32_t DADDR; 
  __IO uint32_t BTABLE; 
  __IO uint32_t EP;     
} USB_TypeDef;


#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */
#define APB1PERIPH_BASE       PERIPH_BASE
#define USB_BASE              (APB1PERIPH_BASE + 0xXXXXXXXX)
#define USB                   ((TIM_TypeDef *) USB_BASE)

/*                       ISTR interrupt events                                */
/******************************************************************************/
#define ISTR_CTR    (0x8000) /* Correct TRansfer (clear-only bit) */
#define ISTR_DOVR   (0x4000) /* DMA OVeR/underrun (clear-only bit) */
#define ISTR_ERR    (0x2000) /* ERRor (clear-only bit) */
#define ISTR_WKUP   (0x1000) /* WaKe UP (clear-only bit) */
#define ISTR_SUSP   (0x0800) /* SUSPend (clear-only bit) */
#define ISTR_RESET  (0x0400) /* RESET (clear-only bit) */
#define ISTR_SOF    (0x0200) /* Start Of Frame (clear-only bit) */
#define ISTR_ESOF   (0x0100) /* Expected Start Of Frame (clear-only bit) */
................................................


И по поводу адреса. Как я понял, регистры разнесены от 0x4000 6000, а другие от 0x4000 5C00.
Блин, казалось все таким простым, но куда ни копни - везде ж*па... :facepalm:
Аватара пользователя
Мяукните!
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Мяукните! »

Porada

Сколько знаю МК, каких-либо проблем РЦ не вызывали. Наоборот, они надёжнее - кварц потенциально ненадёжный элемент.

Но стабильность может оказаться и хуже 1%. Основной недостаток РЦ - низкая точность, вплоть до невозможности использовать протоколы, алгоритмы и интерфейсы, жёстко привязанные ко времени. Проблемы могут начаться даже на элементарном USART..
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение watchmaker »

Но стабильность может оказаться и хуже 1%.

На AVR нестабильность при изменении напряжения питания 2.7..5 В нестабильность могла доходить до 5%. Так что 1% это ещё неплохо.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Ответить

Вернуться в «ARM»