STM32 новичку в ARM что к чему
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
Да, от встроенного HSI, на 16 МГц.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

- Реклама
Re: STM32 новичку в ARM что к чему
Сейчас сижу с паяльником. Пытаюсь запилить 3410 на проводках + контактные колодки, чтоб плату не поганить. 96х65@1bit, конечно, не "щербет", но тоже можно довольно таки полезно поиграться 
Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
В IAR есть неплохой набор документации в information center. Рассказывать на словах долго - это ж не анекдот-другой рассказать. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... при чем тут IAR - C он и в Африке C. А вообще, чтобы не запутаться, лучше ИМХО указывать явно uint8_t, uint16_t, uint32_t, int32_t и т.д. ELcat либо "штурмуй" С, либо учи ARM-ассемблер (а лучше все вместеELcat писал(а):Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
Re: STM32 новичку в ARM что к чему
А ARM-ассемблер тут при чём? Неужели без него никак??? Я спросил о том, что, например, в CVAVR есть такие вещи как:
unsigned char mass[5][7]:{......}
или
flash unsigned char mass[5][7]:{......}
или
eeprom unsigned char mass[5][7]:{......}
В первом случае массив будет размещён компилятором в RAM, во втором во FLASH, а в третьем компилятор запхнёт его в EEPROM. Поскольку STM32 также совмещает все три типа памяти, то как в IAR в Си организована работа с ними?
unsigned char mass[5][7]:{......}
или
flash unsigned char mass[5][7]:{......}
или
eeprom unsigned char mass[5][7]:{......}
В первом случае массив будет размещён компилятором в RAM, во втором во FLASH, а в третьем компилятор запхнёт его в EEPROM. Поскольку STM32 также совмещает все три типа памяти, то как в IAR в Си организована работа с ними?
- Реклама
Re: STM32 новичку в ARM что к чему
eeprom в современных МК большая экзотика. про него сразу забудем.
в АРМах флеш и срам находятся в едином адресном пространстве так что чтение из них производится совершенно единообразно.
типовой линкер скрипт кладет сегмент .rodata во флеш.
Итого - просто создай массив с модификатором const - и он автоматически окажется во флеше.
в АРМах флеш и срам находятся в едином адресном пространстве так что чтение из них производится совершенно единообразно.
типовой линкер скрипт кладет сегмент .rodata во флеш.
Итого - просто создай массив с модификатором const - и он автоматически окажется во флеше.
Re: STM32 новичку в ARM что к чему
полезно иногда почитать стандарты, многие вопросы отпадут.
по стандарту модификатор const поместит переменную в сегмент кода, то есть во Flash.
по стандарту модификатор const поместит переменную в сегмент кода, то есть во Flash.
Re: STM32 новичку в ARM что к чему
А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.Satyr писал(а):eeprom в современных МК большая экзотика. про него сразу забудем.
Вот из даташита на мой проц:
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
Re: STM32 новичку в ARM что к чему
ELcat писал(а):А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.Satyr писал(а):eeprom в современных МК большая экзотика. про него сразу забудем.
Зависит от того, что это за данные, сколько их и как часто обновлять. И в каких условиях работает устройство.
Тут уж вплоть от FRAMа и SRAMа с батарейкой до хранения во внутреннем флеше МК
еепром редкость. и редко настоящий. Так на память только stm32L и lpc178x на ум приходят. В первом не интересовался, во втором еепром - аппаратная эмуляция над мелкостраничным флешом.
Re: STM32 новичку в ARM что к чему
У Фрискейла много контроллеров с EEPROM. Правда, настоящий он или нет не знаю.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
и к чему эта информация в теме об STM32?
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: STM32 новичку в ARM что к чему
Эмуляция или настоящая - какая разница, главное чтобы гарантировали не менее 100к циклов зап./стир., а всё остальное не суть важно.
Подцепил я таки 3410 дисплей. Попытаюсь пока реализовать запуск "на костылях", то есть с программной эмуляцией SPI. Затем, если получится, переведу на аппаратный.
Подцепил я таки 3410 дисплей. Попытаюсь пока реализовать запуск "на костылях", то есть с программной эмуляцией SPI. Затем, если получится, переведу на аппаратный.
Re: STM32 новичку в ARM что к чему
Подскажите в чём ошибка. Для удобства обращения переназвал некоторые порты:
#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 такое запросто канает, а здесь нет?
Уже прям пугать и раздражать начинает. Как ни шаг - так граблями в лоб, как ни новая строчка - так получи ошибку.
#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 что к чему
... потому что С в CVAVR отличается от С-стандарта. ПоробуйELcat писал(а):Почему в CVAVR такое запросто канает, а здесь нет?
Код: Выделить всё
#define Blue (GPIOB->ODR & GPIO_ODR_ODR_6)
#define Green (GPIOB->ODR & GPIO_ODR_ODR_7)PS. вообще то для "ногодрыга" у STM32 есть bit banding.....
Re: STM32 новичку в ARM что к чему
Flash, последний сегмент выделите под хранение. Если организовать как кольцевой буфер, то количество циклов перезаписи увеличится многократноА где ж тогда переменные хранить? 24Сххх цеплять?
Re: STM32 новичку в ARM что к чему
один сегмент - это если потерять данные не очень ссыкотно
если сыкотно - то два.
вобще и у ст, и у нхп (и вобще много кого) есть аппноты и готовые исходники эмуляции еепром на паре флешовых страниц, ищите.
если сыкотно - то два.
вобще и у ст, и у нхп (и вобще много кого) есть аппноты и готовые исходники эмуляции еепром на паре флешовых страниц, ищите.
Re: STM32 новичку в ARM что к чему
Не помоглоChipKiller писал(а): Поробуй.. и вообще с макросами поаккуратнееКод: Выделить всё
#define Blue (GPIOB->ODR & GPIO_ODR_ODR_6)
#define Green (GPIOB->ODR & GPIO_ODR_ODR_7)
Re: STM32 новичку в ARM что к чему
ну подумайте что будет если подставить ваш макрос в выражение Green=0; Бред, поэтому не скомпилится.Не помогло
Нужно как-то так:
Код: Выделить всё
#define Blue(b) if (b) GPIOB->ODR |= GPIO_ODR_ODR_6; else GPIOB->ODR &= ~GPIO_ODR_ODR_6;
Blue(0); Blue(1);
Re: STM32 новичку в ARM что к чему
Да, так работает. Но неужели нету какого-то более прямого обращения к регистру порта или его конкретному биту???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 что к чему
... самый "прямой"ELcat писал(а):Но неужели нету какого-то более прямого обращения к регистру порта или его конкретному биту???
..плюс в том что работая через bit banding не нужно думать о маске для остальных разрядов порта (ну и есть регистр GPIOx_BSRR для stm32f1xx - как он называется для stm32l1xx уточни )ChipKiller писал(а): вообще то для "ногодрыга" у STM32 есть bit banding.....


