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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

[uquote="Мурик",url="/forum/viewtopic.php?p=3556219#p3556219"]Это я к тому что используя код написанный другими нельзя быть точно уверенным что он будет работать нормально.[/uquote]
Ну тогда тем более не понятно, на кой чёрт эта подкрутка стека нужна, получается лишняя заноза при переносе кода на другую платформу :dont_know:
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Скажите, как понять вот это описание?

Access: 0 ≤ wait state ≤ 2, word, half-word and byte access

Добавлено after 1 hour 34 minutes 41 second:
Еще пара вопросов.

1. В регистре RCC_CR есть бит включения HSE. А в регистре RCC_CFGR есть бит SW, где тоже можно выбрать источник тактирования. Это как понимать? Или надо будет включать и там и там? Или можно либо там, либо там?
2. Что такое HSE oscillator used directly or indirectly as system clock? (прямо или косвенно) что это значит?

Добавлено after 1 hour 5 minutes 30 seconds:
Пятница что ли всех в Повердаун отправила...

Скажите, может я правильно понимаю тогда, что 0 ≤ wait state ≤ 2 это значит, что доступ к регистру может быть от 0 до 2 тактов, в зависимости от занятости этого регистра?
Последний раз редактировалось СКАЗОЧНИК Сб янв 26, 2019 04:02:48, всего редактировалось 1 раз.
Станислав
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

СКАЗОЧНИК писал(а):Скажите, может я правильно понимаю тогда, что 0 ≤ wait state ≤ 2 это значит, что доступ к регистру может быть от 0 до 2 тактов, в зависимости от занятости этого регистра?
Правильно, может есть еще какие-то предположения касательно word или byte access? :) Только не 0..2 такта, а дополнительно 0..2 такта...
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Reflector писал(а):касательно word или byte access?
Это тоже интересно. Понятно, что это доступ словами, половиной слова или байтовый. Т.е. 32 бита, 16 или 8 бит. И, как я понял, больше относится к языку программирования. :dont_know:
С другой стороны, не понятно... Что за доступ в 8 бит... ?
Станислав
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3556886#p3556886"]С другой стороны, не понятно... Что за доступ в 8 бит... ?[/uquote]
Допустим нужно один байт в регистре поменять, любой, не затрагивая остальные, тогда можно только к нему и обращаться.
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Задам очередной глупый вопрос. Усиленно вчитываясь в рефренс мануал, дошел до регистра GPIOx_CLR (ну и второй его брат тоже). Если в АВР было просто ПОРТа, ПОРТб и т.д., то здесь как-то для кучи портов один регистр всего? по адресу смещения 0х00 и 0х04.
Не понимаю. Как настраивать порт А отдельно от порта Д? Или я где-то че-то не вижу?

туплю. С регистрами установки и сброса битов. Они тоже как бы для одного порта описаны. А где для остальных?

Добавлено after 2 minutes 13 seconds:
Ну и все верхние вопросы тоже в силе. )
Станислав
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3560129#p3560129"]Не понимаю. Как настраивать порт А отдельно от порта Д? Или я где-то че-то не вижу?[/uquote]
Не понимаю как так можно RM читать, если в описании регистра написано:
Port configuration register low (GPIOx_CRL) (x=A..G)
1. В регистре RCC_CR есть бит включения HSE. А в регистре RCC_CFGR есть бит SW, где тоже можно выбрать источник тактирования. Это как понимать? Или надо будет включать и там и там? Или можно либо там, либо там?
Включение HSE не означает на него переключение.
2. Что такое HSE oscillator used directly or indirectly as system clock? (прямо или косвенно) что это значит?
Открываю раздел RCC, даю поиск по "indirectly", первое же совпадение дает ответ на твой вопрос:
If the HSE oscillator is used directly or indirectly as the system clock (indirectly means: it is used as PLL input clock, and the PLL clock is used as system clock).
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Reflector писал(а):Port configuration register low (GPIOx_CRL) (x=A..G)
Я увидел, что там надо подставить букву вместо Х. Но дальше дана полная таблица этих регистров, где также описан один всего GPIOx и указано его смещение от начального адреса. Может я не правильно задаю вопрос... Но это описание общее.
У каждого порта должен быть свой такой регистр со своим адресом?!

БЭКАП регистры же указаны все 40 с лишним штук, хотя они все одинаковые...
Reflector писал(а):а него переключение.
Вот это теперь понятно.
Reflector писал(а):If the HSE oscillator is used directly or indirectly as the system clock (indirectly means: it is used as PLL input clock, and the PLL clock is used as system clock).
Если используется HSE (внешний высокочастотный) прямо или косвенно, как тактироание системы (косвенно означает: что используется как PLL внутреннее тактирование и PLL тактирование используется как системное тактирование).

:dont_know: Все равно не понимаю... :facepalm:

