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

 
 
> STM32L4 прерывания от UART. Закипел.
Димон Безпарольн...
сообщение May 11 2016, 08:05
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Димон Безпарольн...
сообщение May 16 2016, 08:44
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Я утверждал что Куб генерит нерабочий код. Вот он сгенерированный нерабочий код:






Т.е. видно что эти выводы должны быть сконфигурированы. А теперь смотрим конфигуратор выводов:

Код
void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct;

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

  /*Configure GPIO pin : PA5 */
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}


Про SPI выводы ни строчки. Собственно у меня в этом Кубе и светодиод тоже не работает. Но разбираться почему в и так нерабочем коде - лень.
SPI програмный написал ручками. Работает идеально. Жаль что аппаратный SPI так и не удалось запустить. Может кто нибудь сгенерит мне в Кубе подобный код - буду благодарен. Мой вариант Куба - дерьмовый программист.

Кстати, почему в Full Duplex варианте вывод MISO называется Alternate Function Push Pull я так и не понял. Это же вход в конце концов.

В итоге средство, сделанное для сокращения времени программирования выполняет прямо противоположную функцию.

Еще бОльший маразм виден при детальном рассмотрении кода. Как известно, переключение входов на аналоговые рекомендуется для снижения потребления. Могучий Куб же для того, чтобы сконфигурировать ненужные мне выводы, включает тактирование всех GPIO:

Код
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();

Щас прямо столько энергии сохранится, аж жуть!

А теперь взглянем на функцию, которая конфигурирует (т.е должна) GPIO и тактирование:

Код
    /* Init the low level hardware : GPIO, CLOCK, NVIC... */
    HAL_SPI_MspInit(hspi);


Вот она:
Код
__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(hspi);

  /* NOTE : This function should not be modified, when the callback is needed,
            the HAL_SPI_MspInit should be implemented in the user file
   */
}


Теперь понятно почему не работает SPI.

Сообщение отредактировал Димон Безпарольный - May 16 2016, 09:12
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Димон Безпарольный   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
- - ViKo   Забейте на Куб. Он не для работы. А для демонстрац...   May 12 2016, 09:03
|- - Димон Безпарольный   Цитата(ViKo @ May 12 2016, 12:03) Забейте...   May 12 2016, 11:18
|- - 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, 14...   May 12 2016, 15:48
|- - Димон Безпарольный   Цитата(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
|- - AlexKLm   Цитата(MrYuran @ May 12 2016, 18:48) Вот ...   Apr 11 2017, 10:10
|- - jcxz   Цитата(AlexKLm @ Apr 11 2017, 12:10) vsnp...   Apr 11 2017, 10:54
|- - SSerge   Цитата(jcxz @ Apr 11 2017, 17:54) Вместо ...   Apr 11 2017, 14:23
|- - jcxz   Цитата(SSerge @ Apr 11 2017, 16:23) А Вы ...   Apr 11 2017, 15:00
- - Димон Безпарольный   В общем в Кейле это работает: Код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
- - 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


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:39
Рейтинг@Mail.ru


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