Осваиваем STM32 снизу
В данной статье мы попробуем поработать с процессором STM32 с помощью GNU утилит, немного познакомимся с ассемблером и отладкой.
Примеры написаны для популярной платы blue pill, построенной на микроконтроллере STM32F103C8T6.
Примерный план:
-
Подключить плату к компьютеру и убедиться, что там что-то происходит. Использовать будем st-util и gdb.
-
Написать простейшую программу на ассемблере, которая в цикле прибавляет регистр, скомпилировать из неё прошивку, залить на плату и пронаблюдать её работу. Использовать будем binutils и st-flash.
-
Помигать диодом (на ассемблере же).
-
Написать простейшую программу на C, которая в цикле прибавляет значение глобальной переменной. Скомпилировать из неё прошивку, залить на плату и понаблюдать её работу с помощью с помощью gdb.
-
Помигать диодом на С (дальше всё на С).
-
Переписать мигание с использованием таймера, чтобы внести свой вклад в борьбу с глобальным потеплением.
-
Сказать внешнему миру "Hello world" через UART.
-
Переписать "Hello world" с помощью CMSIS, уже с пониманием того, что там происходит.
В процессе будет использовано достаточно много инструментов вроде make, ld, gdb, as, gcc и тд, по каждому из них можно книги писать (и пишут). Поэтому, конечно, углубляться в них мы не будем, а напротив, эти инструменты будут использоваться в максимально примитивном виде.
Ниже ссылки на документацию, где можно подробней разобраться с любыми нюансами.
- STM32F103x8 Datasheet. Это спецификации микроконтроллера, тут можно посмотреть варианты корпусов, выходы, электрические характеристики.
- STM32F103xx Reference Manual. Тут вся справочная информация по всем битам и байтам данного микроконтроллера.
- STM32F10xxx Programming Manual. Тут справочная информация по ARM: все инструкции, описание работы процессора.
- GNU debugger GDB. Это отладчик.
- GNU make. Это утилита для сборки проектов.
- GNU linker ld. Это компоновщик (линкер).
- GNU assembler as. Это ассемблер.