Программный

Для различных целей нам необходимо бывает перезапустить МК. Чтобы не было "костылей" по типу - линия порта к линии сброса, в нашем МК предусмотрен программный сброс.

Для начала создадим папку проекта:

nis@jane ~/stm32/f4examples/08-reset $ cp -a 01-hardware/ 02-software

nis@jane ~/stm32/f4examples/08-reset $ cd 02-software/

Алгоритм работы кода следующий: мы в обработчике внешнего прерывания на линии 0 (к которой подключена наша кнопка пользователя), вызываем программный сброс. В функции work(), помимо инициализации периферии мы обрабатывает данные от регистра статуса и контроля RCC_CSR.

Начнем с добавления обработчика в startup.c.

После добавим инициализацию используемой периферии и заодно новый выбор для типа сброса в work.c.

Соберем проект и загрузим в МК:

nis@jane ~/stm32/f4examples/08-reset $ make write

Видео: