roboforum.ru

Технический форум по робототехнике.

Изучаем STM32F0Discovery

Изучаем STM32F0Discovery

dccharacter » 13 июн 2012, 21:30

Я тут потихоньку начинаю с F0 разбираться. Пока сюрпризы только неприятные:
1) CooCox не поддерживает F0 (только F1 и F4),
ок, запустил кейл.
2) Keil по кнопке Download не шьет. Это какая-то супердавняя фишка, у меня так было еще с VL-Discovery. Мож его обновить надо, хз.
3) Осваивать решил не с чего-нибудь, а с Touch-Sens'a. Благо в референсе написано, что будет вот прям в лет работать с родной библиотекой STM. Скачал библиотеку, поставил, почитал мануальчик, прописал/добавил/изменил...
..\..\..\..\Libraries\CMSIS\Include\core_cmFunc.h(213): error: #1114: this feature not supported on target architecture/processor
..\..\..\..\Libraries\CMSIS\Include\core_cmFunc.h(226): error: #1114: this feature not supported on target architecture/processor
..\..\..\..\Libraries\CMSIS\Include\core_cmFunc.h(226): warning: #550-D: variable "__regBasePri" was set but never used
..\..\..\..\Libraries\CMSIS\Include\core_cmFunc.h(239): error: #1114: this feature not supported on target architecture/processor
..\..\..\..\Libraries\CMSIS\Include\core_cmFunc.h(252): error: #1114: this feature not supported on target architecture/processor

И т.д. Т.е. надо в эту библиотеку подложить драйвера камня, переписать дефайны и т.д. Вот нахера было писать, что поддерживаем библиотеку? Если проще с пятью регистрами разобраться, чем вот эту вакханалию разбирать?

Из приятного - в комплекте борда для прототипирования. Можно шилд построить :-) И (вроде как) видел упоминание calendar RTC w/alarm. Тоже неплохо. Т.е. железо отличное. А вот гемора для "разработчика" - не оберешься. Я понимаю, что вы в ноутпадах пишете и через командную строку заливаете, но меня это чо-то как-то не возбуждает.
А, да! Компараторы есть! Не знаю почему, но у меня это поросячий восторг вызывает.

Re: Изучаем STM32F0Discovery

dccharacter » 14 июн 2012, 01:41

Keil не понимает запись в форме 0bXXXXXXXX для 32-битного двоичного числа. А может и для двоичного числа любой разрядности...

Re: Изучаем STM32F0Discovery

elmot » 14 июн 2012, 07:52

попробуй 0bXXXXXL

Добавлено спустя 5 минут 22 секунды:
странно, у меня и так понимает.

Re: Изучаем STM32F0Discovery

Romikgy » 14 июн 2012, 10:03

мож кейл обновить ?

Re: Изучаем STM32F0Discovery

dccharacter » 15 июн 2012, 01:40

Поставил Атоллик. Вроде хороший (Еклипс, дебаг рестартит без ресета ну и по мелочи). Но есть странности - чтобы зашить прошивку, надо дебаг запустить. Без этого не нашел как.

А USART кто-нить уже запустил? Там что-то как-то чудесно пины настраиваются и альтернативные функции. Вот это чо-то не работает:

Код: Выделить всёРазвернуть
void GPIO_Configure (void)
{
   GPIO_InitTypeDef GPIO_InitStructure;

   /* USART Pins Config
    * PA9 - USART1_TX
    * PA10 - USART1_RX
    */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //TX
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   GPIO_PinAFConfig(GPIOA, GPIO_Pin_9, GPIO_AF_1);
   GPIO_PinAFConfig(GPIOA, GPIO_Pin_10, GPIO_AF_1);
}

void USART_Configure (void)
{
   USART_InitTypeDef USART_InitStructure;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
   USART_InitStructure.USART_BaudRate = 115200;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Parity = USART_Parity_No;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_Init(USART1, &USART_InitStructure);

   USART_Cmd(USART1, ENABLE);

   //printf("Starting");
   USART_SendData(USART1, 'a');
}


Добавлено спустя 1 час 5 минут 13 секунд:
dccharacter писал(а):А USART кто-нить уже запустил? Там что-то как-то чудесно пины настраиваются и альтернативные функции.

О, надо же. Собрал по крупицам за три часа.

Добавлено спустя 1 минуту 2 секунды:
Чо-то мне не нравится, что Standard Peripherial Library для STM32F1 и STM32F0 охренительно разные. Чо чудить-то?

Добавлено спустя 26 минут 24 секунды:
e:/program files (x86)/atollic/truestudio for arm lite 3.1.0/armtools/bin/../lib/gcc/arm-atollic-eabi/4.6.2/../../../../arm-atollic-eabi/bin/ld.exe: Code-size limitation exceeded!
This version of Atollic(r) TrueSTUDIO(r) is limited to 32KB code-size (8KB on Cortex-M0 and Cortex-M1). Please purchase Atollic(r)
Жесть. Это стандартная библиотека + tiny printf сожрали 8 кб. Я даже код не успел начать писать.

