IAR C + STM32 Interrupções

Software e Hardware para uC STM

Moderadores: andre_luis, 51

IAR C + STM32 Interrupções

Mensagempor ze » 23 Jul 2019 19:43

Olás. Estou há algum tempo tentando entender como configurar uma interrupção qualquer com o IAR C compiler. O mc em questão é o stm32f103xxx. Pro stm8xxx era simples algo como
Código: Selecionar todos
#pragma vector=TIM2_OVR_UIF_vector
__interrupt void timer2(void)
{
TIM2_SR1_UIF = 0;
...

mas o stm32 tem o tal de NVIC vectored interrupt controller que está me dando dor de cabeça - literalmente. Os exemplos que achei usam solução por sw que não explicam a fundo. E não são IAR C
Por acaso vc, caro amigo, já teve a oportunidade de tentar entender ou melhor ainda, fazer um programinha em c de modo que acessou os registros, criou ou programou um vetor, fez a função usando a sintaxe do IAR c?
Ah sim, sei das soluções gráficas sofisticadas como p.ex. stm32cubemx que até instalei e rodei mas é meio cavalar pra proposta atual
Agradeço vossa colaboração...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor Red Neck Guy » 23 Jul 2019 20:51

Quando eu utilizei o IAR, ele implementava um arquivo asm com uma tabela com ponteiros para as funções de cada periférico, algo assim:
Código: Selecionar todos
__vector_table
        DCD     sfe(CSTACK)
        DCD     Reset_Handler             ; Reset Handler
        DCD     NMI_Handler               ; NMI Handler
        DCD     HardFault_Handler         ; Hard Fault Handler
        DCD     MemManage_Handler         ; MPU Fault Handler
        DCD     BusFault_Handler          ; Bus Fault Handler
        DCD     UsageFault_Handler        ; Usage Fault Handler
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     SVC_Handler               ; SVCall Handler
        DCD     DebugMon_Handler          ; Debug Monitor Handler
        DCD     0                         ; Reserved
        DCD     PendSV_Handler            ; PendSV Handler
        DCD     SysTick_Handler           ; SysTick Handler

         ; External Interrupts
        DCD     WWDG_IRQHandler            ; Window Watchdog
        DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
        DCD     TAMPER_IRQHandler          ; Tamper
        DCD     RTC_IRQHandler             ; RTC
        DCD     FLASH_IRQHandler           ; Flash
        DCD     RCC_IRQHandler             ; RCC
        DCD     EXTI0_IRQHandler           ; EXTI Line 0
        DCD     EXTI1_IRQHandler           ; EXTI Line 1
        DCD     EXTI2_IRQHandler           ; EXTI Line 2
        DCD     EXTI3_IRQHandler           ; EXTI Line 3
        DCD     EXTI4_IRQHandler           ; EXTI Line 4
        DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
        DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
        DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
        DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
        DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
        DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
        DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
        DCD     ADC1_2_IRQHandler          ; ADC1 and ADC2
        DCD     CAN1_TX_IRQHandler         ; CAN1 TX
        DCD     CAN1_RX0_IRQHandler        ; CAN1 RX0
        DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
        DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
        DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
        DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
        DCD     TIM1_UP_IRQHandler         ; TIM1 Update
        DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
        DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
        DCD     TIM2_IRQHandler            ; TIM2
        DCD     TIM3_IRQHandler            ; TIM3
        DCD     TIM4_IRQHandler            ; TIM4
        DCD     I2C1_EV_IRQHandler         ; I2C1 Event
        DCD     I2C1_ER_IRQHandler         ; I2C1 Error
        DCD     I2C2_EV_IRQHandler         ; I2C2 Event
        DCD     I2C2_ER_IRQHandler         ; I2C1 Error
        DCD     SPI1_IRQHandler            ; SPI1
        DCD     SPI2_IRQHandler            ; SPI2
        DCD     USART1_IRQHandler          ; USART1
        DCD     USART2_IRQHandler          ; USART2
        DCD     USART3_IRQHandler          ; USART3
        DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
        DCD     RTCAlarm_IRQHandler        ; RTC alarm through EXTI line
        DCD     OTG_FS_WKUP_IRQHandler     ; USB OTG FS Wakeup through EXTI line
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     TIM5_IRQHandler            ; TIM5
        DCD     SPI3_IRQHandler            ; SPI3
        DCD     UART4_IRQHandler           ; UART4
        DCD     UART5_IRQHandler           ; UART5
        DCD     TIM6_IRQHandler            ; TIM6
        DCD     TIM7_IRQHandler            ; TIM7
        DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1
        DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2
        DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3
        DCD     DMA2_Channel4_IRQHandler   ; DMA2 Channel4
        DCD     DMA2_Channel5_IRQHandler   ; DMA2 Channel5
        DCD     ETH_IRQHandler             ; Ethernet
        DCD     ETH_WKUP_IRQHandler        ; Ethernet Wakeup through EXTI line
        DCD     CAN2_TX_IRQHandler         ; CAN2 TX
        DCD     CAN2_RX0_IRQHandler        ; CAN2 RX0
        DCD     CAN2_RX1_IRQHandler        ; CAN2 RX1
        DCD     CAN2_SCE_IRQHandler        ; CAN2 SCE
        DCD     OTG_FS_IRQHandler          ; USB OTG FS


Então após configurar o periférico e habilitar a interrupção no controlador, o ponteiro estando nesta estrutura já faria com que funcionasse.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: IAR C + STM32 Interrupções

Mensagempor ze » 24 Jul 2019 07:43

Bacana amigo Aquino! Depois disso, presumo que seria algo como (o foco é o tim2):
Código: Selecionar todos
TIM2_IRQHandler()
{
... reset do flag
tmp++;
...
}
Ou foi simplista d+? Aquele lance do stack, preservar registros na entrada e saída da interrupt e afins... o compilador se vira? Sem precisar de diretivas como __interrupt ou __irq e etc?
Também preciso aprender a incorporar um arquivo assembly no projeto. Ou será que a diretiva __asm seria suficiente?
E por fim, preciso aprender a definir onde e como coloco a __vector_table no código ou se já é predefinido em algum #include do IAR. Não te acanhes em somar ainda + à vossa preciosa ajuda.
Agradeço imensamente!!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor Red Neck Guy » 24 Jul 2019 07:58

Procura pela estrutura nos arquivos *.s do teu projeto.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: IAR C + STM32 Interrupções

Mensagempor ze » 24 Jul 2019 16:42

De fato amigo. Mas de fato meu projeto possui zero arquivo .s .. nem mesmo startup.s ou algo do gênero. Pelo menos não está explicito na pasta do IDE. Pois bem... não "possuía". Adicionei manualmente vector_table.s segundo sua orientação. A princípio teve várias falhas as quais analisei uma a uma na unha. Percebi que ele deve ter um cabeçalho coerente. Coloquei baseando em análise de outros...ctrl-c ctrl-v daqui e dali... até que cheguei neste...
Código: Selecionar todos
          MODULE  ?vector_table

        AAPCS INTERWORK, VFP_COMPATIBLE, RWPI_COMPATIBLE
        PRESERVE8


        ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        PUBLIC  __vector_table

        DATA

__iar_init$$done:               ; The vector table is not needed
                                ; until after copy initialization is done

__vector_table
        DCD     sfe(CSTACK)
        DCD     __iar_program_start
        DCD     NMI_Handler               ; NMI Handler
        DCD     HardFault_Handler         ; Hard Fault Handler
        DCD     MemManage_Handler         ; MPU Fault Handler
        DCD     BusFault_Handler          ; Bus Fault Handler
        DCD     UsageFault_Handler        ; Usage Fault Handler
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     SVC_Handler               ; SVCall Handler
        DCD     DebugMon_Handler          ; Debug Monitor Handler
        DCD     0                         ; Reserved
        DCD     PendSV_Handler            ; PendSV Handler
        DCD     SysTick_Handler           ; SysTick Handler

         ; External Interrupts
        DCD     WWDG_IRQHandler            ; Window Watchdog
        DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
        DCD     TAMPER_IRQHandler          ; Tamper
        DCD     RTC_IRQHandler             ; RTC
        DCD     FLASH_IRQHandler           ; Flash
        DCD     RCC_IRQHandler             ; RCC
        DCD     EXTI0_IRQHandler           ; EXTI Line 0
        DCD     EXTI1_IRQHandler           ; EXTI Line 1
        DCD     EXTI2_IRQHandler           ; EXTI Line 2
        DCD     EXTI3_IRQHandler           ; EXTI Line 3
        DCD     EXTI4_IRQHandler           ; EXTI Line 4
        DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
        DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
        DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
        DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
        DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
        DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
        DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
        DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
        DCD     TIM2_IRQHandler            ; TIM2
        DCD     TIM3_IRQHandler            ; TIM3
        DCD     TIM4_IRQHandler            ; TIM4
        DCD     I2C1_EV_IRQHandler         ; I2C1 Event
        DCD     I2C1_ER_IRQHandler         ; I2C1 Error
        DCD     I2C2_EV_IRQHandler         ; I2C2 Event
        DCD     I2C2_ER_IRQHandler         ; I2C1 Error
        DCD     SPI1_IRQHandler            ; SPI1
        DCD     SPI2_IRQHandler            ; SPI2
        DCD     USART1_IRQHandler          ; USART1
        DCD     USART2_IRQHandler          ; USART2
        DCD     USART3_IRQHandler          ; USART3
        DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
        DCD     RTCAlarm_IRQHandler        ; RTC alarm through EXTI line
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     TIM5_IRQHandler            ; TIM5
        DCD     SPI3_IRQHandler            ; SPI3
        DCD     UART4_IRQHandler           ; UART4
        DCD     UART5_IRQHandler           ; UART5
        DCD     TIM7_IRQHandler            ; TIM7
        DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1
        DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2
        DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3
       
        DCD     DMA2_Channel5_IRQHandler   ; DMA2 Channel5
       
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
        THUMB


        PUBWEAK Reset_Handler
        SECTION .text:CODE:NOROOT:REORDER(2)
Reset_Handler
        LDR     R0, 0 //=SystemInit
        BLX     R0
        LDR     R0, =__iar_program_start
        BX      R0

        PUBWEAK NMI_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
NMI_Handler
        B NMI_Handler

        PUBWEAK HardFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
HardFault_Handler
        B HardFault_Handler

        PUBWEAK MemManage_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
MemManage_Handler
        B MemManage_Handler

        PUBWEAK BusFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
BusFault_Handler
        B BusFault_Handler

        PUBWEAK UsageFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
UsageFault_Handler
        B UsageFault_Handler

        PUBWEAK SVC_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
SVC_Handler
        B SVC_Handler

        PUBWEAK DebugMon_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
DebugMon_Handler
        B DebugMon_Handler

        PUBWEAK PendSV_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
PendSV_Handler
        B PendSV_Handler

        PUBWEAK SysTick_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
SysTick_Handler
        B SysTick_Handler

        PUBWEAK WWDG_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
WWDG_IRQHandler
        B WWDG_IRQHandler

        PUBWEAK PVD_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
PVD_IRQHandler
        B PVD_IRQHandler

        PUBWEAK TAMPER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TAMPER_IRQHandler
        B TAMPER_IRQHandler

        PUBWEAK RTC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RTC_IRQHandler
        B RTC_IRQHandler

        PUBWEAK FLASH_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
FLASH_IRQHandler
        B FLASH_IRQHandler

        PUBWEAK RCC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RCC_IRQHandler
        B RCC_IRQHandler

        PUBWEAK EXTI0_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI0_IRQHandler
        B EXTI0_IRQHandler

        PUBWEAK EXTI1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI1_IRQHandler
        B EXTI1_IRQHandler

        PUBWEAK EXTI2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI2_IRQHandler
        B EXTI2_IRQHandler

        PUBWEAK EXTI3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI3_IRQHandler
        B EXTI3_IRQHandler

        PUBWEAK EXTI4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI4_IRQHandler
        B EXTI4_IRQHandler

        PUBWEAK DMA1_Channel1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel1_IRQHandler
        B DMA1_Channel1_IRQHandler

        PUBWEAK DMA1_Channel2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel2_IRQHandler
        B DMA1_Channel2_IRQHandler

        PUBWEAK DMA1_Channel3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel3_IRQHandler
        B DMA1_Channel3_IRQHandler

        PUBWEAK DMA1_Channel4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel4_IRQHandler
        B DMA1_Channel4_IRQHandler

        PUBWEAK DMA1_Channel5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel5_IRQHandler
        B DMA1_Channel5_IRQHandler

        PUBWEAK DMA1_Channel6_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel6_IRQHandler
        B DMA1_Channel6_IRQHandler

        PUBWEAK DMA1_Channel7_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel7_IRQHandler
        B DMA1_Channel7_IRQHandler

        PUBWEAK ADC1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
ADC1_IRQHandler
        B ADC1_IRQHandler

        PUBWEAK EXTI9_5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI9_5_IRQHandler
        B EXTI9_5_IRQHandler

        PUBWEAK TIM1_BRK_TIM15_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_BRK_TIM15_IRQHandler
        B TIM1_BRK_TIM15_IRQHandler

        PUBWEAK TIM1_UP_TIM16_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_UP_TIM16_IRQHandler
        B TIM1_UP_TIM16_IRQHandler

        PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_TRG_COM_TIM17_IRQHandler
        B TIM1_TRG_COM_TIM17_IRQHandler

        PUBWEAK TIM1_CC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_CC_IRQHandler
        B TIM1_CC_IRQHandler

        PUBWEAK TIM2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM2_IRQHandler
        B TIM2_IRQHandler

        PUBWEAK TIM3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM3_IRQHandler
        B TIM3_IRQHandler

        PUBWEAK TIM4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM4_IRQHandler
        B TIM4_IRQHandler

        PUBWEAK I2C1_EV_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C1_EV_IRQHandler
        B I2C1_EV_IRQHandler

        PUBWEAK I2C1_ER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C1_ER_IRQHandler
        B I2C1_ER_IRQHandler

        PUBWEAK I2C2_EV_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C2_EV_IRQHandler
        B I2C2_EV_IRQHandler

        PUBWEAK I2C2_ER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C2_ER_IRQHandler
        B I2C2_ER_IRQHandler

        PUBWEAK SPI1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
SPI1_IRQHandler
        B SPI1_IRQHandler

        PUBWEAK SPI2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
SPI2_IRQHandler
        B SPI2_IRQHandler

        PUBWEAK USART1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART1_IRQHandler
        B USART1_IRQHandler

        PUBWEAK USART2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART2_IRQHandler
        B USART2_IRQHandler

        PUBWEAK USART3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART3_IRQHandler
        B USART3_IRQHandler

        PUBWEAK EXTI15_10_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI15_10_IRQHandler
        B EXTI15_10_IRQHandler

        PUBWEAK RTCAlarm_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RTCAlarm_IRQHandler
        B RTCAlarm_IRQHandler

        PUBWEAK CEC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
CEC_IRQHandler
        B CEC_IRQHandler

        PUBWEAK TIM12_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM12_IRQHandler
        B TIM12_IRQHandler

        PUBWEAK TIM13_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM13_IRQHandler
        B TIM13_IRQHandler

        PUBWEAK TIM14_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM14_IRQHandler
        B TIM14_IRQHandler

        PUBWEAK TIM5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM5_IRQHandler
        B TIM5_IRQHandler

        PUBWEAK SPI3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
SPI3_IRQHandler
        B SPI3_IRQHandler

        PUBWEAK UART4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
UART4_IRQHandler
        B UART4_IRQHandler

        PUBWEAK UART5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
UART5_IRQHandler
        B UART5_IRQHandler

        PUBWEAK TIM6_DAC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM6_DAC_IRQHandler
        B TIM6_DAC_IRQHandler

        PUBWEAK TIM7_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM7_IRQHandler
        B TIM7_IRQHandler

        PUBWEAK DMA2_Channel1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA2_Channel1_IRQHandler
        B DMA2_Channel1_IRQHandler

        PUBWEAK DMA2_Channel2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA2_Channel2_IRQHandler
        B DMA2_Channel2_IRQHandler

        PUBWEAK DMA2_Channel3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA2_Channel3_IRQHandler
        B DMA2_Channel3_IRQHandler

        PUBWEAK DMA2_Channel4_5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA2_Channel4_5_IRQHandler
        B DMA2_Channel4_5_IRQHandler

        PUBWEAK DMA2_Channel5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA2_Channel5_IRQHandler
        B DMA2_Channel5_IRQHandler

        END
(edit ... coloquei o arquivo todo. A quem interessar possa...)

... que é um 1/2 que frankeinsten mas que compilou sem erro e o quase bacana: QUASE RODOU NO SIMULADOR!!! Agradeço +1 vez vossa atenção querido amigo!

Agora a briga é que aparentemente o contador do timer2 não está contando por isso não causa interrupt. Este mc é cheio de frescura como p.ex. liberar clock pra periférico e etc. Estou a analisar os registros bit a bit mas como pulei de mc de 8 pra 32bits e ainda em baixo nível, me confesso um pouco perdido. Alie-se isso ao acumulo de juventudes, vista embaçada, diabetes, pos enfarte, e alguns deprimentes etc . Mas todos minimizáveis com boa vontade e claro, bom humor
De novo, obrigado e

Imagem
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor Red Neck Guy » 24 Jul 2019 17:39

Tenta utilizar a biblioteca da própria ST, ela tem tudo bem mastigado.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: IAR C + STM32 Interrupções

Mensagempor ze » 25 Jul 2019 17:26

Confesso que tentei usar algo como uma biblioteca pronta (de fato , algum exemplo pronto) mas pqp... É uma complicação só pra setar 1 bit de um registro chama funções a rodo. E de novo.. me perdi no emaranhado de coisas.
Mas se a lib que se refere é algo como o conteúdo da pasta include st, sim já estou a usar...
#include "C:\Arquivos de programas\IAR Systems\Embedded Workbench 7.5\arm\inc\ST\iostm32f10xxB.h"
Ela e uma leitura do reference manual me iluminaram um pouco. Mas antes de dominar o mundo só quero fazer um pisca led. Eu quero! eu quero! eu quero! Será que é tão difícil??!!
Código: Selecionar todos
#define led GPIOA_ODR_bit.ODR11
//__irq int timer2(void);
unsigned int i;
void TIM2_IRQHandler()
{
//  TIM2_CR1_bit.URS=0;//reset da interrupt
//  TIM2_SR_bit.TIF=0;//reset da interrupt
TIM2_SR_bit.UIF=0;//reset da interrupt 
led^=1;
i++;
}

O setup do timer 2
Código: Selecionar todos
void setuptimer2int()
{

  TIM2_CR1=0;
  TIM2_CR2=0;
  TIM2_SMCR=0;
  TIM2_DIER=0;
  TIM2_SR=0;
  TIM2_EGR=0;
  TIM2_CCMR1=0;
  TIM2_CCMR2=0;
  TIM2_CCER=0;
  TIM2_CNT=0;
  TIM2_PSC=0;
  TIM2_ARR=0xffff;
  TIM2_CCR1=0;
  TIM2_CCR2=0;
  TIM2_CCR3=0;
  TIM2_CCR4=0;
  TIM2_DCR=0;
  TIM2_DMAR=0;
TIM2_CR1_bit.CEN=0;//desab. contador 
TIM2_PSC=0x00;//32; //prescaler
TIM2_ARR=0x01;//0xfff8; //auto reload
RCC_APB1ENR_bit.TIM2EN=1; //libera clock no timer 2
TIM2_CR1_bit.CEN=1;//aciona contador
TIM2_CR1_bit.DIR=0;//down count
TIM2_DIER_bit.UIE=1;//hab interupt
TIM2_CNT=0;
}

Do clock...
Código: Selecionar todos
void SystemClock_Config(void)   
{
    /**Initializes the CPU, AHB and APB busses clocks
    */
    RCC_CR_bit.HSION=1;// liga clock
    //while(!RCC_CR_bit.HSIRDY); //espera estabilizar
    RCC_CFGR_bit.MCO=0x07; //SYSCLK
    //RCC_CFGR_bit.SW=0x00; //HSI
    RCC_CSR_bit.LSION=1; //interno 40Khz
    RCC_APB2ENR=0xffffffff; //clock em tudo
    RCC_APB1ENR_bit.TIM2EN=1; //clock no timer 2 ... quase tudo
    RCC_APB1ENR=0xffffffff; //agora sim .. tudo mesmo
}

Mas infelizmente o contador do timer2 TIM2_CNT se recusa a contar

O main()
Código: Selecionar todos
int main()
{
SystemClock_Config();
setupports();
setuptimer2int();
//__enable_interrupt();

for(;;)
{
  GPIOB_ODR^=0xffffffff;    //sim ... isto acontece de boa
}
}


Algo ocorre sim pois consigo ver a GPIOB alternar no simulador

Bem... foi só um desabafo digital 1/2 sem graça. Mas depois de velho apanhar de 1 bit ... tá feia a coisa... Caso já tenhas escovado bits com este mc,... já sabe
abç.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor denis » 26 Jul 2019 08:17

ze escreveu:Confesso que tentei usar algo como uma biblioteca pronta (de fato , algum exemplo pronto) mas pqp... É uma complicação só pra setar 1 bit de um registro chama funções a rodo. E de novo.. me perdi no emaranhado de coisas.
Mas se a lib que se refere é algo como o conteúdo da pasta include st, sim já estou a usar...
#include "C:\Arquivos de programas\IAR Systems\Embedded Workbench 7.5\arm\inc\ST\iostm32f10xxB.h"
Ela e uma leitura do reference manual me iluminaram um pouco. Mas antes de dominar o mundo só quero fazer um pisca led. Eu quero! eu quero! eu quero! Será que é tão difícil??!!
Código: Selecionar todos
#define led GPIOA_ODR_bit.ODR11
//__irq int timer2(void);
unsigned int i;
void TIM2_IRQHandler()
{
//  TIM2_CR1_bit.URS=0;//reset da interrupt
//  TIM2_SR_bit.TIF=0;//reset da interrupt
TIM2_SR_bit.UIF=0;//reset da interrupt 
led^=1;
i++;
}

O setup do timer 2
Código: Selecionar todos
void setuptimer2int()
{

  TIM2_CR1=0;
  TIM2_CR2=0;
  TIM2_SMCR=0;
  TIM2_DIER=0;
  TIM2_SR=0;
  TIM2_EGR=0;
  TIM2_CCMR1=0;
  TIM2_CCMR2=0;
  TIM2_CCER=0;
  TIM2_CNT=0;
  TIM2_PSC=0;
  TIM2_ARR=0xffff;
  TIM2_CCR1=0;
  TIM2_CCR2=0;
  TIM2_CCR3=0;
  TIM2_CCR4=0;
  TIM2_DCR=0;
  TIM2_DMAR=0;
TIM2_CR1_bit.CEN=0;//desab. contador 
TIM2_PSC=0x00;//32; //prescaler
TIM2_ARR=0x01;//0xfff8; //auto reload
RCC_APB1ENR_bit.TIM2EN=1; //libera clock no timer 2
TIM2_CR1_bit.CEN=1;//aciona contador
TIM2_CR1_bit.DIR=0;//down count
TIM2_DIER_bit.UIE=1;//hab interupt
TIM2_CNT=0;
}

Do clock...
Código: Selecionar todos
void SystemClock_Config(void)   
{
    /**Initializes the CPU, AHB and APB busses clocks
    */
    RCC_CR_bit.HSION=1;// liga clock
    //while(!RCC_CR_bit.HSIRDY); //espera estabilizar
    RCC_CFGR_bit.MCO=0x07; //SYSCLK
    //RCC_CFGR_bit.SW=0x00; //HSI
    RCC_CSR_bit.LSION=1; //interno 40Khz
    RCC_APB2ENR=0xffffffff; //clock em tudo
    RCC_APB1ENR_bit.TIM2EN=1; //clock no timer 2 ... quase tudo
    RCC_APB1ENR=0xffffffff; //agora sim .. tudo mesmo
}

Mas infelizmente o contador do timer2 TIM2_CNT se recusa a contar

O main()
Código: Selecionar todos
int main()
{
SystemClock_Config();
setupports();
setuptimer2int();
//__enable_interrupt();

for(;;)
{
  GPIOB_ODR^=0xffffffff;    //sim ... isto acontece de boa
}
}


Algo ocorre sim pois consigo ver a GPIOB alternar no simulador

Bem... foi só um desabafo digital 1/2 sem graça. Mas depois de velho apanhar de 1 bit ... tá feia a coisa... Caso já tenhas escovado bits com este mc,... já sabe
abç.


Geralmente no diretório do IAR tem vários exemplos utilizando todos os periféricos do micro.
Se tiver sorte vai encontrar algo.
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Re: IAR C + STM32 Interrupções

Mensagempor ze » 26 Jul 2019 10:49

Sim amigo denis tem parcos exemplos mas não dedicado ao mc e muito menos ao acesso ao hw e muitíssimo menos algum com 'meu nome'... :)
Detectei um provável bug no simulador da ide ao iar: o contador não conta nem a pau. Resolvi fazer no proteus e este sim, conta direitinho. Foi quando percebi que...:
...
Voltei à estaca zero: não sei como fazer o IAR "apontar" pra função da interrupt definida na vector_table. tentei:
__irq timer2() { } // não dá erro mas não róla... o evento não leva à ela
__irq __nested timer2() ... // não permite
Será que:
-tenho que criar um endereço absoluto pra função?
-chamá-la em assembly?
-defini-la com externa?
... reflexões de um semiburro quasicompleto ...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor denis » 26 Jul 2019 11:11

