Forum: Mikrocontroller und Digitale Elektronik STM32F0xx uVision 5 IDE Peripheral clock problem


von Dustin M. (db1234)


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){}
}

: Bearbeitet durch User
von Markus M. (adrock)


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.

: Bearbeitet durch User
von Dustin M. (db1234)


Lesenswert?

So simpel, nicht daran gedacht ;)

Vielen Dank

von Jan K. (jan_k)


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

: Bearbeitet durch User
von Leopoldina (Gast)


Lesenswert?

Benutz doch einfach die offizielle STm32CubeIDE ...

von Jan K. (jan_k)


Lesenswert?

Leopoldina schrieb:
> Benutz doch einfach die offizielle STm32CubeIDE ...

µVision ist genauso "offiziell" unterstützt von ST. Was ne fragwürdige 
Aussage. Es wird schon Gründe haben, dass er µV nimmt. Z.B. den besseren 
Compiler oder die Middleware von Keil?

von Dustin M. (db1234)


Lesenswert?

Problem ist schon behoben, hab nicht daran gedacht den richtigen uC 
einzustellen

von Jan K. (jan_k)


Lesenswert?

Dustin B. schrieb:
> Problem ist schon behoben, hab nicht daran gedacht den richtigen uC
> einzustellen

war ja auch mein Vorschlag, war nur leider zu lahm.

Viel Spaß :)

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.