Problem mit Taktfrequenz STM32F303K8

OP #6570241
Lesenswert?
• ▲
▼
Hallo,

ich habe bemerkt dass bei einem STM32F303K8 auf einem Nucleo-Board das 
setzen/rücksetzen des LED-Pins PB3 bei höheren Taktfrequenzen nicht mehr 
funktioniert. Bis 56 Mhz klappt es, wenn ich dann auf 60 Mhz oder 
darüber gehe funktioniert es nicht mehr. Verwendet wird der interne 
Oszillator (8 Mhz) zusammen mit der PLL (HSI/2 * Faktor). Beschränkungen 
für die GPIOs habe ich im Datenblatt nicht finden können. Habe ich da 
noch etwas übersehen?

Ich habe das Problem so weit isoliert dass es nun aus diesem kurzen 
Programm besteht (Keil-Compiler). Wenn ich den Takt mit RCC->CFGR = 
0x00340002; auf 60 Mhz oder höher setze wird der Pin nicht mehr 
geändert.

#include "stm32f3xx.h"

#define TOGGLE_LED GPIOB->ODR ^= 0x8 //PB3

int main(void){

  //configure clock for system
  //PLL as clock (0x2) and factor for PLL
  RCC->CFGR = 0x00300002; //0x00300002 Faktor 14 = 56 Mhz
  RCC->CR |= RCC_CR_PLLON; //enable PLL

  //configure port B
  RCC->AHBENR |=  RCC_AHBENR_GPIOBEN; //enable clock
  GPIOB->MODER &= ~(GPIO_MODER_MODER3_Msk);//reset bits
  GPIOB->MODER |= 1 << GPIO_MODER_MODER3_Pos; //set as output

  while(1){
    TOGGLE_LED;
  }
}
Gast #6570272
Lesenswert?
• ▲
▼
Das liegt wohl eher an der Takteinstellung an sich:

Erst Teilerfaktoren etc. einstellen, dann PLL einschalten, auf PLLRDY 
warten, und erst DANACH auf PLL mit den SW Bits umschalten. S. RM.

Außerdem LATENCY im FLASH_ACR nicht vergessen.
OP #6570603
Lesenswert?
• ▲
▼
Mit diesen Zeilen funktioniert das jetzt auch bis hin zu 64 Mhz:

FLASH->ACR |= FLASH_ACR_LATENCY_1;
RCC->CFGR |= RCC_CFGR_PLLMUL16;
RCC->CR |= RCC_CR_PLLON;
while (!(RCC->CR & RCC_CR_PLLRDY)); //wait for PLL
RCC->CFGR |= RCC_CFGR_SW_1;  //switch to PLL

Vielen Dank an euch beide.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.