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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

кажись таки нашол https://vk.com/stmicroelectronics?z=pho ... 2039%2Frev :))
DX168B писал(а): К STM32 прилагаются три листа. Это:
1. Datasheet
2. Reference Manual
3. Programming manual
интересуюсь STM32F100C4
даташит нашол легко http://www.st.com/web/en/catalog/mmc/FM ... 5/PF216837
а вот Reference Manual и Programming manual найти немогу
где их на сайте производителя искать то ? :oops:
Tell Me The Truth
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Вот же все ссылки: http://www.st.com/web/en/catalog/mmc/FM141/SC1169
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Разбираюсь с CorteX-M0.
Не могу понять глюк или я что-то недопонимаю.
STM32F072B-DISO.
При запуске программы отваливается отладчик:
Cannot access target.
Shutting down debug session.
Код:

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

int main( void )
{
	uint16_t i;

	RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_DMAEN;
	GPIOA->MODER = GPIO_MODER_MODER4; // PA4 = analog - <<падает вот здесь>>

	RCC->APB2ENR |= RCC_APB2ENR_DBGMCUEN; // debug clock en
...
...
}
Если сделать так:

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

GPIOA->MODER |= GPIO_MODER_MODER4;
То всё в порядке.
В чём проблема? Ведь я меняю только режим порта, а функцию SWDIO/SWCLK через альтернативный мультиплексор не трогаю(в GPIOA_AFR не обращаюсь).
Выходит что на отладочные интерфейсы влияет также и MODER?
В STM32F100 насколько помню такого не было.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Для работы SWD надо не только ремапить пины порта но и сконфигурировать их соответствующим образом (см. дефолтное состояние PORTA в Reference manual).
И естественно что

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

 GPIOA->MODER = GPIO_MODER_MODER4;
портит эту настройку .
Почему? Вы ответите себе, поняв чем отличается выше-озвученная строка от

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

GPIOA->MODER |= GPIO_MODER_MODER4;
Да и это не проблемы или глюки, это закономерный результат изучения методом тыка ...

И сие точно так же работает и в STM32F100, за исключением того что там нет MODER ...
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

помогите разобратьсяи с базовыми таймерами
Изображение Изображение

а точнее , какую роль исполняют
preload register - регистр предварительной загрузки
и
shadow register - теневой регистр
из выделенного мною абзаца я могу сделать вывод, что при попытке записи значения в auto-reload register оно записывается сразу в регистр предварительной загрузки, далее передается в теневой регистр постоянно или при обнулении счетчика, в зависимости от того как выставлен бит (ARPE) в TIMx_CR1 регистре
правильно лия разумею суть вещей ?
Tell Me The Truth
Реклама
Родился
Сообщения: 9
Зарегистрирован: Вс янв 04, 2015 17:50:37

Сообщение maksim-starcity »

Да, все верно. Еще в случае если бит UDIS сбрасывается в 0.

По факту надо запомнить 2 вещи - ARR - это значение, до которого счетчик считает. Оно обновляется, когда счетчик дотикал до предыдущего ARR и сбросился в 0 или софтово по update event generation.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

maksim-starcity писал(а):Да, все верно. Еще в случае если бит UDIS сбрасывается в 0.
ну коли так и мои домыслы верны :)) то когда же значения из shadow register передаются непосредственно в ARR ?
при каких условиях это происходит ?
сего я в мануале не могу найти :dont_know:
Tell Me The Truth
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Сообщение A. Fig Lee »

FreshMan писал(а):
maksim-starcity писал(а):Да, все верно. Еще в случае если бит UDIS сбрасывается в 0.
ну коли так и мои домыслы верны :)) то когда же значения из shadow register передаются непосредственно в ARR ?
при каких условиях это происходит ?
сего я в мануале не могу найти :dont_know:
Там же в выделенном желтым и написано. В 2х случаях. При счетчик оверфлоу или постоянно, в завизимости от UDIS.
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

это когда данные передаются от preload register в shadow register
я же спрашиваю когда они из shadow register попадут в ARR ?! :))
Tell Me The Truth
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

A. Fig Lee писал(а):При счетчик оверфлоу или постоянно, в завизимости от UDIS.
????????? :facepalm:
Где почитать???
FreshMan писал(а):я же спрашиваю когда они из shadow register попадут в ARR ?! :))
Зависит от тактирования...
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

