|
STM32L4 прерывания от UART. Закипел. |
|
|
|
May 11 2016, 08:05
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Пишу код под Nucleo L476. Кубом. И вручную. Результат тот же. Поднял UART1. UART работает. Но прерываний нет. Ни в коде от Куба ни в моем коде. Вручную настраивал так: Код USART1->CR1 = 1<<7 | //Bit 7 TXEIE: interrupt enable 1<<6 | //Bit 6 TCIE: Transmission complete interrupt enable 1<<5 | //Bit 5 RXNEIE: RXNE interrupt enable 1<<3 | //Bit 3 TE: Transmitter enable 1<<2 | //Bit 2 RE: Receiver enable 1<<0; //Bit 0 UE: USART enable USART1->CR2 = 1<<11; //Bit 11 CLKEN: Clock enable USART1->BRR = 0x271; //Tx/Rx baud = f CK / BRR. Oversampling by 16 Если выполнить макрос, разрешающий 37-е прерывание: Код NVIC->ISER[(((uint32_t)(int32_t)37) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)37) & 0x1FUL)); То в моем варианте все виснет. Точно такой же макрос с параметром 37 есть в коде от Куба. Но он не вешает систему. Прерываний просто нет. И да, прерывания от SYSTIC работают в обоих случаях. Мож кто подскажет в чем дело или примерчик рабочий... Хотя под L476 я мало чего нахожу в Сети.
Сообщение отредактировал Димон Безпарольный - May 11 2016, 08:06
|
|
|
|
|
 |
Ответов
|
May 12 2016, 11:18
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(ViKo @ May 12 2016, 12:03)  Забейте на Куб. Он не для работы. А для демонстрации работоспособности. Я запрограммировал регистры USART одной функцией, и все работает, по прерыванию, естественно. Не в данном МК, но разница невелика. Для этого я и ковырял Куб, чтобы понять суть и сделать уже свой проект. Без излишиств и недостатков. В итоге все получилось. Off. Достал меня Эклипс. Не смог прикрутить PrintF. Кейловские технологии не прокатили. Буду переходить на Кейл.
|
|
|
|
|
Apr 11 2017, 10:10
|

Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 17-03-08
Из: Мурманская
Пользователь №: 35 989

