STM32 - Fehler in CMSIS system_stm32l0xx.c

OP #4401410
Lesenswert?
• ▲
▼
Nachdem ich bei einem STM32L051 die HSI Frequenz heraufgesetzt hatte, 
rief ich SystemCoreClockUpdate() auf. Und meine Kontroll-LED spielte 
verrückt.

system_stm32l0xx.c Zeile 249:
1
    case 0x0C:  /* PLL used as system clock */
2
      (...)
3
      if (pllsource == 0x00)
4
      {
5
        /* HSI oscillator clock selected as PLL clock entry */
6
        SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv);    <--- Fehler
7
      }
8
      else
9
      {
10
        /* HSE selected as PLL clock entry */
11
        SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv);
12
      }
13
      break;
14
      (...)

HSI_VALUE ist mit einem define auf 16MHz gesetzt.
Es wird dabei nicht nachgefragt, ob der HSI nicht vielleicht mit 
HSI16DIVF gestartet worden war.

Korrekt sollte es sein:
1
uint32_t hsi_value = (RCC->CR & RCC_CR_HSIDIVEN) ? HSI_VALUE / 4 : HSI_VALUE;
2
SystemCoreClock = ((hsi_value * pllmul) / plldiv);

Muss vielleicht erwaehen, dass ich zum ersten Mal mit HSI arbeite.
Könnte also sein, dass dieser Fehler auch in anderen system_stm32xxx 
Files vorhanden ist.
#4401672
Lesenswert?
• ▲
▼
Bei mir sieht die so aus:
1
void SystemCoreClockUpdate() {
2
}

Und käme ich auf die Idee die Taktfrequenz im laufenden Betrieb zu 
ändern dann würde SystemCoreClock genau dort geupdatet wo es 
vernünftigerweise hingehört, nämlich dort wo der Takt geändert wurde und 
wo man nicht anhand der Registerwerte umständlich herumraten muß was man 
eben gerade explizit getan hat.

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.