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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

Да, от встроенного HSI, на 16 МГц.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Реклама
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Сейчас сижу с паяльником. Пытаюсь запилить 3410 на проводках + контактные колодки, чтоб плату не поганить. 96х65@1bit, конечно, не "щербет", но тоже можно довольно таки полезно поиграться :)
Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
Реклама
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

В IAR есть неплохой набор документации в information center. Рассказывать на словах долго - это ж не анекдот-другой рассказать. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

ELcat писал(а):Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
... при чем тут IAR - C он и в Африке C. А вообще, чтобы не запутаться, лучше ИМХО указывать явно uint8_t, uint16_t, uint32_t, int32_t и т.д. ELcat либо "штурмуй" С, либо учи ARM-ассемблер (а лучше все вместе :) )
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

А ARM-ассемблер тут при чём? Неужели без него никак??? Я спросил о том, что, например, в CVAVR есть такие вещи как:
unsigned char mass[5][7]:{......}
или
flash unsigned char mass[5][7]:{......}
или
eeprom unsigned char mass[5][7]:{......}
В первом случае массив будет размещён компилятором в RAM, во втором во FLASH, а в третьем компилятор запхнёт его в EEPROM. Поскольку STM32 также совмещает все три типа памяти, то как в IAR в Си организована работа с ними?
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

eeprom в современных МК большая экзотика. про него сразу забудем.

в АРМах флеш и срам находятся в едином адресном пространстве так что чтение из них производится совершенно единообразно.
типовой линкер скрипт кладет сегмент .rodata во флеш.

Итого - просто создай массив с модификатором const - и он автоматически окажется во флеше.
Реклама
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

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

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

Сообщение ELcat »

Satyr писал(а):eeprom в современных МК большая экзотика. про него сразу забудем.
А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.
Вот из даташита на мой проц:
Flash program memory, EEPROM data memory, SRAM data memory, registers and I/O
ports are organized within the same linear 4 Gbyte address space.

– Up to 384 Kbytes of Flash program memory and up to 12 Kbytes of data EEPROM
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

ELcat писал(а):
Satyr писал(а):eeprom в современных МК большая экзотика. про него сразу забудем.
А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.

Зависит от того, что это за данные, сколько их и как часто обновлять. И в каких условиях работает устройство.
Тут уж вплоть от FRAMа и SRAMа с батарейкой до хранения во внутреннем флеше МК

еепром редкость. и редко настоящий. Так на память только stm32L и lpc178x на ум приходят. В первом не интересовался, во втором еепром - аппаратная эмуляция над мелкостраничным флешом.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

У Фрискейла много контроллеров с EEPROM. Правда, настоящий он или нет не знаю.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

и к чему эта информация в теме об STM32?
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Эмуляция или настоящая - какая разница, главное чтобы гарантировали не менее 100к циклов зап./стир., а всё остальное не суть важно.

Подцепил я таки 3410 дисплей. Попытаюсь пока реализовать запуск "на костылях", то есть с программной эмуляцией SPI. Затем, если получится, переведу на аппаратный.
Kdisp.jpg
(63.69 КБ) 449 скачиваний
Kont.jpg
(62.34 КБ) 349 скачиваний
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Подскажите в чём ошибка. Для удобства обращения переназвал некоторые порты:
#define Button GPIOA->IDR & GPIO_IDR_IDR_0
#define Blue GPIOB->ODR & GPIO_ODR_ODR_6
#define Green GPIOB->ODR & GPIO_ODR_ODR_7
Далее с
while ( Button )
никаких проблем не возникает, а вот со всеми строками
Green=0;
Blue=0;
возникают ошибки типа
Error[Pe137]: expression must be a modifiable lvalue
Почему в CVAVR такое запросто канает, а здесь нет?

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

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

Сообщение ChipKiller »

ELcat писал(а):Почему в CVAVR такое запросто канает, а здесь нет?
... потому что С в CVAVR отличается от С-стандарта. Поробуй

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

#define Blue (GPIOB->ODR & GPIO_ODR_ODR_6)
#define Green (GPIOB->ODR & GPIO_ODR_ODR_7)
.. и вообще с макросами поаккуратнее :)

PS. вообще то для "ногодрыга" у STM32 есть bit banding.....
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

А где ж тогда переменные хранить? 24Сххх цеплять?
Flash, последний сегмент выделите под хранение. Если организовать как кольцевой буфер, то количество циклов перезаписи увеличится многократно
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

один сегмент - это если потерять данные не очень ссыкотно :)))
если сыкотно - то два.

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

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

Сообщение ELcat »

ChipKiller писал(а): Поробуй

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

#define Blue (GPIOB->ODR & GPIO_ODR_ODR_6)
#define Green (GPIOB->ODR & GPIO_ODR_ODR_7)
.. и вообще с макросами поаккуратнее :)
Не помогло :(
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

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

Сообщение polyname »

Не помогло :(
ну подумайте что будет если подставить ваш макрос в выражение Green=0; Бред, поэтому не скомпилится.
Нужно как-то так:

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

#define Blue(b) if (b) GPIOB->ODR |= GPIO_ODR_ODR_6; else GPIOB->ODR &= ~GPIO_ODR_ODR_6;
Blue(0); Blue(1);
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

polyname писал(а):Нужно как-то так:

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

#define Blue(b) if (b) GPIOB->ODR |= GPIO_ODR_ODR_6; else GPIOB->ODR &= ~GPIO_ODR_ODR_6;
Blue(0); Blue(1);
Да, так работает. Но неужели нету какого-то более прямого обращения к регистру порта или его конкретному биту???
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

ELcat писал(а):Но неужели нету какого-то более прямого обращения к регистру порта или его конкретному биту???
... самый "прямой"
ChipKiller писал(а): вообще то для "ногодрыга" у STM32 есть bit banding.....
..плюс в том что работая через bit banding не нужно думать о маске для остальных разрядов порта (ну и есть регистр GPIOx_BSRR для stm32f1xx - как он называется для stm32l1xx уточни )
Ответить

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