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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dustin B. (db1234)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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 B. (db1234)


Bewertung
0 lesenswert
nicht lesenswert
So simpel, nicht daran gedacht ;)

Vielen Dank

von Jan K. (jan_k)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht lesenswert
Benutz doch einfach die offizielle STm32CubeIDE ...

von Jan K. (jan_k)


Bewertung
0 lesenswert
nicht 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 B. (db1234)


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

von Jan K. (jan_k)


Bewertung
0 lesenswert
nicht 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ß :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.