Jump to content
Прот5

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

Recommended Posts

Всем привет!


Пытаюсь настроить прерывание на чтение 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(), то линкуется без ошибок, но видать выкидывает эту функцию.... не могу заставить его подхватить обработчик.

Share this post


Link to post
Share on other sites

все, вопрос снят.... если кому интересно - вместо USART1_IRQHandler надо использовать __irq_usart1(void), тогда все ок.

Share this post


Link to post
Share on other sites
Цитата

без HAL/SPL напрямую обращаясь к регистрам в среде Arduino IDE 

Непонятно одно, зачем это делать через ж. то бишь в аурдунье?

Share this post


Link to post
Share on other sites

Материалы вебинара «Создание беспроводных устройств на системах-на-кристалле семейства SimpleLink компании TI»

Компания Компэл, совместно с Texas Instruments провели вебинар, где инженер по применению беспроводных технологий компании TI рассказал(дублированный перевод), как на новых беспроводных системах можно реализовать несколько полезнейших в повседневной жизни функций для ваших устройств. С развитием элементной базы TI становится возможной реализация более удобных, функциональных и безопасных систем, недоступных ранее.

Подробнее...

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • А разве вы иначе думали? Задача следователя - найти улики, а задача прокурора - использовать их для обвинения. И только у суда задача во всем разобраться. Поэтому "все будет использовано против вас" Надеешься индульгенцию себе нализать?  
    • не катит, только от ананасоФФ ...
    • Вот, например, - http://tel-spb.ru/lc.html. Они зависимы. Выбираете имеющийся конденсатор и для него вычисляете индуктивность. Или наоборот. А вообще, гугл в помощь -  https://www.google.com/search?q=расчет+колебательного+контура&oq=расчет+колебательного+контура
    • Собрал по вышеприведенной схеме,всё работает, для минимального тока в 10 мА нужно подобрать диод с бОльшим падением напряжения.
    • Только два одинаковых - с красной термоусадкой и без нее. Последний был в мобильном комплекте инструмента, с которым я ездил по гастролям. Он уже "одет" в термоусадку, отнесу на работу, заменю на имеющийся там. У него губки без насечек. А самого верхнего "китайца" прикупил по дешевке для переделки в измерительный пинцет, но в итоге сделал таковой из пластинок стеклотекстолита (описывал раньше), а этот, с острозаточенными губками, остался для SMD. Да и покупал я только последний. Остальные остались от прошлых хирургических времен. Не выбрасывать же!
    • @Сергей Викторович  , так надо один конденсатор на несколько пикофарад повесить, а не несколько по пикофараду   . Там может и 20 пф быть, и 30. И 300 - если совсем всё плохо. Генерацию надо на выходе микросхемы смотреть, а не на 6-й ноге.
×
×
  • Create New...