Skocz do zawartości

[STM32F4] Obsługa przerwania od timera bez użycia bibliotek


tylde

Pomocna odpowiedź

Cześć!

Posiadam płytkę STM32F446RE Nucleo, a moim środowiskiem jest System Workbench for STM32. Chcę zrealizować zadanie, w którym timer przepełnia się i powoduje miganie diody.

Bazuję tylko na rejestrach i naskrobałem taki kod:

#include "stm32f446xx.h"

int main(void)
{

RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // włączenie sygnału zegarowego portu A
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // włączenie sygnału zegarowego TIM3

__DSB(); // przeczekanie inicjalizacji zegarów

// ustawienie PA5 jako OUTPUT oraz PA13, PA14 jako AF SWD
GPIOA->MODER = GPIO_MODER_MODER5_0 |  GPIO_MODER_MODER13_1 |  GPIO_MODER_MODER14_1;

// ustawienie rejestrów TIM3
   TIM3->PSC = 8000;
   TIM3->ARR = 500;
   TIM3->DIER |= TIM_DIER_UIE;
   TIM3->EGR = TIM_EGR_UG;
   TIM3->CR1 |= TIM_CR1_CEN;


   // zezwolenie na przerwania od TIM3
   NVIC_EnableIRQ(TIM3_IRQn);

while(1){};

} // main()


// Obsługa przerwania od TIM3
__attribute__((interrupt)) void TIM3_IRQHandler(void) {

 if (TIM3->SR & TIM_SR_UIF) GPIOA->ODR ^= (1 << 5);
}

Dołączane pliki nagłówkowe w sub folderze projektu inc:

core_cm4.h

core_cm4_simd.h

core_cmFunc.h

core_cmInstr.h

stm32f446xx.h

system_stm32f4xx.h

Gdy uruchomię program w debbugerze przy pierwszym breakpoincie w main dostaję tak komunikat w konsoli:

GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150304-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".

No source file named D:\\ST\\workspace\\Test\\src\\main.c.
Function "TIM3_IRQHandler" not defined in "D:\\ST\\workspace\\Interrupt\\src\\main.c".

Temporary breakpoint 3, main () at ../src/main.c:6
6		RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // w??czenie sygna?u zegarowego portu A

Gdy dam Resume, a następnie Pause to dostaję taki komunikat:

GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150304-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".

No source file named D:\\ST\\workspace\\Test\\src\\main.c.
Function "TIM3_IRQHandler" not defined in "D:\\ST\\workspace\\Interrupt\\src\\main.c".

Temporary breakpoint 3, main () at ../src/main.c:6
6		RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // w??czenie sygna?u zegarowego portu A


Program received signal SIGINT, Interrupt.
UsageFault_Handler () at ../startup/startup_stm32.s:96
96		b	Infinite_Loop

Wygląda na to, że w plikach nagłówkowych może brakować void TIM3_IRQHandler(void).

Function "TIM3_IRQHandler" not defined in "D:\\ST\\workspace\\Interrupt\\src\\main.c". 

Czy miałby ktoś podesłać sprawdzone pliki nagłówkowe? Powgrywałem nowe z google i wciąż mam ten sam problem.

Może problem leży w kodzie? Próbowałem już wiele kombinacji, też robiłem copy-paste z wielu stron i wciąż ląduje w Fault Handlerze.

UsageFault_Handler() at startup_stm32.s:96 0x800022c	
Link do komentarza
Share on other sites