|
Цитата(MrYuran @ May 12 2016, 18:48)  Вот интересно, какая связь между эклипсом и printf() Я попробовал этот эклипс, потом он перестал работать, случилась у него авария - джава у него потерялась. А printf() делается под конкретное железо и потому бессмысленно искать его (её) в готовом к употреблению виде. Я сделал удобную мне функцию типа printf: Код #include <stdio.h> #include <stdarg.h>
void LeF(char* format, ...) { char szBuf[260]; va_list argptr; va_start( argptr, format ); vsnprintf( szBuf,260, format, argptr ); va_end( argptr ); HAL_UART_Transmit(&huart1, (uint8_t*)szBuf, strlen(szBuf), 100); } vsnprintf линкер нашёл где-то тут: ibg_nano.a libnosys.a А вообще, я что хотел отметить: Действительно, в мануалах нет данных о технике перехода вывода на AF и обратно в начальный вид. Есть необходимость за-AF-еный вывод временно поиспользовать как обычный, но пока нет такой возможности или вообще или с приемлемым размером кода. Вожусь с SPI1 уже пол дня.
--------------------
Демократия - это когда считается, что два дурака лучше одного умного Суверенная демократия - это когда считается, что один дурак лучше двух дураков
|
|
|
|
|
Apr 11 2017, 10:54
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(AlexKLm @ Apr 11 2017, 12:10)  vsnprintf линкер нашёл где-то тут: Вместо всех sprintf-ов и snprintf-ов всегда использую: extern "C" int _Printf( void *(*)(void *, int), void *, const char *, va_list *); Она даёт на порядок больше возможностей. И собственно - это и есть базовая функция, которую вызывают все прочие библиотечные *printf-функции. Имя дано для библиотеки IAR, но в других компиляторах думаю есть аналогичная.
|
|
|
|
|
Apr 11 2017, 14:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(jcxz @ Apr 11 2017, 17:54)  Вместо всех sprintf-ов и snprintf-ов всегда использую: extern "C" int _Printf( void *(*)(void *, int), void *, const char *, va_list *); Она даёт на порядок больше возможностей. И собственно - это и есть базовая функция, которую вызывают все прочие библиотечные *printf-функции. Имя дано для библиотеки IAR, но в других компиляторах думаю есть аналогичная. А Вы в курсе, что в библиотеках IAR нет функции с таким именем?  Откройте же EWARM_DevelopmentGuide.ENU.pdf, найдите где там написано про функцию __write и перестаньте закатывать солнце вручную.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
Сообщений в этой теме
Димон Безпарольный STM32L4 прерывания от UART. Закипел. May 11 2016, 08:05 Сергей Борщ QUOTE (Димон Безпарольный @ May 11 2016, 11... May 11 2016, 08:28 Димон Безпарольный Цитата(Сергей Борщ @ May 11 2016, 11:28) ... May 11 2016, 08:57  Сергей Борщ QUOTE (Димон Безпарольный @ May 11 2016, 11... May 11 2016, 09:15   Димон Безпарольный Цитата(Сергей Борщ @ May 11 2016, 12:15) ... May 11 2016, 09:43    KnightIgor Цитата(Димон Безпарольный @ May 11 2016, 10... May 12 2016, 09:35  scifi Цитата(Димон Безпарольный @ May 11 2016, 11... May 11 2016, 09:38 Lagman А такая команда отправляет буфер?
КодHAL_UART_Tran... May 11 2016, 20:31 Димон Безпарольный Цитата(Lagman @ May 11 2016, 23:31) А так... May 11 2016, 22:09 x893 То есть они весь мир обманули с примером UART_TwoB... May 12 2016, 06:42  Tanya Цитата(Димон Безпарольный @ May 12 2016, 14... May 12 2016, 13:50   Димон Безпарольный Цитата(Tanya @ May 12 2016, 16:50) Работа... May 12 2016, 14:41    Tanya Цитата(Димон Безпарольный @ May 12 2016, 17... May 12 2016, 16:09   Димон Безпарольный Цитата(MrYuran @ May 12 2016, 18:48) Вот ... May 12 2016, 16:47    x893 Цитата(Димон Безпарольный @ May 12 2016, 19... May 12 2016, 18:13     scifi Цитата(x893 @ May 12 2016, 21:13) Овладел... May 12 2016, 18:20     Димон Безпарольный Цитата(x893 @ May 12 2016, 21:13) Овладел... May 12 2016, 18:23      x893 Цитата(Димон Безпарольный @ May 12 2016, 21... May 12 2016, 19:51 Димон Безпарольный В общем в Кейле это работает:
Кодstruct __FILE {i... May 12 2016, 20:38 Димон Безпарольный Чертов Куб. Пытался SPI поднять. Поднял блин. В ко... May 13 2016, 13:02 Aleksandr Baranov Цитата(Димон Безпарольный @ May 13 2016, 09... May 13 2016, 14:10  Димон Безпарольный Цитата(Aleksandr Baranov @ May 13 2016, 17... May 13 2016, 14:57 Lagman Не знаю что у вас там за проблемы, но если использ... May 14 2016, 07:59 x893 Нормально Куб генерирует всё. Надо птички/галки ст... May 14 2016, 08:12 Lagman Может еще вот это мешает.
Некоторые контроллеры им... May 14 2016, 08:44 Димон Безпарольный Цитата(Lagman @ May 14 2016, 11:44) Для S... May 14 2016, 17:28  Lagman Цитата(Димон Безпарольный @ May 14 2016, 20... May 14 2016, 19:12   Димон Безпарольный Цитата(Lagman @ May 14 2016, 22:12) Опиши... May 14 2016, 19:40    Lagman Цитата(Димон Безпарольный @ May 14 2016, 22... May 14 2016, 21:03     Димон Безпарольный Цитата(Lagman @ May 15 2016, 00:03) Т.е. ... May 15 2016, 16:04 SSerge Цитата(Димон Безпарольный @ May 11 2016, 15... May 14 2016, 09:25 Димон Безпарольный Бит 2 не ставится! Читаю значение i=SPI2->C... May 14 2016, 18:36 Димон Безпарольный Я утверждал что Куб генерит нерабочий код. Вот он ... May 16 2016, 08:44 Lagman CODEvoid HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
... May 16 2016, 15:20 Димон Безпарольный Заработало. Ну и каша!
Чтобы запрограммироват... May 17 2016, 12:14 Димон Безпарольный Вот некоторый опыт работы с Кубом:
КодКуб в 90% г... Jun 11 2016, 20:08 x893 Как то сложно у вас всё.
И кубом и SPL и регистрам... Jun 11 2016, 20:16 Димон Безпарольный Камешки наверно разные. Для одних все отлажено, дл... Jun 11 2016, 20:27 Genadi Zawidowski ЦитатаПередаю один байт - вываоивается 16 циклов
Э... Jun 11 2016, 21:07 romas2010 Ребят,при всем уважении к автору поста,но это все ... Jun 11 2016, 21:56 Димон Безпарольный UART я давно уже оседлал. Проблем нет. Да, неправи... Jun 12 2016, 07:10 SasaVitebsk Судя по последним темам.
Раньше начинали с AVR или... Apr 11 2017, 13:03 AlexKLm Вот первый результат, когда удача улыбнулась:
__... Apr 11 2017, 19:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|