а по конкретней можна ?
Tell Me The Truth
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Основные моменты вам осветили на казусе... А пересказывать весь референс желания нет...
Зависимость от тактирования прозвучала в теме частотомера... пусть и частично...
Запускайте железо и разбирайтесь... иначе - "ни о чём"...
"Я не даю готовых решений, я заставляю думать!"(С)
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Сообщение A. Fig Lee »

FreshMan писал(а):а по конкретней можна ?
Что "конкретней"?
Вот же в желтом написано английским языком написано:
Изображение
The auto-reload register is preloaded. Writing to or reading from the auto-reload register
accesses the preload register. The content of the preload register are transferred into the
shadow register permanently or at each update event
(UEV), depending on the auto-reload
preload enable bit (ARPE) in TIMx_CR1 register. The update event is sent when the counter
reaches the overflow
(or underflow when downcounting) and if the UDIS bit equals 0 in the
TIMx_CR1 register. It can also be generated by software. The generation of the update
event is described in detail for each configuration.
передается на каждый апдейт евент
апдейт евент генерится когда счетчик переполнится
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

давайте тогда зайдем с другой стороны
auto-reload register и shadow register это две разные ""сущности" ?
Tell Me The Truth
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 306
Зарегистрирован: Сб мар 17, 2012 20:31:44
Откуда: Нью Йорк

Сообщение A. Fig Lee »

FreshMan писал(а):давайте тогда зайдем с другой стороны
auto-reload register и shadow register это две разные ""сущности" ?
Что такое "две разные сущности"? Физически имплемнтировано как два регистра.
Служит для одной цели.
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Сообщение Galizin »

FreshMan писал(а):я же спрашиваю когда они из shadow register попадут в ARR ?! :))
Вопрос поставлен неверно. Ответить невозможно.
prleloaded - это причастие. pre - предварительно. loaded - загружаемый. регистр с предварит загрузкой. то есть то что будет использоваться может быть предварительно загружено. Предварительно означает заранее, заблаговременно, а использоваться потом. Использоваться - это собственно функциональность регистра. Далее по тексту расписано каким образом это реализовано - разбиением регистра на 2 части теневую и загружаемую.
Теневой означает что он в тени, его нельзя увидеть непосредственно. В данном случае к нему нет прямого доступа. Загружаемая часть служит для загрузки в теневую часть. Ну и далее описаны условия загрузки. Функциональность регистра осуществляет теневая часть.
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

auto-reload register и shadow register это две разные ""сущности" ?
В общем - ДА!!! shadow register есть у PSC, ARR, CNT, RCR и CCRx... у каждого свой... как и прелоад...
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

понял свою ошибку :))
я не совсем верно переводил и как следствие трактовал этот кусок текста
http://img.radiokot.ru/files/27935/jf39ed5nm.png
для меня это стало нечто сродни как для иностранца перевести фразу "есть кушать ?" :))
окончательную ясность внесли вот эти две веселые картинки
Изображение
Tell Me The Truth
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

Леонид Иванович писал(а):Странно. Все время прошиваю из IAR посредством ST-LINK utility. Настройки такие:

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

   Tools -> Configure Tools...
   Menu Text: ST-Link programmer
   Command: C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe
   Argument: -c SWD -ME -P $PROJ_FNAME$.hex -Rst -Run
   Initial Derectory: $EXE_DIR$
   Tool Available: Always

   Tools -> Options -> Key Bindings -> Tools -> ST-Link programmer F8
Леонид Иванович Никак не могу то же самое проделать с WIN8_64 почему то выходит окно не верно задано имя папки!
Какой папки, не понятно! путь вроде верный. Хотя в ХР все работает чудесно!
Изображение
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

Все разобрался! все дело в администрировании, необходимо поставить галку запускать IAR от имени администратора!
так же удалил строчку Initial Derectory: $EXE_DIR$
и изменил строчку Argument:
-c SWD -ME -P $PROJ_FNAME$.hex -Rst -Run
на
-c SWD -ME -P $PROJ_DIR$\Debug\Exe\$PROJ_FNAME$.hex -Rst -Run
Ответить

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