簡體   English   中英

Nucleo 上的 STM32L476,無法以 80 Mhz 運行

[英]STM32L476 on Nucleo, can't run at 80 Mhz

我正在為我的 Nucleo-L476RG 板在一個全新的空白新項目上運行以下代碼:

GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;

時鍾配置是默認的,如下所示: 在此處輸入圖像描述

我希望在我的示波器上看到 80 Mhz 時鍾,但我只看到 10 Mhz。 當我啟用“主時鍾輸出”時,我可以看到 80 Mhz 但我的代碼似乎沒有以那個速度運行。

知道什么可能導致這種情況嗎?

我希望在我的示波器上看到 80 Mhz 時鍾,但我只看到 10 Mhz。

為什么您期望這兩個 C 語句將在一個 CPU 時鍾內執行? 你認為有可能嗎? 當然不是

它被翻譯成

  str r2, [r3]
  str r2, [r3, #4]

str指令需要 2 個時鍾。 其中兩個 4 個時鍾。 如果您從 FLASH 運行,則需要添加等待狀態。 所以這將需要大約 8 個時鍾 - 你會看到 10MHz。 您可以嘗試從 SRAM 運行它們,它會更快。

當然,只有當您有這些說明時,它才有效

GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;
GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;
GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;
GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;
GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;
/*...*/

當您在循環中使用它時,循環將增加額外的開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM