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