Добавлено спустя 2 минуты 9 секунд:
Пацаны, чо-то нет счастья :-(

Re: Изучаем STM32F0Discovery

dccharacter » 15 июн 2012, 20:40

ARGHHHHHHH!!!!!!!! Блин, разбираться с их тач-"библиотекой" - это адище какое-то. Чем они думали вообще, когда ее писали? Документации приходится прочитать в три раза больше, чем при реализации без библиотеки, футпринт зверский. Почему нельзя просто алгоритм опубликовать работы контроллера? Люди дальше сами все библиотеки напишут, которые надо.

Re: Изучаем STM32F0Discovery

Dmitry__ » 15 июн 2012, 23:42

Воооот, после этого начинаешь задумываться - мож не зря над нами асмщики прикалываются :roll:

Re: Изучаем STM32F0Discovery

dccharacter » 16 июн 2012, 01:24

Dmitry__ писал(а):Воооот, после этого начинаешь задумываться - мож не зря над нами асмщики прикалываются :roll:

Ты завел тач сенс? Или прикалываешься гипотетически?

Re: Изучаем STM32F0Discovery

Dmitry__ » 16 июн 2012, 15:01

Гипотетически, но не прикалываюсь. :oops:
Я полазил дебагером по инициализации, жесть, послал к аллаху до лучших времен. Причесывать еще один девайс не готов, хватает ez430. Где-то находил форум (казус?), там народ переделывал инициализацию gpio, так что ты не одинок :)
А вообще наблюдение:
Сколько потрачено тобой времени на понимание инкапсулированных библ, не стоит того. Проще, быстрее, проффнее - изучить хардварный пдф :roll:

Re: Изучаем STM32F0Discovery

dccharacter » 16 июн 2012, 15:31

Не, я завел GPIO, USART и даже тач. Но с тачем абсолютно та же проблема, что и на ПИК-е была с хардовым тачем - периодически плавает результат. Периодичность всегда одна и та же, плавает всегда одинаково, пример:
Val - 3
Val - 63
Val - 185
Val - 3
Val - 2
Val - 2
Val - 46
Val - 165
Val - 11
Val - 2
Val - 2
Val - 31
Val - 137
Val - 263
Va l - 2
Val - 2
Val - 10
Val - 130
Val - 235
Val - 2
Val - 2

Т.е. 2-2-30-130-230-2-2-30-130-230 и т.д. Вот что было на ПИК-е у меня: http://www.microchip.su/showthread.php?t=11287

Причем бред в том, что вот эти показания, которые я привел выше, замеряются с частото 1Гц (один!). В камне включен spread spectrum, т.е. попадание в гармонику исключено. Три разных камня - pic16f, pic16f, stm32f0. Разные методы измерений - в ПИК-ах прецизионный источник тока такой-сякой-разэдакий, в СТМ-ах просто перенос с кондеров. И вот одно и то же блин.

Re: Изучаем STM32F0Discovery

Angel71 » 16 июн 2012, 15:36

вариант внешней микры для тача приемлем (как вариант at42qt2160)?

Re: Изучаем STM32F0Discovery

dccharacter » 16 июн 2012, 15:45

Angel71 писал(а):вариант внешней микры для тача приемлем (как вариант at42qt2160)?

Да я ничего конкретного не делаю, просто МК изучаю, поэтому нет, не приемлем :-)

Re: Изучаем STM32F0Discovery

Dmitry__ » 16 июн 2012, 17:20

dccharacter писал(а):Вот что было на ПИК-е у меня: http://www.microchip.su/showthread.php?t=11287

Так ты в результате разрулил пик?
А компилер "DELAY" не оптимизировал в zero ???:
Код: Выделить всёРазвернуть
#define DELAY for(i=0;i<COUNT;i++)
//
        CTMUCONHbits.IDISSEN = 1; //drain charge on the circuit
        DELAY; //wait 125us
        DELAY; //wait 125us
        CTMUCONHbits.IDISSEN = 0; //end drain of circuit


Может как в аппнот 1250 делать?
Код: Выделить всёРазвернуть
Nop(); Nop(); Nop(); Nop();
Nop(); Nop(); Nop(); Nop();

Да и постоянная инициализация пинов в "while(1)" не есть гуд.
Код: Выделить всёРазвернуть
        ANSELAbits.ANSA2=0;
        TRISA = 0x00; //set channel 2 as an input
        PORTA = 0x00;
        DELAY;
        DELAY;
        // Configure AN2 as an analog channel
        ANSELAbits.ANSA2=1;
        TRISAbits.TRISA2=1;

В общем, листинг в студию...

Re: Изучаем STM32F0Discovery

legion » 16 июн 2012, 17:52

Dmitry__ писал(а):Nop(); Nop(); Nop(); Nop();
Nop(); Nop(); Nop(); Nop();

Dmitry__ писал(а):Воооот, после этого начинаешь задумываться - мож не зря над нами асмщики прикалываются :roll:

:D

Re: Изучаем STM32F0Discovery

Dmitry__ » 16 июн 2012, 17:56

Гыыыы
Не заметил :)
А я в том и в этом стане :oops:


cron
Rambler\'s Top100 Mail.ru counter