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

Кто любит RISC в жизни, заходим, не стесняемся.
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

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

Сообщение Galizin »

To ElCat
Посмотрите страничку
http://ziblog.ru/2012/09/09/linii-vvoda ... ast-3.html
там есть набор макросов для линий ввода-вывода. Как работать с этими макросами возможно написано в одной из тем ранее. Макросы гораздо сложнее Ваших. Но может будет полезно.

А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.

У ST есть AN по эмуляции EEPROM в FLASH. Вот моя заметка по этому поводу
http://we.easyelectronics.ru/STM32/prog ... flash.html
Вот реализация http://www.radiokot.ru/forum/viewtopic. ... 06#p889006 - хранение как во флеш так и в бекап сегменте
Реклама
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

ChipKiller писал(а):... самый "прямой"
ChipKiller писал(а): вообще то для "ногодрыга" у STM32 есть bit banding.....
..плюс в том что работая через bit banding не нужно думать о маске для остальных разрядов порта
А можно подробнее об этой фиче? Что это и как им пользоваться?
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

А можно подробнее об этой фиче? Что это и как им пользоваться?
Запросто - смотри здесь а еще лучше здесь. Лучше всего внимательно посмотреть 2-ую доку, не даром там аж 600 страниц :) Ну и не забывай про GPIO port bit set/reset register (GPIOx_BSRR)
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

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

#ifdef __ARM_ARCH_7M__
   //ARM Cortex BitBand access macros
   #define BITBAND_SRAM_REF   0x20000000
   #define BITBAND_SRAM_BASE  0x22000000
   // Convert SRAM address
   #define BITBAND_SRAM(addr, bit) ((volatile U8 *)((BITBAND_SRAM_BASE + ((U32)(addr)-BITBAND_SRAM_REF)*32 + (bit*4))))
   #define BITM( addr, bit ) (BITBAND_SRAM(addr,bit))

   #define BITBAND_PERI_REF   0x40000000
   #define BITBAND_PERI_BASE  0x42000000
   // Convert PERIPHERAL address
   #define BITBAND_PERI(addr, bit) ((volatile U8 *)((BITBAND_PERI_BASE + ((U32)(addr)-BITBAND_PERI_REF)*32 + (bit*4))))
   #define BITP( addr, bit ) (BITBAND_PERI(addr,bit))
#endif
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

#define PortBbit8 (*((volatile unsigned long *) 0x422181A0 ))
PB8 = 1; //включаем светодиод
Это то что мне надо! :) Но как рассчитать эти адреса в моём случае???
Реклама
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

гляньте на один пост выше - там все есть
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

ELcat писал(а):Но как рассчитать эти адреса в моём случае???
... да уж........ а посмотреть пост выше или глянуть в конец файла Constants.inc из моего проекта? Расписано лучше не придумаешь. Берешь из Dataseet_а адрес периферии и подставляешь в макрос ... и все.
Т.е. битовое поле представлено 32-битным адресом - пишешь по адресу 1 - установка бита, пишешь 0 - сброс.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

ChipKiller писал(а): ... да уж........
Мужики! Вы, пожалуйста, на меня не серчайте. У меня нету тех знаний и навыков которые есть у вас и потому каждая новая строчка, что вы пишете, воспринимается мной как... эммм... как новый иероглиф при изучении китайской грамоты. :)
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

этот кусок - с главного сайта ARM, там же и пример использования: http://infocenter.arm.com/help/index.js ... a4203.html
по поводу адресов периферии обращайтесь к stm32f10x.h
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

Мужики! Вы, пожалуйста, на меня не серчайте....
... дело не в этом - просто уже не знаю как помочь....
если нет понимания как работать с bit banding_ом - аналог "ногодрыга" через BSRR

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

GPIOB->ODR |= GPIO_ODR_ODR_7; 
аналог с использованием BSRR
GPIOB->BSRR = GPIO_BSRR_BS_7; // или GPIOB->BSRR = (uint32_t)(1<<7);

GPIOB->ODR &=~GPIO_ODR_ODR_7;;
аналог с использованием BSRR
GPIOB->BSRR = GPIO_BSRR_BR_7; // или GPIOB->BSRR = (uint32_t)(1<<(7+16));

на просторах инета есть обзорная статья про STM32 на русском (pdf) - прочти, по крайней мере будет меньше ненужных вопросов. В принципе Datasheet достаточно хорош, чтобы обойтись без либ от ST.....
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

ChipKiller писал(а):

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

GPIOB->ODR |= GPIO_ODR_ODR_7; 
аналог с использованием BSRR
GPIOB->BSRR = GPIO_BSRR_BS_7; // или GPIOB->BSRR = (uint32_t)(1<<7);

