STM32F0xx uVision 5 IDE Peripheral clock problem

OP #6507909
Lesenswert?

Guten Tag,

ich verwende gerade den STM32F091RC mit der uVision 5 IDE Essential.
Der unten aufgeführte Code soll die Peripheral Clock für GPIOA 
einschalten. Wenn ich im Debugg-Fenster die Register beobachte wird die 
Clock für DMA1 eingeschaltet. Nach langen probieren hab ich leider keine 
Lösung gefunden.

Wenn ich den gleichen Code in der STM32CubeIde laufen lasse, 
funktioniert der Code einwandfrei.

In der uVision 5 IDE hab ich CMSIS Core und die Device Startup Files mit 
eingebunden. Um auf die Register zuzugreifen benutze ich die 
Bezeichnungen aus der eingebundenen Header-Datei "stm32f0xx.h".

Die deklarierten Addresse der Register habe ich schon überprüft, Sie 
stimmen
mit der Doku überein.

Doku Reference Manual Seite 120:
https://www.st.com/resource/en/reference_manual/dm00031936-stm32f0x1stm32f0x2stm32f0x8-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

Kann mir wer dabei weiterhelfen?, eventuell hab ich nur ein Brett vor 
dem Kopf und sehe den Fehler nicht :)


______________________________________________________________________ 
__

#include "stm32f0xx.h"

int main(void)
{

  RCC->AHBENR &= ~RCC_AHBENR_GPIOAEN; // clear GPIOA clock
  RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // enable GPIOA clock

  while(1){}
}
#6507917
Lesenswert?

Wenn Du stm32f0xx.h includierst, musst Du ja irgendwo den exakten 
Controller definiert haben. Da gibt es ja viele, STM32F030, F031, etc.

In der stm32f0xx.h finden sich nämlich ganze viele "#ifdef ..." 
Anweisungen die dann je nach definiertem Symbol die richtigen 
Definitionen für Deinen Controller includen.

Der richtige Controller muss in der IDE bei den 
Präprozessor-Einstellungen "defines" definiert sein.

Die CubeMX IDE macht es offenbar richtig, und in Deiner IDE ist 
möglicherweise ein falscher Typ angegeben, so dass falsche (default?) 
Definitionen gezogen werden die nicht zu Deinem Controller passen.
#6507971
Lesenswert?

Klingt blöd, aber bist du sicher, dass die in µV eingestellte CPU mit 
dem eingebunden Header und vor allem der getesteten Hardware 
übereinstimmen?

Uns ist tatsächlich letzteres in einer Kleinserie passiert. Da hat 
nämlich der Bestücker einen F103x statt eines F100x entgegen der BOM 
bestückt und es sind sehr ähnliche Effekte aufgetreten. Unsere QS hat es 
nicht gesehen.

Fiese Sache ;)

Hast du das genau durchgesteppt? Assembler Listing angeschaut?


edit: Ach menno, hab schon länger nicht mehr refresht :(

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