Bits 13:12STOP[1:0]: STOP bits These bits are used for programming the stop bits. 00: 1 stop bit 01: Reserved. 10: 2 stop bits 11: 1.5 stop bit This bit field can only be written when the USART is disabled (UE=0)
Здравствуйте уважаемый Dosikus. Рад Вас видеть . У меня STM32F051. Не ясно что записывать в AFR[1], и как это делать для других случаев. Т.е. я не понимаю откуда взялось число 0x0110, ну или по другому (1<<(2*4))|(1<<(1*4))?
добрый день,
действительно, почему тут устанавливаем биты именно так 0x0110?
К примеру - GPIOA->AFR[0]|=2<<(4*2); Первая 2 это альтернативная функция, находиться по таблице в даташите, 4 -именно столько занимает каждый пин в регистре AFR , а вторая 2 порядковый номер пина. В итоге мы имеем число определяющее альтернативную функцию и число в скобках на сколько бит сдвинуть. И довольно таки читаемо Мы видим число определяющее альтернативную функцию и порядковый номер пина. Можно дефайнами конечно заменить.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
это я запомнил (stm32), навряд ли есть регистры 8 или 16 битные.
Цитата:
а ты предоставил 16 битное значение.
это не я предоставил, а вы. Цитата из первой страницы этой темы: Спойлерwss60 писал(а): Теперь другая проблема: компилятор “ругается” на регистр AFRH!? Код: void Init_usart(void) {
GPIOA->AFRH |= 0x0110; // <----- !!!
Можно же ради приличия слазать в stm32f0xx.h
Код: GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));
Цитата:
Посмотри в RM описание AFR и приведи свое число к 32 битам и все станет на свои места
На самом деле мне безраличен сейчас AFR, RM, 32 бита. Мне интересна конструкция ввида (1<<(2*4))|(1<<(1*4))
А зачем она вообще нужна... СПЛ??? Да ещё и для Ф0... И что там ломать голову... если всё есть в хедере... почти... И можно подумать... что СПЛ улучшает понимание чего-то там... наоборот... отдаляет...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27 Сообщений: 443 Откуда: Мать городов русских
Рейтинг сообщения:0
Народ, начал юзать STM32F0 DISCO на STM32F051, запустил USART1 по примеру из этого топика, добавил прерывания - прерывания по USART_ISR_RXNE и USART_ISR_TC идут, нет прерываний по приёму. Кому не в лом, плз гляньте инициализацию и прерывание:
Настроил USART1, по примерам, но после запуска контроллер "виснет" на Default handelr. Посмотрел память, действительно, в таблице векторов на обработчик USART1 стоит адрес дефолтного обработчика. Т.е. по-видимому weak функция обработчика не переопределяется. Подскажите, плиз, в чем может быть проблема?
Код:
int main(void) { // System Initialization SystemCoreClockUpdate();
/***********************************/ /*** прерывание по приему данных ***/ /***********************************/ volatile unsigned int usart_temp; void USART1_IRQHandler(void) { if((USART1->ISR & USART_ISR_RXNE)!=0) { usart_temp = USART1->RDR; } }
Добавлено after 10 minutes 26 seconds: Разобрался)) Посмотрел на выход компилятора, по map файлу дефолтный обработчик проходил по имени как "USART1_IRQHandler", а моя функция как "USART1_IRQHandler()" У меня проект на C++, поставил перед описанием extern "C", всё завелось.
Если поставить брекпоинт на NOP то после мк зависает на ожидании флага, хотя данные сами идут смотрю анализатором, ну и в одном из байте передается номер посылки, и он меняеться пока не остановил брек поинтом
Последний раз редактировалось pokk Вс янв 13, 2019 16:38:04, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения