Salve senhores!
Quem é da antiga me conhece... sou o André Rairan, usuário assíduo em 2006, na outra versão do fórum.
Seguinte, eu cresci e agora to nos ARMs, graças a deus to me livrando dos PICs... (os fanáticos, como eu já fui um dia, caem pra tras agora hahaha)
Fiz um curso de Cortex-M3, fiz outro de C++ (que linguagem fantástica!), já dei uma boa estudada na arquitetura e etc...
Consegui converser meu diretor que os Cortex-M são infinitamente melhores que os PICs 12F a 24F que utilizamos aqui e com os Cortex-M0 não tem nem mais o argumento de preço pra usar os Microsh*ts, temos todas as ferramentas aqui e é hora de começar.
C++ é um tesão! Quem gosta mesmo do que faz e não é fanático por C ou Assembly sabe do que to falando, bom demais, desenvolvimento muito mais rápido e seguro... então vamos de C++.
Ai vem meu problema, é novidade.
Estou fazendo uns testes simulando interrupções de UART no IAR.
Em C funcionou legal, bem completo o simulador por sinal.
Ai dei uma pesquisada pra ver como fazer em C++ e estou tomando isso como referencia:
http://www.eetimes.com/design/embedded/ ... upts-in-C-
Esse artigo fala de ARM7, os Cortex-M são vetorizados... E apesar de um pouco complexo para mim que não estou habituado com C++, entendi o conceito.
Criei minha classe uart, com a função membro statica "UART0_IRQHandler" (como vem no CMSIS) e no cstartup_M.s está igual, tentei com o cstartup_M.c e também nada.
Em C os dois startups funcionam, então o problema não é ai...
Criei outra função estática "testFunc" na classe uart e percebi que ela não é compilada se não for chamada em lugar nenhum do programa.
A interrupção não é chamada em lugar nenhum e sim pelo NVIC, então acho que o problema é por ai...
Ai depois dessa história toda pra mostrar que eu não quero nada pronto, que pesquisei e to tentando (porque eu simplesmente ignoro pessoas que não se esforçam), vêm as perguntas:
Alguém já programa ou programou em C++ usando os Cortex-M e IAR?
Alguém já tratou interrupções em C++ mesmo, sem "extern "C" ou algo do tipo?
As funções estáticas não deveriam ser compiladas mesmo sem serem chamadas? (as otimizações estão desligadas)
Como linkar uma função mesmo estática com o vetor de interrupção nesse caso?
Desculpa por escrever um monte... Mas estou de volta, com um pouco mais de conhecimento, vou tentar responder mais do que perguntar hahaha
Abraço a todos.