STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
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 - хранение как во флеш так и в бекап сегменте
Посмотрите страничку
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 - хранение как во флеш так и в бекап сегменте
- Реклама
Re: STM32 новичку в ARM что к чему
А можно подробнее об этой фиче? Что это и как им пользоваться?ChipKiller писал(а):... самый "прямой"..плюс в том что работая через bit banding не нужно думать о маске для остальных разрядов портаChipKiller писал(а): вообще то для "ногодрыга" у STM32 есть bit banding.....
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
Код: Выделить всё
#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
Re: STM32 новичку в ARM что к чему
Это то что мне надо!#define PortBbit8 (*((volatile unsigned long *) 0x422181A0 ))
PB8 = 1; //включаем светодиод
- Реклама
Re: STM32 новичку в ARM что к чему
гляньте на один пост выше - там все есть
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... да уж........ а посмотреть пост выше или глянуть в конец файла Constants.inc из моего проекта? Расписано лучше не придумаешь. Берешь из Dataseet_а адрес периферии и подставляешь в макрос ... и все.ELcat писал(а):Но как рассчитать эти адреса в моём случае???
Т.е. битовое поле представлено 32-битным адресом - пишешь по адресу 1 - установка бита, пишешь 0 - сброс.
Re: STM32 новичку в ARM что к чему
Мужики! Вы, пожалуйста, на меня не серчайте. У меня нету тех знаний и навыков которые есть у вас и потому каждая новая строчка, что вы пишете, воспринимается мной как... эммм... как новый иероглиф при изучении китайской грамоты.ChipKiller писал(а): ... да уж........
Re: STM32 новичку в ARM что к чему
этот кусок - с главного сайта ARM, там же и пример использования: http://infocenter.arm.com/help/index.js ... a4203.html
по поводу адресов периферии обращайтесь к stm32f10x.h
по поводу адресов периферии обращайтесь к stm32f10x.h
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... дело не в этом - просто уже не знаю как помочь....Мужики! Вы, пожалуйста, на меня не серчайте....
если нет понимания как работать с 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.....
Re: STM32 новичку в ARM что к чему
Да с этим я разобрался, а вот с бит-бндинг...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 ";"
Иэто бля имеет место в ах..ительно платном пакете за немеряное количество зелёных бумажек???
Re: STM32 новичку в ARM что к чему
Ну так мне кто-нибудь подскажет, почему выскочили эти ошибки?
Re: STM32 новичку в ARM что к чему
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;
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
ELcat писал(а): почему выскочили эти ошибки?
Ваш косяк... разбирайтесь...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
ELcat писал(а):Вообще я эту среду не понимаю. Нах..я было создавать такую хрень в которой нельзя работать без предварительных часов секса с настройкой самой среды. Каждая привычная мелочь тут не работает. Для меня, например, полный ах..й от того, что безобидная, сцука, на первый взгляд фраза:
дело в том, что ты слишком привык к 'среде'.
а тут не среда, а наконец стандартный взрослый компилятор.
Re: STM32 новичку в ARM что к чему
Мужики, я всё таки хочу вернуться к вопросу о типах переменных char, int, word. Что из них 8, 16 и 32 бита? В CVAVR разрядность соответствует вышеуказанной, а как здесь?
И, что странно, сколько перегуглил статей, нигде и никто не даёт прямых ответов. На том же easyelectronics.ru кучу статей перечитал ценности от которых для меня никакой, потому как так и не получил прямых ответов на свои вопросы. Почему что касается 8051, PIC, AVR, MSP и некоторых других архитектур люди пишут настолько понятные и прозрачные статьи, по которым будучи даже полным чайником и неучем можно хоть как-то начать, освоиться и достичь какого-нибудь результата. Я в своё время по книжке Белова за 2 недели испробовал всю периферию AVR. Далее по книжке Редькина (за которую кстати выложил не малые для меня деньги) попытался разобраться с SAM7S - безрезультатно. Книга как будто бы написана на китайском. Может вы подскажете что можно почитать, для того чтобы хоть как-то начать работу со средой IAR? У меня уже просто пропадает желание, поскольку каждая новая строчка = ошибка.
И, что странно, сколько перегуглил статей, нигде и никто не даёт прямых ответов. На том же easyelectronics.ru кучу статей перечитал ценности от которых для меня никакой, потому как так и не получил прямых ответов на свои вопросы. Почему что касается 8051, PIC, AVR, MSP и некоторых других архитектур люди пишут настолько понятные и прозрачные статьи, по которым будучи даже полным чайником и неучем можно хоть как-то начать, освоиться и достичь какого-нибудь результата. Я в своё время по книжке Белова за 2 недели испробовал всю периферию AVR. Далее по книжке Редькина (за которую кстати выложил не малые для меня деньги) попытался разобраться с SAM7S - безрезультатно. Книга как будто бы написана на китайском. Может вы подскажете что можно почитать, для того чтобы хоть как-то начать работу со средой IAR? У меня уже просто пропадает желание, поскольку каждая новая строчка = ошибка.
Re: STM32 новичку в ARM что к чему
ELcat писал(а):Может вы подскажете что можно почитать, для того чтобы хоть как-то начать работу со средой IAR?
http://dev-zzo.net/storage/books/5-7940 ... 4-v0_1.pdf
Нет никакой 'среды'. Есть просто компилятор стандартного языка C. Его и надо для начала разговора освоить.
Re: STM32 новичку в ARM что к чему
У меня такой вопрос: сложно перейти от AVR к ARM? это как заново начинать? и какой ARM самый простой,самый дешевый,соответсвенно программатор,и главное дофига примеров?ну я думаю в AVR это tinny2313.
И сильная разница в них то,в чем плюсы?кроме количества перефирий? Я думаю главное это частота? на АВР небольше 40 МГц
И вообще сложно перейти от одного ARM к другому ARM?всмысле коды для них сильно меняются(допустим ARM7 и ARM9)
И сильная разница в них то,в чем плюсы?кроме количества перефирий? Я думаю главное это частота? на АВР небольше 40 МГц
И вообще сложно перейти от одного ARM к другому ARM?всмысле коды для них сильно меняются(допустим ARM7 и ARM9)
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Самый дешевый - STM32. Общего с AVR очень мало. Но, знание Си - его не пропьешь.
ELcat, резюмируя последние две страницы темы, скажу, что отвечать на Ваши вопросы - медвежья услуга. Вы так никогда не научитесь читать документацию и учиться чему-нибудь самостоятельно.
ELcat, резюмируя последние две страницы темы, скажу, что отвечать на Ваши вопросы - медвежья услуга. Вы так никогда не научитесь читать документацию и учиться чему-нибудь самостоятельно.
Giggity giggity goo!
-
TripleKill
- Вымогатель припоя
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Re: STM32 новичку в ARM что к чему
ELcat, выложите уже проект в архиве.


