我正在为我的Nucleo-L476RG板在一个新的项目上运行以下代码:
GPIOA->BSRR = GPIO_PIN_4;
GPIOA->BRR = GPIO_PIN_4;时钟配置是默认的,如下所示:

我希望在示波器上看到一个80兆赫的时钟,但我只看到10兆赫。当我启用“主时钟输出”时,我可以看到80 Mhz,但我的代码似乎没有以这个速度运行。
知道是什么导致的吗?
发布于 2020-05-25 12:29:06
,我希望在我的示波器上看到一个80兆赫的时钟,但我只看到10兆赫。
为什么您期望这两个C状态将在一个CPU时钟中执行?你认为有可能吗?,当然不是
它被翻译成
str r2, [r3]
str r2, [r3, #4]str指令需要2个时钟。其中两只,四只钟。如果从闪存运行,则需要添加等待状态。这大约需要8个时钟,你可以看到10兆赫。您可以尝试从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;
/*...*/当循环中有它时,循环将增加额外的开销。
https://stackoverflow.com/questions/62001933
复制相似问题