Обычно начинают знакомство с МК с "мигалки" светодиодом. Поступим так же. В качестве подопытного МК у нас STM32F103C8T6, распаянный на такой плате
Среда программирования EmBitz и предполагается что у вас она установлена.
Необходимо создать новый проект для разрабатываемой программы. Кликаем по кнопке "Создать новый проект" в окне программы.
В появившемся окне выбираем тип проекта "STmicro-ARM" и кликаем по кнопке Go.
Дальше несколько раз кликаем по кнопке "Next" пока не попадаем в окно выбора имени проекта и места расположения на диске. Выбираем имя проекта (назовем его Blink) и папку куда сохраним его.
Заполнять нужно два верхних поля (имя и путь), а нижние поля среда сама заполнит.
Кликаем кнопку "Next" и попадаем в окно выбора компилятора и конфигураций.
Компилятор оставляем тот что есть. Среда нам предлагает создать две конфигурации, а так же выбрать папки для объектного файла и прошивки.
Далее нужно выбрать микроконтроллер. Это делается в несколько этапов. Сначала нужно выбрать ядро. У нашего МК оно Cortex_M3.
Потом нужно выбрать модельный ряд. Т. к. МК STM32F103C8T6 выбираем STM32F10x.
Затем выбираем в списке микроконтроллер STM32F103C8.
После этого кликаем по кнопке Finish и проект будет создан и открыт в IDE. Так же появятся пара окон конфигурации отладчика. Закрываем их кликая по кнопке OK.
В просмоторщике проекта (Management) есть ряд папок с файлами, в которых находится код содержащий функции библиотеки StdPeriph, а также код начальной инициализации.
Нужно кликнуть по файлу Main.c и он откроется в редакторе. Код из него.
#include "stm32f10x_conf.h" int main(void) { while(1) { } }
Это функция main с которой программа начинает работать и цикл while. Если скомпилировать этот код ничего не изменяя в нем, то с максимальной оптимизацией размера, получим прошивку весящую 1048 байт. Кажется много, но не стоит забывать что модули STM32 более сложные и необходимо больше кода для их настройки, а так же что МК 32 битный, а значит адресация 4-ех байтная. Все это требует больше памяти чем в 8-ми битных МК...
Теперь добавим код мигающий светодиодом находящийся на плате (подключен к GPIOC.13). Для этого добавим перед циклом код настройки порта GPIOC.13.
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);
О том как это работает можно прочитать в статье http://easyelectronics.ru/rabota-s-stm3 … brary.html
Когда порт настроен, можно светодиодом помигать.
while(1) { GPIO_SetBits(GPIOC, GPIO_Pin_13); Delay(2000000); GPIO_ResetBits(GPIOC, GPIO_Pin_13); Delay(2000000); }
Думаю этот участок понятен без объяснений.
Теперь программу можно скомпилировать, прошить МК и наблюдать как светодиод находящийся на плате мигает несколько раз в секунду.
Проект. http://pure-basic.narod.ru/forum_files/stm32/Blink.zip