Pazitiff25, прерывания не вызывают, они сами случаются. Ну вот прямо так, нежданчиком, раз и прервалось всё и заколбасилось, и давай всё по буферам раскладывать, а ты только выгребай большой ложкой.
Watch Dog STM32 перезагружает ethernet
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Watch Dog STM32 перезагружает ethernet
Я поверил в силу индусского кода. Он работает даже вопреки здравому смыслу. После такого пускай кто-нибудь только попробует назвать его калокубом
Pazitiff25, прерывания не вызывают, они сами случаются. Ну вот прямо так, нежданчиком, раз и прервалось всё и заколбасилось, и давай всё по буферам раскладывать, а ты только выгребай большой ложкой.
Pazitiff25, прерывания не вызывают, они сами случаются. Ну вот прямо так, нежданчиком, раз и прервалось всё и заколбасилось, и давай всё по буферам раскладывать, а ты только выгребай большой ложкой.
- Реклама
-
Pazitiff25
- Родился
- Сообщения: 13
- Зарегистрирован: Чт сен 27, 2018 18:14:49
Re: Watch Dog STM32 перезагружает ethernet
[uquote="Мурик",url="/forum/viewtopic.php?p=3484606#p3484606"]
Это функция которая для USART может иметь имя USART3_IRQHandler.[/uquote]
Нашел в файле stm32f7xx_it.c функцию void USART3_IRQHandler
Засунул в нее свой код вот так:
void USART3_IRQHandler(void)
{
/* USER CODE BEGIN USART3_IRQn 0 */
uint8_t X; // Описание приемника числа.
/* USER CODE END USART3_IRQn 0 */
HAL_UART_IRQHandler(&huart3);
/* USER CODE BEGIN USART3_IRQn 1 */
HAL_UART_Receive_IT(&huart3, &X, 1); // Вызов прерывания по uаrt.
TIM1->CCR1 = X; // Записываем в счетный регистр принятый по uart X.
/* USER CODE END USART3_IRQn 1 */
}
Глазам не верю, но все работает )) Правильно сделал или что-то накосячил?
Сброс WDG оставил в бесконечном цикле в файле main.c. Тоже все работает, даже если провода выдрать.
Приемник X теперь, я так понимаю, локальный и его ниоткуда не видно.
VladislavS, ну да, вот теперь прерывание нежданчиком вызывается и выгребает из X все что нужно )) Или мой самодельный X это не буфер, и у прерывания свой буфер есть?
Обработчик прерывания.Pazitiff25 писал(а):хэндлер это что?
Это функция которая для USART может иметь имя USART3_IRQHandler.[/uquote]
Нашел в файле stm32f7xx_it.c функцию void USART3_IRQHandler
Засунул в нее свой код вот так:
void USART3_IRQHandler(void)
{
/* USER CODE BEGIN USART3_IRQn 0 */
uint8_t X; // Описание приемника числа.
/* USER CODE END USART3_IRQn 0 */
HAL_UART_IRQHandler(&huart3);
/* USER CODE BEGIN USART3_IRQn 1 */
HAL_UART_Receive_IT(&huart3, &X, 1); // Вызов прерывания по uаrt.
TIM1->CCR1 = X; // Записываем в счетный регистр принятый по uart X.
/* USER CODE END USART3_IRQn 1 */
}
Глазам не верю, но все работает )) Правильно сделал или что-то накосячил?
Сброс WDG оставил в бесконечном цикле в файле main.c. Тоже все работает, даже если провода выдрать.
Приемник X теперь, я так понимаю, локальный и его ниоткуда не видно.
VladislavS, ну да, вот теперь прерывание нежданчиком вызывается и выгребает из X все что нужно )) Или мой самодельный X это не буфер, и у прерывания свой буфер есть?
Re: Watch Dog STM32 перезагружает ethernet
Код: Выделить всё
HAL_UART_Receive_IT(&huart3, &X, 1); // Вызов прерывания по uаrt.
TIM1->CCR1 = X; // Записываем в счетный регистр принятый по uart X.Код: Выделить всё
TIM1->CCR1 =USART3->RDR;-
Pazitiff25
- Родился
- Сообщения: 13
- Зарегистрирован: Чт сен 27, 2018 18:14:49
Re: Watch Dog STM32 перезагружает ethernet
[uquote="dosikus",url="/forum/viewtopic.php?p=3484812#p3484812"]В вашем случае должно быть :
И все, без калокубовской хрени HAL_UART_Receive_IT(&huart3, &X, 1);[/uquote]
Спасибо большущее, так тоже работает!
Можно еще узнать один момент? Прерывания по uart активизируются функцией __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
Зачем ставят двойное подчеркивание перед функцией __
Я слышал, это отключение оптимизации. Если его убрать, кейл ругается.
Код: Выделить всё
TIM1->CCR1 =USART3->RDR;Спасибо большущее, так тоже работает!
Можно еще узнать один момент? Прерывания по uart активизируются функцией __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
Зачем ставят двойное подчеркивание перед функцией __
Я слышал, это отключение оптимизации. Если его убрать, кейл ругается.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Watch Dog STM32 перезагружает ethernet
[uquote="Pazitiff25",url="/forum/viewtopic.php?p=3485008#p3485008"]Зачем ставят двойное подчеркивание перед функцией __[/uquote]Подчёркивания это неотъемлемая часть имени функции. Их в имени используют в системных и библиотечных функциях чтобы нубы случайно свои функции так же не назвали.
- Реклама

