Захотелось мне побаловаться с самым дешевым контроллером от STM (Value-line). Сделал простейшую плату с гребенкой выводов, предусмотрел на ней регулятор напряжения, блокировочные конденсаторы, кварц с обвязкой и светодиод с резистором.
Припаял МК со светодиодом и решил проверить в работе, сгенерировал типовой проект в STM32Cube и добавил в while-цикл типичные две команды:
Код:
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);
Кварц пока подключать не стал, оставил в проекте настройку тактирования от внутренней RC-цепочки МК HSI (как это в есть в проекте по-умолчанию).
Подключил к St-link и стал ждать мигания. Светодиод загорелся, а мигать почему-то не стал. Полез с отладчиком и обнаружил, что в HAL_Delay МК уходит в бесконечный цикл. Google подсказал, что не приходит прерывание по SysTick, поэтому внутренний счетчик не увеличивается и контроллер не знает, что время идет.
Подпаял кварц с обвязкой, подключил в Cube и тактирование от HSE и не меняя эти две строчки перекомпилировал проект. Светодиод замигал.
Облазил кучу статей и не понимаю, почему в данном случае от HSE системный таймер сам собой работает, а в случае HSI - не хочет.
На контроллерах STM32F100C4T6 все работало без внешнего генератора (подключал вообще без обвязки)