Страница 17 из 446

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

Добавлено: Вт окт 09, 2012 15:27:58
SubDia
Да, от встроенного HSI, на 16 МГц.

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

Добавлено: Вт окт 09, 2012 17:48:59
ELcat
Сейчас сижу с паяльником. Пытаюсь запилить 3410 на проводках + контактные колодки, чтоб плату не поганить. 96х65@1bit, конечно, не "щербет", но тоже можно довольно таки полезно поиграться :)
Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?

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

Добавлено: Вт окт 09, 2012 19:25:50
SubDia
В IAR есть неплохой набор документации в information center. Рассказывать на словах долго - это ж не анекдот-другой рассказать. =)

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

Добавлено: Вт окт 09, 2012 20:12:24
ChipKiller
ELcat писал(а):Как в IAR обозначаются типы памяти при создании массива? Да и вообще какие есть типы переменных?
... при чем тут IAR - C он и в Африке C. А вообще, чтобы не запутаться, лучше ИМХО указывать явно uint8_t, uint16_t, uint32_t, int32_t и т.д. ELcat либо "штурмуй" С, либо учи ARM-ассемблер (а лучше все вместе :) )

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

Добавлено: Вт окт 09, 2012 21:08:10
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 в Си организована работа с ними?

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

Добавлено: Вт окт 09, 2012 21:26:43
Satyr
eeprom в современных МК большая экзотика. про него сразу забудем.

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

Итого - просто создай массив с модификатором const - и он автоматически окажется во флеше.

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

Добавлено: Вт окт 09, 2012 21:36:12
polyname
полезно иногда почитать стандарты, многие вопросы отпадут.
по стандарту модификатор const поместит переменную в сегмент кода, то есть во Flash.

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

Добавлено: Вт окт 09, 2012 22:04:47
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

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

Добавлено: Вт окт 09, 2012 22:08:30
Satyr
ELcat писал(а):
Satyr писал(а):eeprom в современных МК большая экзотика. про него сразу забудем.
А где ж тогда переменные хранить? 24Сххх цеплять? Я вроде как видел eeprom в некоторых ARM-овских процах.
Зависит от того, что это за данные, сколько их и как часто обновлять. И в каких условиях работает устройство.
Тут уж вплоть от FRAMа и SRAMа с батарейкой до хранения во внутреннем флеше МК

еепром редкость. и редко настоящий. Так на память только stm32L и lpc178x на ум приходят. В первом не интересовался, во втором еепром - аппаратная эмуляция над мелкостраничным флешом.

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

Добавлено: Ср окт 10, 2012 09:22:53
menzoda
У Фрискейла много контроллеров с EEPROM. Правда, настоящий он или нет не знаю.

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

Добавлено: Ср окт 10, 2012 09:26:32
SubDia
и к чему эта информация в теме об STM32?

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

Добавлено: Ср окт 10, 2012 09:31:32
ELcat
Эмуляция или настоящая - какая разница, главное чтобы гарантировали не менее 100к циклов зап./стир., а всё остальное не суть важно.

Подцепил я таки 3410 дисплей. Попытаюсь пока реализовать запуск "на костылях", то есть с программной эмуляцией SPI. Затем, если получится, переведу на аппаратный.
Kdisp.jpg
(63.69 КБ) 452 скачивания
Kont.jpg
(62.34 КБ) 352 скачивания

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

Добавлено: Ср окт 10, 2012 10:25:22
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 такое запросто канает, а здесь нет?

Уже прям пугать и раздражать начинает. Как ни шаг - так граблями в лоб, как ни новая строчка - так получи ошибку.

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

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

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

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

PS. вообще то для "ногодрыга" у STM32 есть bit banding.....

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

Добавлено: Ср окт 10, 2012 11:25:47
polyname
А где ж тогда переменные хранить? 24Сххх цеплять?
Flash, последний сегмент выделите под хранение. Если организовать как кольцевой буфер, то количество циклов перезаписи увеличится многократно

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

Добавлено: Ср окт 10, 2012 11:53:52
Satyr
один сегмент - это если потерять данные не очень ссыкотно :)))
если сыкотно - то два.

вобще и у ст, и у нхп (и вобще много кого) есть аппноты и готовые исходники эмуляции еепром на паре флешовых страниц, ищите.

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

Добавлено: Ср окт 10, 2012 12:46:46
ELcat
ChipKiller писал(а): Поробуй

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

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

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

Добавлено: Ср окт 10, 2012 13:17:36
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);

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

Добавлено: Ср окт 10, 2012 13:43:45
ELcat
polyname писал(а): Нужно как-то так:

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

#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 что к чему

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