Добавлено after 9 minutes 5 seconds:
А... я кажется понял! Прямо или косвенно означает, если я подал тактовые на вход, либо кварц подключил и сразу отправил эту частоту на ядро, то это прямо. А если я ее умножил через PLL, то это уже косвенно эту частоту я использую.
Станислав
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3560216#p3560216"]Я увидел, что там надо подставить букву вместо Х. Но дальше дана полная таблица этих регистров, где также описан один всего GPIOx и указано его смещение от начального адреса.[/uquote]
Почему вдруг всего один GPIOx, если вместо 'x' подставляются буквы портов...
У каждого порта должен быть свой такой регистр со своим адресом?!
Естественно, базовый адрес для каждого порта разный, смещение для всех регистров одинаковое.

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

#define GPIOA_BASE            (AHB2PERIPH_BASE + 0x00000000)
#define GPIOB_BASE            (AHB2PERIPH_BASE + 0x00000400)

#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

про прямо и косвенно я правильно понял? )
Станислав
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3560242#p3560242"]про прямо и косвенно я правильно понял? )[/uquote]
Правильно, но над скоростью нужно еще поработать :)
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Какой скоростью? :shock:

Вот так я сижу изучаю даташит на этот МК...
Изображение Изображение


З.Ы. :beer: за помощь благодарю.

Добавлено after 59 minutes 5 seconds:
И да, увидел я в МэмориМэпинг адреса портов. )))
И теперь, вроде дошло до меня по ним.
Например, портЕ имеет адрес 0х40011800. И регистр GPIOE_CLR находится по этому адресу. И дефайнить теперь я его сам могу в любое другое обозначение. И следующий регистр GPIOE_CRH будет по адресу 0х40011800 + 0х04 = 0х40011804. и т.д. и т.п.
Станислав
Электрический кот
Аватара пользователя
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Сообщение 240265 »

stm32f10x.h Про адреса.

/** @addtogroup Peripheral_memory_map
* @{
*/
#define FLASH_BASE ((uint32_t)0x08000000)
.
.
.
IVL ex UA6PJ
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3560252#p3560252"]Например, портЕ имеет адрес 0х40011800. И регистр GPIOE_CLR находится по этому адресу. И дефайнить теперь я его сам могу в любое другое обозначение.[/uquote]Да что же это за маниакальное желение новичкков всё передефайнить. Это чтобы ваш код был максимально непонятным и никто на форуме не смог помочь? Чем вам дефайны от производителя не угодили? Зачем делать то что уже сделано внося свои ошибки?
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Да нету у меня такого желания... Я же просто как пример привел, чтобы мне подтвердили или опровергли прав я или нет...

Добавлено after 15 minutes 38 seconds:
И вот этот файл stm32f10x.h он не относится к SPL? Это просто заголовочный файл с объявленями?
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3560548#p3560548"]И вот этот файл stm32f10x.h он не относится к SPL? Это просто заголовочный файл с объявленями?[/uquote]А внутрь файла заглянуть религия не позволяет?
Спойлер
/**
******************************************************************************
* @file stm32f10x.h
* @author MCD Application Team
* @version V3.5.0
* @date 11-March-2011
* @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File.
* This file contains all the peripheral register's definitions, bits
* definitions and memory mapping for STM32F10x Connectivity line,
* High density, High density value line, Medium density,
* Medium density Value line, Low density, Low density Value line
* and XL-density devices.
*
* The file is the unique include file that the application programmer
* is using in the C source code, usually in main.c. This file contains:
* - Configuration section that allows to select:
* - The device used in the target application
* - To use or not the peripheral�s drivers in application code(i.e.
* code will be based on direct access to peripheral�s registers
* rather than drivers API), this option is controlled by
* "#define USE_STDPERIPH_DRIVER"
* - To change few application-specific parameters such as the HSE
* crystal frequency
* - Data structures and the address mapping for all peripherals
* - Peripheral's registers declarations and bits definition
* - Macros to access peripheral�s registers hardware
*
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Религия позволяет, только, почему-то заголовки сразу прокручиваешь и смотришь уже всякие объявления внутри... ) Вот и не догадался.
И насколько увидел из его описания, нету упоминаний о СПЛ.
Станислав
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Мужики, почему у меня в дереве проекта все файлы подключенных библиотек с ключами нарисованы и их невозможно изменить... ?
Станислав
Мучитель микросхем
Аватара пользователя
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Сообщение Myp3ik »

Потому что на файле стоит атрибут Read only
Иван Сусанин - первый полупроводник :solder:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

о... А нахрена он так стоит? Блин, че теперь на каждом файле править его вручную?

Я еще подзапутался в этих библиотеках. Вот есть у меня stm32f10x.h, в ней описаны все имена регистрам и их адреса. Чтобы тупо не писать цифрами, я могу взять имена из этого файла и использовать их в своей программе.
Но есть еще несколько файлов, которые к ним приложены.
И если я хочу сделать конфигурацию той же тактовой частоты сам, то я могу написать типа:

RCC_CR = 0b00000000000000010000000000000000;

Ну или RCC-CR |= (1<<HSEON);

и т.д.

Но у меня же уже где-то в этих подключенных файлах есть целые функции, которые частоту задают сами?! Они же все сделают по своему? Ведь та же stm32f10x.h ссылается на кучу других файлов, которые в свою очередь подключают еще кучу своих файлов. и уже концов не найдешь. Запутался я в них.
Станислав
Ответить

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