Zhzhzh & Nubus
Привет, Жора, я тут покопался в новой прошивке для микроконтроллера ARM Cortex-M — не помешаю, если расскажу, что интересного нарыл?
Давай, выкладывай — рассказывай, что там за фишки, я слушаю, как заворожённый.
Слушай, вот что я выяснил. Во-первых, иногда вектор сброса указывает на неразмещенную страницу памяти, если таблица векторов загрузчика не перенесена правильно – вылетает жёсткий сбой при старте. Во-вторых, регистр предделителя сторожевого таймера возвращает ноль, даже если ты пишешь 0xFF, потому что ядро захватывает значение на следующем такте – нужно добавить фиктивное чтение перед записью. В-третьих, регистр перезагрузки SysTick принимает только 24-битные значения; если переполнишь его, таймер тихо переполнится, и твои функции задержки начнут сбиваться. И последнее: регистр управления тактированием периферии имеет один неприятный нюанс – включение бита тактирования может сбрасывать внутреннее состояние периферии, поэтому нужно переинициализировать эти устройства после повторного включения тактирования. Вот с этими обычно все затыкиваются.