[STM32] ext. Int. und arm-gcc Fehlermeldung: 'assert_param' was not declared in this scope

OP #4914142
Lesenswert?

Hallo,

beim STM32F072 will ich externe Interrupts benutzen und dazu habe ich 
die Standard Peripheral Libraries mit dazugenommen (Vers. 1.3.0,) und 
ins Projekt die Files (.c->.cpp umbenannt und .h) mit aufgenommen:

- stm32f0xx_exti.*
- stm32f0xx_misc.*
- stm32f0xx_syscfg.*

Beim compilieren bekomme ich jetzt die Fehlermeldung
> projektspez-file.cpp:246:24: error: 'assert_param' was not declared in this 
scope

Andere Files aus anderen Ordnern haben nicht das Problem.
Das Projekt selbst besteht uas 2 Teilen, einem projektspezifischen Teil 
und einem allgemeinen Teil, also weniger projektspezifisch.

Mit der Compileroption -DUSE_STDPERIPH_DRIVER ändert sich überhaupt 
nichts, auch nicht, wenn ich wenn ich die das Headerfile stm32_assert.h 
in den projektspezifischen Ordner kopiere, so wie es im headerfile steht 
(This file should be copied to the application folder and renamed to 
stm32_assert.h).

Entwicklungs-IDE ist übrigens CooCoox 1.7.8

Mein Problem ist übrigens ähnlich bzw gleich wie hier, nur hilft der Tip 
mit -DUSE_STD.... nicht: Beitrag "[STM32_StdPeriph] Verzweiflung mit makefile"

Oder mal ganz allgemein gefragt: Ist das die richtige Vorgehensweise um 
ext. Interrupts zu gebrauchen? Wenn ich es mit ein paar Anweisungen 
mache reagiert der Prozessor nicht mehr.

In hal_conf.cpp steht u. a.
1
// PB2 konfigurieren:
2
GPIO_Port_Config.IRQPin.GPIO_Port = GPIOB;
3
GPIO_Port_Config.IRQPin.GPIO_Pin.Pin = GPIO_PIN_2;
4
GPIO_Port_Config.IRQPin.GPIO_Pin.Mode = GPIO_MODE_INPUT; // GPIO_MODE_IT_RISING;
5
GPIO_Port_Config.IRQPin.GPIO_Pin.Pull = GPIO_PULLDOWN;
6
GPIO_Port_Config.IRQPin.GPIO_Pin.Speed = GPIO_SPEED_FREQ_MEDIUM;
7

8
// PB2 als ext. Interrupt mit steigender Flanke
9
SYSCFG->EXTICR[0] |= 0x0100; 
10
EXTI->RTSR |= EXTI_RTSR_TR2;
11
EXTI->IMR |= EXTI_IMR_MR2;
12
NVIC_SetPriority(EXTI2_3_IRQn, 2);
13

14
// hier hängt sich scheinbar der Prozessor auf, jedenfalls bekomme ich
15
// nach diesem Befehl keine Reaktion mehr, z. B. LED einschalten.
16
NVIC_EnableIRQ(EXTI2_3_IRQn);  // Hier endet das Programm ......

In main.cpp steht u.a.:
1
void EXTI2_3_IRQHandler(void)
2
{
3
  // Kontrollfunktion um den Int. zu checken
4
}

Die manuelle Geschichte mit ext. Interrupts habe ich übrigens von
http://www.hertaville.com/external-interrupts-on-the-stm32f0.html

--
edit: 2. Parameter bei NVIC_SetPriority() vergessen :(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren