ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
22 февраля
1492304
IBAH (20.01.2025 22:56, просмотров: 2442)
Кортекс М0, или лыжи не едут, или я того! Разное время выполнения кода в зависимости от настроек ЖПИО. 

компилятор IAR

STM32L052

Тактовая 32МГц

FLASH_ACR_LATENCY /*!< FLASH One Latency cycle */

Буфер включен CLEAR_BIT(FLASH->ACR, FLASH_ACR_DISAB_BUF);

Предварительное чтение включено SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN);


Код - ногодрыг SPI.

Выходы на порту В

Входы на порту А

Инициализирую через выводы через LL

В зависимости от настроек портов меняется время выполнения кода!!!!! где-то в 1,5 раза

Причем абсолютно не логично!

например, сделал инициализацию каждого входа (порт А ) отдельно, два раза включаю тактирование на порт, время падает, включаю тактирование один раз время увеличивается.

ставлю настройку выхода (порт В) LL_GPIO_SPEED_FREQ_VERY_HIGH, время падает, ставлю LL_GPIO_SPEED_FREQ_HIGH, время растет!!!



Но самое интересное, что все объяснить этот эффект.

Ставлю перед функциями ногодрыга модификатор __ramfunc (поместить код в ОЗУ) эффект исчезает.

Понятно, что эффект связан с латентностью флэша. Но как настройки портов влияют на флэш????!!!!