STM32F IAR создание проекта, настройка для использования SPL (Standard Peripheral Library), и загрузка в контроллер stm32f105rbt6 первой программы.
Надеюсь, что у вас есть хоть какой то опыт в познании контролеров, если нет то это не-гуд, тогда я бы вам порекомендовал обратить ваше внимание на STM8S. STM8S намного попроще, дешевле, поменьше геморроя с настройкой проекта хотя периферия почти как у STM32F.
Но если вас не переубедить тогда, как сказал Гагарин «Поехали!».
С чего начать?
Первым делом приобретите отладочную плату.Если у Вас нет опыта, в электротехнике то рекомендую приобрести stm32 discovery.
Почему discovery:
а. Программатор-отладчик;
б. Защита программатора, если спалите контролер (сам убеждался пару раз);
в. Доступна схема и описание;
г. Удобство;
Что отсутствует кроме программатор-отладчика, в типа таких программаторов как этот.
Где взять IAR Embedded Workbench ?
1. С официального сайта, платная;
2. С официального сайта-бесплатная (с ограничениями);
3. Или скачать с моей странички на сайте Boosty по ссылке ниже
Создание проекта и подключение SPL.
В директории для удобства, где установлен IAR создаем папку для проекта, название произвольное у меня project.

Распаковываем, ранее скаченный с stm.com архив en.stsw-stm32054.zip(STM32F10x_StdPeriph_Lib_V3.5.0), копируем в наш проект C:/Program Files/IAR Systems/project папку C:/Users/andrei/Downloads/en.stsw-stm32054/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver, с содержимом, файл Release_Notes.html можно удалить.


Создаем папку inc в C:/Program Files/IAR Systems/project, копируем из C:/Users/Andrei/Downloads/en.stsw-stm32054/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template 4 файла: stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h, system_stm32f10x.c.

Далее в тужу папку копируем из C:/Users/Andrei/Downloads/en.stsw-stm32054/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x 3 три файла: stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h. На предупреждение что файл с таким именем существует, выбираем ПЕРЕМЕСТИТЬ С ЗАМЕНОЙ. Ниже результат.

Внимание!!!
Если вы будете использовать в программе прерывания необходимо будет добавить в эту папку еще один файл который находится C:/ Users/ Andrei/ Downloads/ en.stsw-stm32054/ STM32F10x_StdPeriph_Lib_V3.5.0/ Libraries/ CMSIS/ CM3/ DeviceSupport/ ST/ STM32F10x/ startup/ iar
Выбираем в зависимости от линейки процессора.
startup_stm32f10x_cl.s - Connectivity Line
startup_stm32f10x_hd.s - high-density Access Line и Performance Line
startup_stm32f10x_hd_vl.s - high-density Value Line
startup_stm32f10x_ld.s - low-density Access Line и Performance Line
startup_stm32f10x_ld_vl.s - low-density Value Line
startup_stm32f10x_md.s - medium-density Access Line и Performance Line
startup_stm32f10x_md_vl.s - medium-density Value Line
startup_stm32f10x_xl.s - xl-density Access Line и Performance Line
Если не добавите этот файл тогда контроллер будет зависать после срабатывания вашего прерывания, смотрите как должно быть.

С файлами закончили, можно приступать к созданию проекта. Запускаем IAR заходим в Project->Greate New Project, появится это. Выбираем С->main, жмем ОК.

Следом предложит назвать и сохранить наш проект, у меня newProject, выбираем нашу папку project и сохраняем.
Осталось собрать проект, настраиваем IAR. Жмем правой кнопкой на newProject->Options->General Options ,Target в Divace ставим галочку и выбираем наш контролер в данном случае stm32f105rb.

Нажимаем Library Configuration ставим галочку Use CMSIS.

Жмем правой кнопкой на newProject->Options->Debugger, Setup в Driver выбираем ST-LINK.

Жмем правой кнопкой на newProject->Options->ST-LINK, Setup в SWD ставим галочку.

Продолжаем, жмем правой кнопкой на newProject-Debug->Options->General Options->C/C++ Kompiler ->Preprocessor жмем кнопку и прописываем пути к нашим рабочим папкам.
Прописать надо к:
C:/Program Files/IAR Systems/project;
C:/Program Files/IAR Systems/project/inc;
C:/Program Files/IAR Systems/project/STM32F10x_StdPeriph_Driver/inc;
C:/Program Files/IAR Systems/project/STM32F10x_StdPeriph_Driver/src;

Добавляем Group inc и spl. Жмем правой кнопкой на newProject->Add, выбираем Add Group, создаем inc и spl как на картинке. В inc добавляем все файлы из C:/Program Files/IAR Systems/progect/inc, в spl из C:/Program Files/IAR Systems/progect/STM32F10x_StdPeriph_Driver/src. Результат ниже.


Компилятору надо указать наш контролер(STM32F10X_CL) и что мы хотим использовать SPL(USE_STDPERIPH_DRIVER), эти данные находятся в файле C:/Program Files/IAR Systems/project/inc/ stm32f10x.h, рекомендую с ним ознакомится. Как обычно жмем правой кнопкой на newProject-Debug->Options->General Options->C/C++ Kompiler ->Preprocessor в Defined symbols вставляем STM32F10X_CL и USE_STDPERIPH_DRIVER и нажимаем ОК.

Пишем простую программу (конечно мигалку), нажимаем Download and Debug, компилятор просит назвать, сохранить файл для отладки, у меня также как проект newProject, сохраняем и получаем удовольствие!
#include "stm32f10x.h"
void Delay_ms(uint32_t ms);
int main()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef PIN_INIT;
PIN_INIT.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
PIN_INIT.GPIO_Speed = GPIO_Speed_10MHz;
PIN_INIT.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &PIN_INIT);
while(1){
GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_9);
Delay_ms(500000);
GPIO_ResetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_9);
Delay_ms(500000);
}
return 0;
}
void Delay_ms(uint32_t ms){
for(uint32_t i=0; i<ms; i++){}
}

Надеюсь, вам это поможет!!!