Не могу на STM32L151C8T6 установить частоту тактирования хотя бы 24МГц, если устанавливаю то получаю в отладчике ошибку "Cannot access memory" и все выполнение программы останавливается, более низкие частоты устанавливаются без проблем. Вот моя схема тактирования: Внешний кварцевый резонатор 8МГц Abracon, ставил такие на F серию и никогда никаких проблем не было с ними.
Проверил сейчас от внутреннего источника тактирования заводить и все без проблем работает, похоже таки проблема в моем кварце.
Нашел причину своей проблемы с тактированием как я думал. По умолчанию FLASH память контроллера работает на частотах не выше 16МГц, поэтому прежде чем повышать частоту работы процессора, необходимо переконфигурировать FLASH. PHP: FLASH->ACR |= FLASH_ACR_LATENCY;FLASH->ACR |= FLASH_ACR_PRFTEN; Включаем упреждающее чтение и увеличиваем количество циклов ожидания для более высокой частоты работы устройства. Кстати, точно также работает и F4 серия микроконтроллеров STM32. Вот таблица FLASH LATENCY для различных частот и напряжений питания: Вот пример инициализации тактирования для F4: PHP: if (RCC_SYSCLKSOURCE_PLLCLK) { // Если используется PLL как источник SYSCLK RCC->CR |= RCC_CR_PLLON; // Включить PLL while (!(RCC->CR & RCC_CR_PLLRDY)) {} // Ждем пока PLL генератор не станет стабилен // Увеличиваем количество циклов ожидания для более высокой частоты процессора FLASH->ACR |= FLASH_ACR_LATENCY; FLASH->ACR |= FLASH_ACR_PRFTEN; // Переключиться на PLL в качестве источника SYSCLK RCC->CFGR &= ~RCC_CFGR_SW; // Очистка битов выбора источника тактового сигнала SYSCLK RCC->CFGR |= RCC_CFGR_SW_PLL; // Выбираем PLL источником системной тактовой частоты while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) {} // Ожидаем, пока PLL выберется как источник системной частоты }