STM32L476 на Nucleo, не может работать на 80 МГц - PullRequest
0 голосов
/ 25 мая 2020

Я запускаю следующий код на fre sh и пустой новый проект для моей платы Nucleo-L476RG:

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

Конфигурация часов по умолчанию и следующая: enter image description here

Я ожидаю увидеть на своем осциллографе тактовую частоту 80 МГц, но я вижу только 10 МГц. Когда я включаю «Master Clock Output», я вижу 80 МГц, НО мой код, похоже, не работает на этой скорости.

Есть идеи, что может вызвать это?

1 Ответ

0 голосов
/ 25 мая 2020

Я ожидаю увидеть на своем осциллографе тактовую частоту 80 МГц, но я вижу только 10 МГц.

Почему вы ожидаете, что эти два оператора C будут выполняться в одном процессоре Часы? Как вы думаете, это возможно? Конечно это не

это переведено на

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

str инструкция занимает 2 такта. два из них по 4 часа. Если вы запускаете FLA SH, вам нужно добавить состояния ожидания. Это займет около 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;
/*...*/

Когда у вас есть это в l oop l oop добавит дополнительные накладные расходы.

...