GPIOB->ODR &=~GPIO_ODR_ODR_7;;
аналог с использованием BSRR
GPIOB->BSRR = GPIO_BSRR_BR_7; // или GPIOB->BSRR = (uint32_t)(1<<(7+16));
Да с этим я разобрался, а вот с бит-бндинг...
Вообще я эту среду не понимаю. Нах..я было создавать такую хрень в которой нельзя работать без предварительных часов секса с настройкой самой среды. Каждая привычная мелочь тут не работает. Для меня, например, полный ах..й от того, что безобидная, сцука, на первый взгляд фраза:
volatile unsigned int x=0;
x += 1;
вызывает, блеать, сразу аж три е..учих ошибки:
Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe247]: variable "x" has already been defined (at line 14)
Error[Pe065]: expected a ";"
Иэто бля имеет место в ах..ительно платном пакете за немеряное количество зелёных бумажек???
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Ну так мне кто-нибудь подскажет, почему выскочили эти ошибки?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

ELcat писал(а): Но как рассчитать эти адреса в моём случае???

А не надо ничего рассчитывать... пусть препроцессор считает...

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

   // Convert SRAM address
   #define BITBAND_SRAM(addr, bit) (SRAM_BB_BASE + ((uint32_t)(addr)-SRAM_BASE)*32 + (bit*4))
   
   // Convert PERIPHERAL address
   #define BITBAND_PERI(addr, bit) (PERIPH_BB_BASE + ((uint32_t)(addr)-PERIPH_BASE)*32 + (bit*4))   

SRAM_BB_BASE, SRAM_BASE, PERIPH_BB_BASE и PERIPH_BASE уже определены в хэдэре МК...
Далее нужно определить чем рулить...

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

    #define PortCbit8    (*((volatile uint32_t *) BITBAND_PERI(&(GPIOC->ODR) , 8) ))
    #define PortCbit9    (*((volatile uint32_t *) BITBAND_PERI(&(GPIOC->ODR) , 9) ))

    #define PortBbit2    (*((volatile uint32_t *) BITBAND_PERI(&(GPIOB->ODR) , 2) ))

Где GPIOC->ODR и GPIOB->ODR тоже стандартно определены...
Остаётся махать ногами в проге...

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

PortCbit8 = 1;
PortCbit9 = 1;
PortBbit2 = 1;

PortCbit8 = 0;
PortCbit9 = 0;
PortBbit8 = 0;
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

ELcat писал(а): почему выскочили эти ошибки?

Ваш косяк... разбирайтесь...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

ELcat писал(а):Вообще я эту среду не понимаю. Нах..я было создавать такую хрень в которой нельзя работать без предварительных часов секса с настройкой самой среды. Каждая привычная мелочь тут не работает. Для меня, например, полный ах..й от того, что безобидная, сцука, на первый взгляд фраза:

:))) :)))
дело в том, что ты слишком привык к 'среде'.
а тут не среда, а наконец стандартный взрослый компилятор.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Мужики, я всё таки хочу вернуться к вопросу о типах переменных char, int, word. Что из них 8, 16 и 32 бита? В CVAVR разрядность соответствует вышеуказанной, а как здесь?
И, что странно, сколько перегуглил статей, нигде и никто не даёт прямых ответов. На том же easyelectronics.ru кучу статей перечитал ценности от которых для меня никакой, потому как так и не получил прямых ответов на свои вопросы. Почему что касается 8051, PIC, AVR, MSP и некоторых других архитектур люди пишут настолько понятные и прозрачные статьи, по которым будучи даже полным чайником и неучем можно хоть как-то начать, освоиться и достичь какого-нибудь результата. Я в своё время по книжке Белова за 2 недели испробовал всю периферию AVR. Далее по книжке Редькина (за которую кстати выложил не малые для меня деньги) попытался разобраться с SAM7S - безрезультатно. Книга как будто бы написана на китайском. Может вы подскажете что можно почитать, для того чтобы хоть как-то начать работу со средой IAR? У меня уже просто пропадает желание, поскольку каждая новая строчка = ошибка.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

ELcat писал(а):Может вы подскажете что можно почитать, для того чтобы хоть как-то начать работу со средой IAR?

http://dev-zzo.net/storage/books/5-7940 ... 4-v0_1.pdf

Нет никакой 'среды'. Есть просто компилятор стандартного языка C. Его и надо для начала разговора освоить.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

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

Сообщение спящий »

У меня такой вопрос: сложно перейти от AVR к ARM? это как заново начинать? и какой ARM самый простой,самый дешевый,соответсвенно программатор,и главное дофига примеров?ну я думаю в AVR это tinny2313.
И сильная разница в них то,в чем плюсы?кроме количества перефирий? Я думаю главное это частота? на АВР небольше 40 МГц

И вообще сложно перейти от одного ARM к другому ARM?всмысле коды для них сильно меняются(допустим ARM7 и ARM9)
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

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

Сообщение Foks »

Самый дешевый - STM32. Общего с AVR очень мало. Но, знание Си - его не пропьешь.

ELcat, резюмируя последние две страницы темы, скажу, что отвечать на Ваши вопросы - медвежья услуга. Вы так никогда не научитесь читать документацию и учиться чему-нибудь самостоятельно.
Giggity giggity goo!
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

ELcat, выложите уже проект в архиве.
Ответить

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