Olha, nunca usei o IAR para a família da STM, será que o simulador do IAR consegue simular a interrupção?

Precisa ser com o IAR mesmo? A ST possui a IDE própria dela o STM32CubeMX.
Também tem a opção de usar o Eclipe com GCC, testei e funciona bem.

Aqui tem o passo a passo.
https://gnu-mcu-eclipse.github.io/install/
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Re: IAR C + STM32 Interrupções

Mensagempor ze » 26 Jul 2019 12:44

Grato...
Sim já rodei o tal cube mas deu uns bug no meu pc (ou na cabeça sei lá) por isso estou a tentar na unha mesmo. O tal cube seria bem bacaninha mesmo. Todo visual e tal. Rodei até no ubuntu... mas.... bugs generalizados...

Pelo menos isso ...
https://stackoverflow.com/questions/487 ... terrupting
https://electronics.stackexchange.com/q ... interrupts
... me fez sentir menos só...

Percebi que a interrupt ocorre mas pula pra uma área vazia de programa. Algo como não foi incorporada a vector_table.s naquela área. Achei que era só "add file" no projeto e pronto: ela encaixa no seu lugar. Mas deve ter algum macete que desconheço. Não sei se o compilador usa o statup.s pra eu editar e colocar a vector_table nele

altas reflexões
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor denis » 26 Jul 2019 14:07

