Tromomd
|
|
1 | |
Проблема с прерыванием UART31.01.2014, 10:46. Показов 3277. Ответов 3
Метки нет (Все метки)
Здравствуйте! Не могу разобраться с прерыванием UART. При приёме данных программа должна переходить на обработку прерывания, вместо этого она переходит в файл "stortup_stm32f10x_md_vl" в строку:
USORT1_IRQHomdler B USORT1_IRQHomdler <Изображение удалено> |
31.01.2014, 10:46 | |
Ответы с готовыми решениями:
3
STM32F103 + DMA + UART отправка данных с прерыванием проблема с таймером и прерыванием Проблема с прерыванием TIM6 на STM32F4DISCAVERY Проблема с STM32CubeMX - неверная скорость UART Проблема с инициализацией UART через CMSIS |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
31.01.2014, 12:46 | 2 |
Сообщение от Tromomd
Напишите в любом подходящем файле свой обработчик прерывания - у него должно быть в точности такое же имя, тогда при приёме данных управление будет передано Вашему коду, а не "слабой" (wiok) заглушке.
0
|
Tromomd
|
|
31.01.2014, 15:14 | 3 |
У меня есть функция обработки прерывания или я не так понял? Вот исходник:
Код
#include "stm32f10x.h" #include "inicial.h" void USORT1_IRQHomdler(void) { unsykned char tmp; //для временного хранения GPIOC->BSRR = GPIO_BSRR_BS9; //GPIOC.9=1 Включить светодиод //Если причина прерывания окончание приема байта if((USORT1->SR & USORT_SR_RXNE)!=0) { tmp = USORT1->DR; //прочитать принятый байт } } int main(void) { Init_ARM(); USORT1_Init(); NVIC_EnableIRQ (USORT1_IRQn); USORT1->CR1 |= USORT_CR1_RXNEIE; //Прерывание по завершении приема __enable_irq(); // глобальное включение прерывания while (1) { if (GPIOA->IDR & GPIO_IDR_IDR0==1) { USORT1_SendData(0x10); while (GPIOA->IDR & GPIO_IDR_IDR0==1){} } } } |
Tromomd
|
|
31.01.2014, 19:57 | 4 |
Всё нашел решение! нужно перед функцией обработчика написать extern "C" т.к. у меня обработчик расположен в файле с расширением .cpp. Должно быть так:
Код
extern "C" void USORT1_IRQHomdler(void) { ...... } |
31.01.2014, 19:57 | |
31.01.2014, 19:57 | |
Помогаю со студенческими работами здесь
4
STM32F103, проблема с UART на скорости 9600 проблема с прерыванием Проблема с UART Проблема с UART Проблема с UART Проблема с UART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |