Перейти к содержанию
bbh_blocked_dnftl

Dx Portal Как заставить линковщик Arduino IDE вшить USART1_IRQHandler


Рекомендуемые сообщения

Всем привет!

 

 

 

 

Пытаюсь настроить прерывание на чтение USART1 без HAL/SPL напрямую обращаясь к регистрам в среде Arduino IDE и столкнулся с проблемой:

обработчик прерывания не цепляется по всей видимости при линковке, т.е. само прерывание срабатывает при отправке на ком-порт, и сразу начинает мигать индикатор ошибки у Blue pill (stm32f103c)... в остальном все работает нормально, не работает именно RX у МК... причем, если не использовать прерывание на чтение, то RX так же не работает, т.е. если просто выставить биты RE, TE и UE.. то TX работает, а RX нет:

 

 

 

...

void USART1_IRQHandler(void)

{

if (USART1_BASE->SR & USART_SR_RXNE)

{

 

}

}

void setup(){

...

RCC_BASE->APB2ENR |= (RCC_APB2ENR_USART1EN);

USART1_BASE->BRR = 0x1D4C; //baudrate 9600 @72Mhz

USART1_BASE->CR2 = (USART1_BASE->CR2&0xFFFF80FF);//обнуляем LINEN STOP[1:0] CLK EN CPOL CPHA LBCL

USART1_BASE->CR3 = (USART1_BASE->CR3&0xFFFFF804);// обнуляем CTSIE CTSE RTSE DMAT DMAR SCEN NACK HDSEL IREN EIE

USART1_BASE->CR1 |= USART_CR1_UE | USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE;

 

noInterrupts();

NVIC_BASE->ISER[37/32] = BIT(37%32); // 37 - USART1 из Reference Manual'a

interrupts();// вызывает внутри __enable_irq(), напрямую почему-то не определено и хрен знает какой хидер цеплять

...

}

...

 

 

Кто-нибудь сталкивался с подобным? Как без HAL SPL все это дело напрямую запилить, а точнее, чтобы линковщик обработчик USART1_IRQHandler вшил? Пробовал добавлять extern "C" { void USART1_IRQHandler(void){...} } ... тоже не помогло, причем если поставить после всех хидеров сразу с описанием внутренностей функции, то линковщик ругается "conflicts with new declaration with 'C' linkage".... а если перед setup(), то линкуется без ошибок, но видать выкидывает эту функцию.... не могу заставить его подхватить обработчик.

 

Читать дальше

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...