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


von K. H. (hegy)


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 :(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.