В данной статье речь пойдет о том, какие шаги необходимо выполнить для создания минимального и удобного проекта под микроконтроллер серии STM32  в среде разработки IAR. Этот пост скорее напоминалка для меня самого дабы не забыть мелких нюансов IDE в ответственный момент. Ведь в любой момент я смогу просто зайти на эту страницу и скачать готовый стартап проект. Ну а Вам, дорогие читатели, самим решать, чего полезного можно почерпнуть из этого поста! Ну что ж, приступим?

Естественно, в первую очередь необходимо скачать и установить программу IAR. Дальше необходимо скачать полезную библиотеку от производителя процессора, которая называется STM32F10x_StdPeriph_Lib_V3.5.0 (версия в Вашем случае может отличаться). После этого, запускаем установленную среду разработки. Создаем новый проект Project->Create New Project…
0.CreateNewProject
Выбираем пустой проект
1.CreateNewProject
Получаем
2.CreateNewProject
Создаем желаемые условные разделения внутри проекта (с помощью команд Add->Add Group…)
3.FilesDirectoriesHierarchy
Добавляем необходимые файлы
4.AddFile
В результате дерево проекта должно выглядеть следующим образом
5.FilesDirectoriesHierarchy
Переходим к настройке проекта. Выбираем процессор
6.MCU_Choosing
7.MCU_Choosing
Устанавливаем галочку в настройках для использования библиотеки CMSIS
8.LibraryConfiguration

Добавляем путя к библиотечным файлам, а также добавляем определения (Defines) в настройки препроцессора C/C++
9.C_CompilerPreprocessor
Кроме этого есть возможным получать на выходе будущей сборки проекта выходные файлы разного формата. Одним из возможных форматов является обычный двоичных файл. Для его генерации нужно зайти в настройки проекта и установить их следующим образом
9+1.OutputConvertor

Ради приличия считаю должным, упомянуть о самой программе, которую мы собираемся скомпилировать. Что она должна делать? Это своего рода «Hello World» в мире встроенных систем. Иными словами — будем мигать светодиодом. Рассмотрим исходный код главного файла:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_flash.h"
 
int main()
{
    GPIO_InitTypeDef GPIO_InitStructure;
 
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div2);
    RCC_PCLK1Config(RCC_HCLK_Div4);
 
    /* Select HSI as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
 
    /* Wait till HSI is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x00) {}
 
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    FLASH_SetLatency(FLASH_Latency_0);
 
    // Enable peripherals clocks
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
 
    /* LED configuration */
    /* Configure PD.05 as output push-pull */
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
 
    while(1)
    {
        GPIO_SetBits(GPIOD, GPIO_Pin_5);
        for(long i=0; i<200000; i++)
            ;
        GPIO_ResetBits(GPIOD, GPIO_Pin_5);
        for(long i=0; i<200000; i++)
            ;
    }
}

Что тут творится? В первую очередь настраиваем систему тактирования микропроцессора и выбираем внутренний источник тактирования (HSI, 8 MHz). Дальше подаём тактирование на порт GPIOD, который «висит» на шине APB2. После, настраиваем 5-ый пин порта GPIOD на выход (к этому пину подключаем светодиод). Ну а дальше видим бесконечный цикл в котором и происходит поочерёдное включение и выключение светодиода. Между включением и выключением также добавлены циклы. Они выполняют роль задержки, дабы человеческий глаз успевал замечать мигание светодиода.

Теперь проект должен без особых проблем собраться по нажатии клавиши F7. Нами была создана возможно первая прошивка для микропроцессора STM32F103. Поздравляю! На выходе получим желаемый двоичный файл. В одной из следующих статьей рассмотрим способ загрузки полученного бинарного файла, собственно в сам микропроцессор. Это сделать очень просто, если у Вас имеется в наличии переходник USB-UART.

Загрузка

Скачать исходный код проекта и файлы к статье