реклама на сайте
подробности

 
 
> Как вы работаете с регистрами GPIOx_AFR?
allsettingsdone
сообщение Oct 20 2015, 08:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Как вы настраиваете альтернативные функции у GPIO с помощью регистров GPIOx_AFR (например при настройке USART1 на PA9, PA10 на STM32F407VG) ? В стандартном файле описания периферии (stm32f4xx.h) - нет информации и масок для работы с этим регистром. Просто высчитываете сами битовую маску и записываете в этот регистр готовое число?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Oct 21 2015, 13:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а как этот правильный путь поможет задать альтернативные функции LPC? или право делать процы с альтернативными функциями пинов на арм ядре только у СТМsm.gif?

Правильный путь для любого проца, настроить регистры согласно описанию!
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Oct 22 2015, 06:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Golikov A. @ Oct 21 2015, 16:12) *
а как этот правильный путь поможет задать альтернативные функции LPC? или право делать процы с альтернативными функциями пинов на арм ядре только у СТМsm.gif?


Если мне придётся снова работать с LPC'хами, буду делать библиотеку по образу и подобию.
Когда-то у меня был набор макросов (в принципе, то же самое - задавался порт, пин, режим пина), но эти хитрые шаблоны удобнее.

Варианты ЯadiatoR и AlanDrakes, которые прочитали даташит, явно неудобные. Пусть компилятор нужные смещения считает, он железный.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 27 2015, 08:03
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(esaulenka @ Oct 22 2015, 09:22) *
Если мне придётся снова работать с LPC'хами, буду делать библиотеку по образу и подобию.
Когда-то у меня был набор макросов (в принципе, то же самое - задавался порт, пин, режим пина), но эти хитрые шаблоны удобнее.

Года 3 назад делал библиотеку шаблонов для LPC 2119/2368/2468. Кому-то такие объявления могут показаться избыточными, но мне самому пользоваться очень нравилось.
Код
CPU::WATCHDOGTIMER<> wdt( CPU::PLL::PeriodToTicks(10), CPU::WATCHDOGTIMER<>::DEBUG );

CPU::TIMER<0> ustimer( CPU::PLL::FreqToTicks(1000000) );
CPU::CALLBACKTIMER<1, MEASURETIMERCB, IRQP_MEASURETIMER> measuretimer( CPU::PLL::FreqToTicks(FADC) );

CPU::GPIO0::PINGROUP<0,2> _uartusb_rx_tx(1);
USBQUEYECLASS usbq(115200);

CPU::GPIO0::PINGROUP<8,2> _uartrs485_rx_tx(1);
CPU::GPIO0::PIN<10> uartrs485_txen(0, CPU::GPIO0::OUTPUT);
RS485QUEYECLASS rs485q(19200, 8, RS485QUEYECLASS::EVEN, 1);

CPU::GPIO1::PIN<23> disp_d7_busy(0, CPU::GPIO1::OUTPUT);
CPU::GPIO0::PIN<13> disp_rs(0, CPU::GPIO0::OUTPUT);
CPU::GPIO0::PIN<BUTTON1PIN, CPU::GPIO0::PININVERTED> button1_pressed(0, CPU::GPIO0::INPUT);

CPU::GPIO0::PIN<17> spi_sck(2);
CPU::GPIO0::PIN<18> spi_miso(2);
CPU::GPIO0::PIN<19> spi_mosi(2);
CPU::SPI<1> spi(2000000, CPU::SPI<1>::MASTER, CPU::SPI<1>::MSB, 16);

AD7656< CPU::SPI<1>, spi, CPU::GPIO0::PIN<5>, adc_st, CPU::GPIO0::PIN<20>, adc_cs1, CPU::GPIO0::PIN<3>, adc_busy1> adc_gen_out;
AD7656< CPU::SPI<1>, spi, CPU::GPIO0::PIN<5>, adc_st, CPU::GPIO0::PIN<4>, adc_cs2, CPU::GPIO0::PIN<7>, adc_busy2> adc_gen_excitation;

Естественно, пины можно и в рантайме перенастроить.
Сейчас выкладывать библиотеку стыдновато, я уже тогда хотел всё переделать =)
Для тех камней, на которых сейчас сижу, такого не делал - у иаровского оптимизатора глюки наблюдались, а без оптимизации результат очень печальный. Но может и сделаю когда-нибудь.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 27 2015, 08:57
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Дам ссылку на уже упомянутую в этой теме мою библиотеку для stm32: stm32tpl.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- allsettingsdone   Как вы работаете с регистрами GPIOx_AFR?   Oct 20 2015, 08:11
- - Golikov A.   Некоторые пользуются для этого кубом, но путь наст...   Oct 20 2015, 08:15
|- - scifi   Цитата(Golikov A. @ Oct 20 2015, 11:15) п...   Oct 20 2015, 08:29
- - smalcom   SPL )   Oct 20 2015, 08:41
- - allsettingsdone   Как узнать число, которое нужно записать в AFRH9 и...   Oct 20 2015, 08:51
|- - ЯadiatoR   Цитата(allsettingsdone @ Oct 20 2015, 11...   Oct 20 2015, 09:24
- - Genadi Zawidowski   Или так... Код #define arm_stm32f30x_hardware_pi...   Oct 20 2015, 08:53
- - ViKo   Типа того. Раньше для альтернативных функций конкр...   Oct 20 2015, 08:56
- - AlanDrakes   ИМХО, в Datasheet на STM32F407, страница 61, описа...   Oct 20 2015, 10:17
- - Golikov A.   ну и есть дефайн AF0-AF15, его надо использовать в...   Oct 20 2015, 11:23
- - Эдди   В opencm3 нужные макросы есть. И даже функции врод...   Oct 20 2015, 11:24
- - esaulenka   Цитата(allsettingsdone @ Oct 20 2015, 11...   Oct 21 2015, 11:44
|- - AHTOXA   Цитата(Golikov A. @ Oct 21 2015, 18:12) а...   Oct 21 2015, 14:46
- - Golikov A.   ну это так докопаться....   Oct 21 2015, 14:47
- - adnega   Инициализирую все выводы в одном месте init_GPIO()...   Oct 22 2015, 07:15
- - Alechek   Инициалиация в одном месте хорошо. Но иногда не пр...   Oct 26 2015, 08:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0164 секунд с 7
ELECTRONIX ©2004-2016