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

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

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

Сообщение ELcat »

То есть "->" - это указание?
GPIOB - структура (или массив), включающая в себя кучу регистров?
И GPIOB->OSPEEDR есть не что иное как обращение к регистру OSPEEDR?
Так почему тогда просто не пишут OSPEEDR |= 0xYYYY YYYY; ?
И что такое в данном случае GPIO_OSPEEDER_OSPEEDR7 ?
Реклама
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

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

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

Сообщение ChipKiller »

Если так проще GPIOB - базовый адрес (см. datasheet), OSPEEDR - смещение от базы, а дальше через #define идут конкретные биты

(0x4001 0C00 - 0x4001 0FFF) GPIO Port B
GPIOx_ODR - смещение = 0x0C
значит GPIOB->ODR=0x4001 0C00+0x0C=0x4001 0C0C


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

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

Сообщение ELcat »

Пока что понятна лишь команда:
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
С элементом AHBENR структуры RCC побитно сложить константу 0x00000002 и результат присвоить элементу AHBENR, так как RCC_AHBENR_GPIOBEN в CMSIS библиотеке объявлен как:
#define RCC_AHBENR_GPIOBEN ((uint32_t)0x00000002) /*!< GPIO port B clock enable */

Всё остальное пока абсолютно ни...я не понятно. :evil:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

RCC->AHBENR - адрес в памяти, т.е. сделать лог. ИЛИ со значением по указанному адресу и константой RCC_AHBENR_GPIOBEN, и записать результат обратно в ячейку

на ассемблере (может так понятней)

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

mov32 r0,#RCC_AHBENR; в r0 адрес ячейки
ldr r1,[r0]; в r1 содержимое ячейки
mov32 r2,#RCC_AHBENR_GPIOBEN; значение константы
orr r1,r2 ; лог. ИЛИ
str r1,[r0]; результат назад в ячейку
Последний раз редактировалось ChipKiller Пн окт 08, 2012 17:09:11, всего редактировалось 2 раза.
Реклама
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

Что-то не пойму что за фигня творится с блокнотом? Тупо копирую строку из блокнота и он же её не находит.
XpeHb.png
(164.93 КБ) 459 скачиваний
Реклама
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

ChipKiller писал(а):RCC->AHBENR - адрес в памяти, т.е. сделать лог. ИЛИ со значением по указанному адресу и константой RCC_AHBENR_GPIOBEN, и записать результат обратно в ячейку

Ты меня начинаешь запутывать. Какая разница между ячейкой с заданным адресом в памяти и регистром, который находится по этому адресу? Суть ведь в том, что для компилятора указатель на этот адрес обозначен как элемент AHBENR структуры RCC? Или я опять не правильно понял?
Лучше объясни что означает GPIO_MODER_MODER7_0, потому как в библиотеке ни одного коммента по этому поводу.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

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

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

Сообщение ELcat »

В общем с подсказками SubDia и моими скитаниями по stm32l1xx.h получился такой код:
Спойлер#include "stm32l1xx.h"

int main()
{
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;

GPIOB->MODER |= GPIO_MODER_MODER7_0; //GP
GPIOB->OTYPER &= ~GPIO_OTYPER_OT_7; //GP+PP
GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; //max speed (40 MHz (50 MHz if line capacity = 30pF))
while(1)
{
GPIOB->ODR |= GPIO_ODR_ODR_7;
for (volatile unsigned int i=0; i<100000; i++) {}
GPIOB->ODR &= ~GPIO_ODR_ODR_7;
for (volatile unsigned int i=0; i<100000; i++) {}
}
return 0;
}
, который компилируется и, наконец-то, мигает!!! :))
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

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

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

Сообщение ChipKiller »

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

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

Сообщение SubDia »

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

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

Сообщение ELcat »

SubDia писал(а):... у тебя и так, наверное, голова кругом сегодня. =))
Да не то слово. К тому же у меня сейчас простуда, восприятие несколько притуплено. Далее впланах или LS020, или Nokia 3310/3410, ставшие уже почти "родными" после "Сталкера". :) Правда пока что проц сей для меня всего лишь "чёрная печенюшка" с Х его З что там внутри. Теперь, когда уже поочерёдно помигал двумя светодиодиками, у меня хотябы появился стимул "копать" дальше. Спасибо вам всем огромное за поддержку! Надеюсь, что и в дальнейшем не дадите споткнуться новичку и подадите руку помощи. :beer:
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

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

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

Сообщение ELcat »

Можно ещё такой вопрос? Там в цикле-задержке крутится число всего-то сто тысяч, причём в десятичной. При этом перемигивание происходит с частотой примерно раз в секунду. Это ж какая частота ядра получается? ~400-500кГц что ли?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

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

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

Сообщение ELcat »

Это скачано с сайта ST в составе архива CMSIS.
Вложения
Include.zip
(52.56 КБ) 211 скачиваний
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

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

Сообщение ELcat »

SubDia писал(а):А как ты думаешь, сколько тактов требуется на выполнение оператора for, сложение, сравнение, и т.д.?
Ну, думаю, 2 - инкремент и условный переход.
Последний раз редактировалось ELcat Пн окт 08, 2012 22:22:01, всего редактировалось 1 раз.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

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

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

Сообщение ELcat »

Вот.
Вложения
STM32.ZIP
(1016.96 КБ) 205 скачиваний
Ответить

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