Está usando o STM32F103C8T6 ?

A ST também tem esta IDE - https://www.st.com/en/development-tools/coide.html
Este cara tem um monte de exemplos utilizando os periféricos - https://sites.google.com/site/ericmklau ... ment-board

Eu acho que se você partir pra outra IDE, essas baseadas no GCC, vai encontrar muito mais coisas por aí.
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Re: IAR C + STM32 Interrupções

Mensagempor ze » 26 Jul 2019 15:21

denis escreveu:Está usando o STM32F103C8T6 ?

De fato ele é o prato de entrada pois é o que tem no proteus. O que tenho de verdade é outro.

coide coocox is down... :(

acho que vou voltar pro pic10f200... :cry:
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor denis » 26 Jul 2019 15:44

É, acho que o CoIDE virou o Cube.
Como não conheço esse tal de Cube, continuo com o Eclipe mesmo, para mim tem funcionado bem.
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Re: IAR C + STM32 Interrupções

Mensagempor ze » 30 Jul 2019 15:45

Olás... Obtive algum sucesso parcial. Fiz mais ajustes na vector table (anexa) pra ficar coerente com o mc em questão. Os problemas persistentes:
-no simulador da IDE do IAR o contador timer2 não conta
-no simulador do proteus conta mas quando ocorre o evento da interrupt, ela cai fora de onde está definido na vector table. A qualquer momento descubro o porquê.
A solução parcial foi gerar interrupt forçada em simulator, interrupt setup, tim2, first activation 100, repeat interval 100. A rotina cai na interrupt e volta certinho pro loop.
Ainda não tenho o mc pra testar na prática mas por hora dou-me por satisfeito.
Código: Selecionar todos
        MODULE  ?vector_table

        AAPCS INTERWORK, VFP_COMPATIBLE, RWPI_COMPATIBLE
        PRESERVE8


        ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __SystemInit
        EXTERN  __iar_program_start
        PUBLIC  __vector_table

        DATA

__iar_init$$done:               ; The vector table is not needed
                                ; until after copy initialization is done

__vector_table
        DCD     sfe(CSTACK)
        DCD     __iar_program_start
        DCD     NMI_Handler               ; NMI Handler
        DCD     HardFault_Handler         ; Hard Fault Handler
        DCD     MemManage_Handler         ; MPU Fault Handler
        DCD     BusFault_Handler          ; Bus Fault Handler
        DCD     UsageFault_Handler        ; Usage Fault Handler
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     SVC_Handler               ; SVCall Handler
        DCD     DebugMon_Handler          ; Debug Monitor Handler
        DCD     0                         ; Reserved
        DCD     PendSV_Handler            ; PendSV Handler
        DCD     SysTick_Handler           ; SysTick Handler

         ; External Interrupts
        DCD     WWDG_IRQHandler            ; Window Watchdog
        DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
        DCD     TAMPER_IRQHandler          ; Tamper
        DCD     RTC_IRQHandler             ; RTC
        DCD     FLASH_IRQHandler           ; Flash
        DCD     RCC_IRQHandler             ; RCC
        DCD     EXTI0_IRQHandler           ; EXTI Line 0
        DCD     EXTI1_IRQHandler           ; EXTI Line 1
        DCD     EXTI2_IRQHandler           ; EXTI Line 2
        DCD     EXTI3_IRQHandler           ; EXTI Line 3
        DCD     EXTI4_IRQHandler           ; EXTI Line 4
        DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
        DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
        DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
        DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
        DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
        DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
        DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
//--------------adicionado------------
        DCD     ADC1_2_IRQHandler         
        DCD    USB_HP_CAN_TX_IRQHandler   
        DCD    USB_LP_CAN_RX0_IRQHandler   
        DCD    CAN_RX1_IRQHandler         
        DCD    CAN_SCE_IRQHandler         
        DCD    EXTI9_5_IRQHandler         
        DCD    TIM1_BRK_IRQHandler         
        DCD    TIM1_UP_IRQHandler         
        DCD    TIM1_TRG_COM_IRQHandler     
        DCD    TIM1_CC_IRQHandler         
        DCD    TIM2_IRQHandler             
        DCD    TIM3_IRQHandler             
        DCD    TIM4_IRQHandler             
//---------------------------------------
        DCD     I2C1_EV_IRQHandler         ; I2C1 Event
        DCD     I2C1_ER_IRQHandler         ; I2C1 Error
        DCD     I2C2_EV_IRQHandler         ; I2C2 Event
        DCD     I2C2_ER_IRQHandler         ; I2C1 Error
        DCD     SPI1_IRQHandler            ; SPI1
        DCD     SPI2_IRQHandler            ; SPI2
        DCD     USART1_IRQHandler          ; USART1
        DCD     USART2_IRQHandler          ; USART2
        DCD     USART3_IRQHandler          ; USART3
        DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
        DCD     RTCAlarm_IRQHandler        ; RTC alarm through EXTI line
        DCD    USBWakeup_IRQHandler         


//-------------------------------------------------

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
        THUMB


        PUBWEAK Reset_Handler
        SECTION .text:CODE:NOROOT:REORDER(2)
Reset_Handler
        LDR     R0, =__SystemInit
        BLX     R0
        LDR     R0, =__iar_program_start
        BX      R0

        PUBWEAK NMI_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
NMI_Handler
        B NMI_Handler

        PUBWEAK HardFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
HardFault_Handler
        B HardFault_Handler

        PUBWEAK MemManage_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
MemManage_Handler
        B MemManage_Handler

        PUBWEAK BusFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
BusFault_Handler
        B BusFault_Handler

        PUBWEAK UsageFault_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
UsageFault_Handler
        B UsageFault_Handler

        PUBWEAK SVC_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
SVC_Handler
        B SVC_Handler

        PUBWEAK DebugMon_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
DebugMon_Handler
        B DebugMon_Handler

        PUBWEAK PendSV_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
PendSV_Handler
        B PendSV_Handler

        PUBWEAK SysTick_Handler
        SECTION .text:CODE:NOROOT:REORDER(1)
SysTick_Handler
        B SysTick_Handler

        PUBWEAK WWDG_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
WWDG_IRQHandler
        B WWDG_IRQHandler

        PUBWEAK PVD_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
PVD_IRQHandler
        B PVD_IRQHandler

        PUBWEAK TAMPER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TAMPER_IRQHandler
        B TAMPER_IRQHandler

        PUBWEAK RTC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RTC_IRQHandler
        B RTC_IRQHandler

        PUBWEAK FLASH_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
FLASH_IRQHandler
        B FLASH_IRQHandler

        PUBWEAK RCC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RCC_IRQHandler
        B RCC_IRQHandler

        PUBWEAK EXTI0_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI0_IRQHandler
        B EXTI0_IRQHandler

        PUBWEAK EXTI1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI1_IRQHandler
        B EXTI1_IRQHandler

        PUBWEAK EXTI2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI2_IRQHandler
        B EXTI2_IRQHandler

        PUBWEAK EXTI3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI3_IRQHandler
        B EXTI3_IRQHandler

        PUBWEAK EXTI4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI4_IRQHandler
        B EXTI4_IRQHandler

        PUBWEAK DMA1_Channel1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel1_IRQHandler
        B DMA1_Channel1_IRQHandler

        PUBWEAK DMA1_Channel2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel2_IRQHandler
        B DMA1_Channel2_IRQHandler

        PUBWEAK DMA1_Channel3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel3_IRQHandler
        B DMA1_Channel3_IRQHandler

        PUBWEAK DMA1_Channel4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel4_IRQHandler
        B DMA1_Channel4_IRQHandler

        PUBWEAK DMA1_Channel5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel5_IRQHandler
        B DMA1_Channel5_IRQHandler

        PUBWEAK DMA1_Channel6_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel6_IRQHandler
        B DMA1_Channel6_IRQHandler

        PUBWEAK DMA1_Channel7_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
DMA1_Channel7_IRQHandler
        B DMA1_Channel7_IRQHandler

        PUBWEAK ADC1_2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
ADC1_2_IRQHandler
        B ADC1_2_IRQHandler

        PUBWEAK USB_HP_CAN_TX_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USB_HP_CAN_TX_IRQHandler
        B USB_HP_CAN_TX_IRQHandler

        PUBWEAK USB_LP_CAN_RX0_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USB_LP_CAN_RX0_IRQHandler
        B USB_LP_CAN_RX0_IRQHandler

        PUBWEAK CAN_RX1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
CAN_RX1_IRQHandler
        B CAN_RX1_IRQHandler

        PUBWEAK CAN_SCE_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
CAN_SCE_IRQHandler
        B CAN_SCE_IRQHandler

        PUBWEAK EXTI9_5_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI9_5_IRQHandler
        B EXTI9_5_IRQHandler

        PUBWEAK TIM1_BRK_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_BRK_IRQHandler
        B TIM1_BRK_IRQHandler

        PUBWEAK TIM1_UP_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_UP_IRQHandler
        B TIM1_UP_IRQHandler

        PUBWEAK TIM1_TRG_COM_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_TRG_COM_IRQHandler
        B TIM1_TRG_COM_IRQHandler

        PUBWEAK TIM1_CC_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM1_CC_IRQHandler
        B TIM1_CC_IRQHandler

        PUBWEAK TIM2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM2_IRQHandler
        B TIM2_IRQHandler

        PUBWEAK TIM3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM3_IRQHandler
        B TIM3_IRQHandler

        PUBWEAK TIM4_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
TIM4_IRQHandler
        B TIM4_IRQHandler

        PUBWEAK I2C1_EV_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C1_EV_IRQHandler
        B I2C1_EV_IRQHandler

        PUBWEAK I2C1_ER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C1_ER_IRQHandler
        B I2C1_ER_IRQHandler

        PUBWEAK I2C2_EV_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C2_EV_IRQHandler
        B I2C2_EV_IRQHandler

        PUBWEAK I2C2_ER_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
I2C2_ER_IRQHandler
        B I2C2_ER_IRQHandler

        PUBWEAK SPI1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
SPI1_IRQHandler
        B SPI1_IRQHandler

        PUBWEAK SPI2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
SPI2_IRQHandler
        B SPI2_IRQHandler

        PUBWEAK USART1_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART1_IRQHandler
        B USART1_IRQHandler

        PUBWEAK USART2_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART2_IRQHandler
        B USART2_IRQHandler

        PUBWEAK USART3_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USART3_IRQHandler
        B USART3_IRQHandler

        PUBWEAK EXTI15_10_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
EXTI15_10_IRQHandler
        B EXTI15_10_IRQHandler

        PUBWEAK RTCAlarm_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
RTCAlarm_IRQHandler
        B RTCAlarm_IRQHandler

        PUBWEAK USBWakeup_IRQHandler
        SECTION .text:CODE:NOROOT:REORDER(1)
USBWakeup_IRQHandler
        B USBWakeup_IRQHandler

        END

Meio que montei na raça agora com mais coerência. Agradeço de novo vossas iluminações humanas e claro, a Divina: obrigado Senhor!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Próximo

Voltar para STMicroelectronics

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x