1. Stwórz odnowa projekt dla HAL`a, nie zmieniaj nic w ustawieniach. Zmień tylko zawartość pliku main na twój.

2.Sprawdź w pliku .ld czy na pewno w swoim programie masz dobrą nazwę przerwania. Nazwy przerwań są wypisane w tym pliku po .word.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie korzystam z HALA, tylko sam CMSIS

A tak wygląda zawartość pliku startup_stm32.s:

/**
 ******************************************************************************
 * @file      startup_stm32.s
 * @author    Ac6
 * @version   V1.0.0
 * @date      12-June-2014
 ******************************************************************************
 */

 .syntax unified
 .cpu cortex-m4
 .thumb

.global	g_pfnVectors
.global	Default_Handler

/* start address for the initialization values of the .data section.
defined in linker script */
.word	_sidata
/* start address for the .data section. defined in linker script */
.word	_sdata
/* end address for the .data section. defined in linker script */
.word	_edata
/* start address for the .bss section. defined in linker script */
.word	_sbss
/* end address for the .bss section. defined in linker script */
.word	_ebss

.equ  BootRAM,        0xF1E0F85F
/**
* @brief  This is the code that gets called when the processor first
*          starts execution following a reset event. Only the absolutely
*          necessary set is performed, after which the application
*          supplied main() routine is called.
* @param  None
* @retval : None
*/

   .section	.text.Reset_Handler
.weak	Reset_Handler
.type	Reset_Handler, %function
Reset_Handler:

/* Copy the data segment initializers from flash to SRAM */
 movs	r1, #0
 b	LoopCopyDataInit

CopyDataInit:
ldr	r3, =_sidata
ldr	r3, [r3, r1]
str	r3, [r0, r1]
adds	r1, r1, #4

LoopCopyDataInit:
ldr	r0, =_sdata
ldr	r3, =_edata
adds	r2, r0, r1
cmp	r2, r3
bcc	CopyDataInit
ldr	r2, =_sbss
b	LoopFillZerobss
/* Zero fill the bss segment. */
FillZerobss:
movs r3, #0
	str  r3, [r2]
adds r2, r2, #4

LoopFillZerobss:
ldr	r3, = _ebss
cmp	r2, r3
bcc	FillZerobss

/* Call the clock system intitialization function.*/
   bl  SystemInit
/* Call static constructors */
   bl __libc_init_array
/* Call the application's entry point.*/
bl	main

LoopForever:
   b LoopForever

.size	Reset_Handler, .-Reset_Handler

/**
* @brief  This is the code that gets called when the processor receives an
*         unexpected interrupt.  This simply enters an infinite loop, preserving
*         the system state for examination by a debugger.
*
* @param  None
* @retval : None
*/
   .section	.text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b	Infinite_Loop
.size	Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex-M.  Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
	.section	.isr_vector,"a",%progbits
.type	g_pfnVectors, %object
.size	g_pfnVectors, .-g_pfnVectors

g_pfnVectors:
.word	_estack
.word	Reset_Handler
.word	NMI_Handler
.word	HardFault_Handler
.word	MemManage_Handler
.word	BusFault_Handler
.word	UsageFault_Handler
.word	0
.word	0
.word	0
.word	0
.word	SVC_Handler
.word	DebugMon_Handler
.word	0
.word	PendSV_Handler
.word	SysTick_Handler
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0
.word	0

/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/

 	.weak	NMI_Handler
.thumb_set NMI_Handler,Default_Handler

 	.weak	HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler

 	.weak	MemManage_Handler
.thumb_set MemManage_Handler,Default_Handler

 	.weak	BusFault_Handler
.thumb_set BusFault_Handler,Default_Handler

.weak	UsageFault_Handler
.thumb_set UsageFault_Handler,Default_Handler

.weak	SVC_Handler
.thumb_set SVC_Handler,Default_Handler

.weak	DebugMon_Handler
.thumb_set DebugMon_Handler,Default_Handler

.weak	PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler

.weak	SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler

.weak	SystemInit

/************************ (C) COPYRIGHT Ac6 *****END OF FILE****/

Czyli widać, że nie ma tych nazw przerwań.

Korzystam z System Workbench, przy tworzeniu projektu wybieram C oraz Ac6 STM32 MCU GCC, a następnie samo dodaje mi plik startup_stm32.s.

Pliki core_cm4.h, core_cm4_simd.h,core_cmFunc.h, core_cmInstr.h, stm32f446xx.h, system_stm32f4xx.h dodaje ręcznie do folderu inc, a następnie tworze plik main.c.

// EDIT Znalazłem w google nowy plik startup i go podmieniłem:

/**
 ******************************************************************************
 * @file      startup_stm32.s
 * @author    Ac6
 * @version   V1.0.0
 * @date      12-June-2014
 ******************************************************************************
 */

 .syntax unified
 .cpu cortex-m4
 .thumb

.global	g_pfnVectors
.global	Default_Handler

/* start address for the initialization values of the .data section.
defined in linker script */
.word	_sidata
/* start address for the .data section. defined in linker script */
.word	_sdata
/* end address for the .data section. defined in linker script */
.word	_edata
/* start address for the .bss section. defined in linker script */
.word	_sbss
/* end address for the .bss section. defined in linker script */
.word	_ebss

.equ  BootRAM,        0xF1E0F85F
/**
* @brief  This is the code that gets called when the processor first
*          starts execution following a reset event. Only the absolutely
*          necessary set is performed, after which the application
*          supplied main() routine is called.
* @param  None
* @retval : None
*/

   .section	.text.Reset_Handler
.weak	Reset_Handler
.type	Reset_Handler, %function
Reset_Handler:

/* Copy the data segment initializers from flash to SRAM */
 movs	r1, #0
 b	LoopCopyDataInit

CopyDataInit:
ldr	r3, =_sidata
ldr	r3, [r3, r1]
str	r3, [r0, r1]
adds	r1, r1, #4

LoopCopyDataInit:
ldr	r0, =_sdata
ldr	r3, =_edata
adds	r2, r0, r1
cmp	r2, r3
bcc	CopyDataInit
ldr	r2, =_sbss
b	LoopFillZerobss
/* Zero fill the bss segment. */
FillZerobss:
movs r3, #0
	str  r3, [r2]
adds r2, r2, #4

LoopFillZerobss:
ldr	r3, = _ebss
cmp	r2, r3
bcc	FillZerobss

/* Call the clock system intitialization function.*/
   bl  SystemInit
/* Call static constructors */
   bl __libc_init_array
/* Call the application's entry point.*/
bl	main

LoopForever:
   b LoopForever

.size	Reset_Handler, .-Reset_Handler

/**
* @brief  This is the code that gets called when the processor receives an
*         unexpected interrupt.  This simply enters an infinite loop, preserving
*         the system state for examination by a debugger.
*
* @param  None
* @retval : None
*/
   .section	.text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b	Infinite_Loop
.size	Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex-M.  Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
	.section	.isr_vector,"a",%progbits
.type	g_pfnVectors, %object
.size	g_pfnVectors, .-g_pfnVectors

g_pfnVectors:
.word	_estack
.word	Reset_Handler
.word	NMI_Handler
.word	HardFault_Handler
.word	MemManage_Handler
.word	BusFault_Handler
.word	UsageFault_Handler
.word	0
.word	0
.word	0
.word	0
.word	SVC_Handler
.word	DebugMon_Handler
.word	0
.word	PendSV_Handler
.word	SysTick_Handler

/* External Interrupts */
 .word     WWDG_IRQHandler                   /* Window WatchDog              */
 .word     PVD_IRQHandler                    /* PVD through EXTI Line detection */
 .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through the EXTI line */
 .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI line */
 .word     FLASH_IRQHandler                  /* FLASH                        */
 .word     RCC_IRQHandler                    /* RCC                          */
 .word     EXTI0_IRQHandler                  /* EXTI Line0                   */
 .word     EXTI1_IRQHandler                  /* EXTI Line1                   */
 .word     EXTI2_IRQHandler                  /* EXTI Line2                   */
 .word     EXTI3_IRQHandler                  /* EXTI Line3                   */

 .word     EXTI4_IRQHandler                  /* EXTI Line4                   */
 .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                */
 .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                */
 .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                */
 .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                */
 .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                */
 .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                */
 .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                */
 .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         */
 .word     CAN1_TX_IRQHandler                /* CAN1 TX                      */

 .word     CAN1_RX0_IRQHandler               /* CAN1 RX0                     */
 .word     CAN1_RX1_IRQHandler               /* CAN1 RX1                     */
 .word     CAN1_SCE_IRQHandler               /* CAN1 SCE                     */
 .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          */
 .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          */
 .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        */
 .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation and TIM11 */
 .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         */
 .word     TIM2_IRQHandler                   /* TIM2                         */
 .word     TIM3_IRQHandler                   /* TIM3                         */

 .word     TIM4_IRQHandler                   /* TIM4                         */
 .word     I2C1_EV_IRQHandler                /* I2C1 Event                   */
 .word     I2C1_ER_IRQHandler                /* I2C1 Error                   */
 .word     I2C2_EV_IRQHandler                /* I2C2 Event                   */
 .word     I2C2_ER_IRQHandler                /* I2C2 Error                   */
 .word     SPI1_IRQHandler                   /* SPI1                         */
 .word     SPI2_IRQHandler                   /* SPI2                         */
 .word     USART1_IRQHandler                 /* USART1                       */
 .word     USART2_IRQHandler                 /* USART2                       */
 .word     USART3_IRQHandler                 /* USART3                       */

 .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        */
 .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through EXTI Line */
 .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through EXTI line */
 .word     TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12         */
 .word     TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13        */
 .word     TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation and TIM14 */
 .word     TIM8_CC_IRQHandler                /* TIM8 Capture Compare         */
 .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 */
 .word     FMC_IRQHandler                    /* FMC                          */
 .word     SDIO_IRQHandler                   /* SDIO                         */

 .word     TIM5_IRQHandler                   /* TIM5                         */
 .word     SPI3_IRQHandler                   /* SPI3                         */
 .word     UART4_IRQHandler                  /* UART4                        */
 .word     UART5_IRQHandler                  /* UART5                        */
 .word     TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun errors */
 .word     TIM7_IRQHandler                   /* TIM7                         */
 .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                */
 .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                */
 .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                */
 .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                */
 .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     CAN2_TX_IRQHandler                /* CAN2 TX                      */
 .word     CAN2_RX0_IRQHandler               /* CAN2 RX0                     */
 .word     CAN2_RX1_IRQHandler               /* CAN2 RX1                     */
 .word     CAN2_SCE_IRQHandler               /* CAN2 SCE                     */
 .word     OTG_FS_IRQHandler                 /* USB OTG FS                   */
 .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                */
 .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                */
 .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                */
 .word     USART6_IRQHandler                 /* USART6                       */
 .word     I2C3_EV_IRQHandler                /* I2C3 event                   */
 .word     I2C3_ER_IRQHandler                /* I2C3 error                   */
 .word     OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out   */
 .word     OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In    */
 .word     OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through EXTI */
 .word     OTG_HS_IRQHandler                 /* USB OTG HS                   */
 .word     DCMI_IRQHandler                   /* DCMI                         */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     FPU_IRQHandler                    /* FPU                          */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     SPI4_IRQHandler                   /* SPI4                         */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     SAI1_IRQHandler                   /* SAI1                         */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     0                                 /* Reserved                     */
 .word     SAI2_IRQHandler                   /* SAI2                         */
 .word     QUADSPI_IRQHandler                /* QuadSPI                      */
 .word     CEC_IRQHandler                    /* CEC                          */
 .word     SPDIF_RX_IRQHandler               /* SPDIF RX                     */
 .word     FMPI2C1_Event_IRQHandler          /* FMPI2C 1 Event               */
 .word     FMPI2C1_Error_IRQHandler          /* FMPI2C 1 Error               */

/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/

 	.weak	NMI_Handler
.thumb_set NMI_Handler,Default_Handler

 	.weak	HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler

 	.weak	MemManage_Handler
.thumb_set MemManage_Handler,Default_Handler

 	.weak	BusFault_Handler
.thumb_set BusFault_Handler,Default_Handler

.weak	UsageFault_Handler
.thumb_set UsageFault_Handler,Default_Handler

.weak	SVC_Handler
.thumb_set SVC_Handler,Default_Handler

.weak	DebugMon_Handler
.thumb_set DebugMon_Handler,Default_Handler

.weak	PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler

.weak	SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler

.weak	SystemInit

  .weak      WWDG_IRQHandler
  .thumb_set WWDG_IRQHandler,Default_Handler

  .weak      PVD_IRQHandler
  .thumb_set PVD_IRQHandler,Default_Handler

  .weak      TAMP_STAMP_IRQHandler
  .thumb_set TAMP_STAMP_IRQHandler,Default_Handler

  .weak      RTC_WKUP_IRQHandler
  .thumb_set RTC_WKUP_IRQHandler,Default_Handler

  .weak      FLASH_IRQHandler
  .thumb_set FLASH_IRQHandler,Default_Handler

  .weak      RCC_IRQHandler
  .thumb_set RCC_IRQHandler,Default_Handler

  .weak      EXTI0_IRQHandler
  .thumb_set EXTI0_IRQHandler,Default_Handler

  .weak      EXTI1_IRQHandler
  .thumb_set EXTI1_IRQHandler,Default_Handler

  .weak      EXTI2_IRQHandler
  .thumb_set EXTI2_IRQHandler,Default_Handler

  .weak      EXTI3_IRQHandler
  .thumb_set EXTI3_IRQHandler,Default_Handler

  .weak      EXTI4_IRQHandler
  .thumb_set EXTI4_IRQHandler,Default_Handler

  .weak      DMA1_Stream0_IRQHandler
  .thumb_set DMA1_Stream0_IRQHandler,Default_Handler

  .weak      DMA1_Stream1_IRQHandler
  .thumb_set DMA1_Stream1_IRQHandler,Default_Handler

  .weak      DMA1_Stream2_IRQHandler
  .thumb_set DMA1_Stream2_IRQHandler,Default_Handler

  .weak      DMA1_Stream3_IRQHandler
  .thumb_set DMA1_Stream3_IRQHandler,Default_Handler

  .weak      DMA1_Stream4_IRQHandler
  .thumb_set DMA1_Stream4_IRQHandler,Default_Handler

  .weak      DMA1_Stream5_IRQHandler
  .thumb_set DMA1_Stream5_IRQHandler,Default_Handler

  .weak      DMA1_Stream6_IRQHandler
  .thumb_set DMA1_Stream6_IRQHandler,Default_Handler

  .weak      ADC_IRQHandler
  .thumb_set ADC_IRQHandler,Default_Handler

  .weak      CAN1_TX_IRQHandler
  .thumb_set CAN1_TX_IRQHandler,Default_Handler

  .weak      CAN1_RX0_IRQHandler
  .thumb_set CAN1_RX0_IRQHandler,Default_Handler

  .weak      CAN1_RX1_IRQHandler
  .thumb_set CAN1_RX1_IRQHandler,Default_Handler

  .weak      CAN1_SCE_IRQHandler
  .thumb_set CAN1_SCE_IRQHandler,Default_Handler

  .weak      EXTI9_5_IRQHandler
  .thumb_set EXTI9_5_IRQHandler,Default_Handler

  .weak      TIM1_BRK_TIM9_IRQHandler
  .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler

  .weak      TIM1_UP_TIM10_IRQHandler
  .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler

  .weak      TIM1_TRG_COM_TIM11_IRQHandler
  .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler

  .weak      TIM1_CC_IRQHandler
  .thumb_set TIM1_CC_IRQHandler,Default_Handler

  .weak      TIM2_IRQHandler
  .thumb_set TIM2_IRQHandler,Default_Handler

  .weak      TIM3_IRQHandler
  .thumb_set TIM3_IRQHandler,Default_Handler

  .weak      TIM4_IRQHandler
  .thumb_set TIM4_IRQHandler,Default_Handler

  .weak      I2C1_EV_IRQHandler
  .thumb_set I2C1_EV_IRQHandler,Default_Handler

  .weak      I2C1_ER_IRQHandler
  .thumb_set I2C1_ER_IRQHandler,Default_Handler

  .weak      I2C2_EV_IRQHandler
  .thumb_set I2C2_EV_IRQHandler,Default_Handler

  .weak      I2C2_ER_IRQHandler
  .thumb_set I2C2_ER_IRQHandler,Default_Handler

  .weak      SPI1_IRQHandler
  .thumb_set SPI1_IRQHandler,Default_Handler

  .weak      SPI2_IRQHandler
  .thumb_set SPI2_IRQHandler,Default_Handler

  .weak      USART1_IRQHandler
  .thumb_set USART1_IRQHandler,Default_Handler

  .weak      USART2_IRQHandler
  .thumb_set USART2_IRQHandler,Default_Handler

  .weak      USART3_IRQHandler
  .thumb_set USART3_IRQHandler,Default_Handler

  .weak      EXTI15_10_IRQHandler
  .thumb_set EXTI15_10_IRQHandler,Default_Handler

  .weak      RTC_Alarm_IRQHandler
  .thumb_set RTC_Alarm_IRQHandler,Default_Handler

  .weak      OTG_FS_WKUP_IRQHandler
  .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler

  .weak      TIM8_BRK_TIM12_IRQHandler
  .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler

  .weak      TIM8_UP_TIM13_IRQHandler
  .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler

  .weak      TIM8_TRG_COM_TIM14_IRQHandler
  .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler

  .weak      TIM8_CC_IRQHandler
  .thumb_set TIM8_CC_IRQHandler,Default_Handler

  .weak      DMA1_Stream7_IRQHandler
  .thumb_set DMA1_Stream7_IRQHandler,Default_Handler

  .weak      FMC_IRQHandler
  .thumb_set FMC_IRQHandler,Default_Handler

  .weak      SDIO_IRQHandler
  .thumb_set SDIO_IRQHandler,Default_Handler

  .weak      TIM5_IRQHandler
  .thumb_set TIM5_IRQHandler,Default_Handler

  .weak      SPI3_IRQHandler
  .thumb_set SPI3_IRQHandler,Default_Handler

  .weak      UART4_IRQHandler
  .thumb_set UART4_IRQHandler,Default_Handler

  .weak      UART5_IRQHandler
  .thumb_set UART5_IRQHandler,Default_Handler

  .weak      TIM6_DAC_IRQHandler
  .thumb_set TIM6_DAC_IRQHandler,Default_Handler

  .weak      TIM7_IRQHandler
  .thumb_set TIM7_IRQHandler,Default_Handler

  .weak      DMA2_Stream0_IRQHandler
  .thumb_set DMA2_Stream0_IRQHandler,Default_Handler

  .weak      DMA2_Stream1_IRQHandler
  .thumb_set DMA2_Stream1_IRQHandler,Default_Handler

  .weak      DMA2_Stream2_IRQHandler
  .thumb_set DMA2_Stream2_IRQHandler,Default_Handler

  .weak      DMA2_Stream3_IRQHandler
  .thumb_set DMA2_Stream3_IRQHandler,Default_Handler

  .weak      DMA2_Stream4_IRQHandler
  .thumb_set DMA2_Stream4_IRQHandler,Default_Handler

  .weak      CAN2_TX_IRQHandler
  .thumb_set CAN2_TX_IRQHandler,Default_Handler

  .weak      CAN2_RX0_IRQHandler
  .thumb_set CAN2_RX0_IRQHandler,Default_Handler

  .weak      CAN2_RX1_IRQHandler
  .thumb_set CAN2_RX1_IRQHandler,Default_Handler

  .weak      CAN2_SCE_IRQHandler
  .thumb_set CAN2_SCE_IRQHandler,Default_Handler

  .weak      OTG_FS_IRQHandler
  .thumb_set OTG_FS_IRQHandler,Default_Handler

  .weak      DMA2_Stream5_IRQHandler
  .thumb_set DMA2_Stream5_IRQHandler,Default_Handler

  .weak      DMA2_Stream6_IRQHandler
  .thumb_set DMA2_Stream6_IRQHandler,Default_Handler

  .weak      DMA2_Stream7_IRQHandler
  .thumb_set DMA2_Stream7_IRQHandler,Default_Handler

  .weak      USART6_IRQHandler
  .thumb_set USART6_IRQHandler,Default_Handler

  .weak      I2C3_EV_IRQHandler
  .thumb_set I2C3_EV_IRQHandler,Default_Handler

  .weak      I2C3_ER_IRQHandler
  .thumb_set I2C3_ER_IRQHandler,Default_Handler

  .weak      OTG_HS_EP1_OUT_IRQHandler
  .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler

  .weak      OTG_HS_EP1_IN_IRQHandler
  .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler

  .weak      OTG_HS_WKUP_IRQHandler
  .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler

  .weak      OTG_HS_IRQHandler
  .thumb_set OTG_HS_IRQHandler,Default_Handler

  .weak      DCMI_IRQHandler
  .thumb_set DCMI_IRQHandler,Default_Handler

  .weak      FPU_IRQHandler
  .thumb_set FPU_IRQHandler,Default_Handler

  .weak      SPI4_IRQHandler
  .thumb_set SPI4_IRQHandler,Default_Handler

  .weak      SAI1_IRQHandler
  .thumb_set SAI1_IRQHandler,Default_Handler

  .weak      SAI2_IRQHandler
  .thumb_set SAI2_IRQHandler,Default_Handler

  .weak      QUADSPI_IRQHandler
  .thumb_set QUADSPI_IRQHandler,Default_Handler

  .weak      CEC_IRQHandler
  .thumb_set CEC_IRQHandler,Default_Handler

  .weak      SPDIF_RX_IRQHandler
  .thumb_set SPDIF_RX_IRQHandler,Default_Handler

  .weak      FMPI2C1_Event_IRQHandler
  .thumb_set FMPI2C1_Event_IRQHandler,Default_Handler

  .weak      FMPI2C1_Error_IRQHandler
  .thumb_set FMPI2C1_Error_IRQHandler,Default_Handler

/************************ (C) COPYRIGHT Ac6 *****END OF FILE****/

Wygląda na to, że działa, ale jeszcze porobię kilka testów, dziękuję 🙂

Link do komentarza
Share on other sites

Nie musisz korzystać z HAL`a - stwórz tylko projekt z HAL`em, aby mieć potrzebne pliki i skonfigurowany linker i plik .ld z wektorami przerwań.

Jak nie będziesz inkuldował HAL`a to on będzie sobie tylko leżał w projekcie i kompilator go nie tknie, a potrzebne pliki będą.

Link do komentarza
Share on other sites

Przy tworzeniu projektu jak mam wybór dodania: No firmware, StdPeriph, HAL, po wyborze HAL, wyskakuje komunikat:

Target firmware has not been found, please download it.

Prawdę mówiąc już dawno instalowałem IDE, nie pamiętam co dogrywałem, raczej żadnych bibliotek nie dodawałem.

Nowy pliczek startup pomógł.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...