STM32F IAR создание проекта, настройка для использования SPL (Standard Peripheral Library), и загрузка в контроллер stm32f105rbt6 первой программы.
Надеюсь, что у вас есть хоть какой то опыт в познании контролеров, если нет то это не-гуд, тогда я бы вам порекомендовал обратить ваше внимание на STM8S. STM8S намного попроще, дешевле, поменьше геморроя с настройкой проекта хотя периферия почти как у STM32F.
Но если вас не переубедить тогда, как сказал Гагарин «Поехали!».
С чего начать?
Первым делом приобретите отладочную плату.Если у Вас нет опыта, в электротехнике то рекомендую приобрести stm32 discovery.
Почему discovery:
а. Программатор-отладчик;
б. Защита программатора, если спалите контролер (сам убеждался пару раз);
в. Доступна схема и описание;
г. Удобство;
Что отсутствует кроме программатор-отладчика, в типа таких программаторов как этот.
Где взять IAR Embedded Workbench ?
1. С официального сайта, платная;
2. С официального сайта-бесплатная (с ограничениями);
3. В помощь сайты созвучные с богом Грома;
Если вы приобрели программатор-отладчик, добыли и установили IAR(Внимание EWARM 6.2x и выше!) и скачали с сайта stm.com SPL (STM32F10x_StdPeriph_Lib_V3.5.0) тогда не будем, как говорится мять сиськи!
Создание проекта и подключение SPL.
Ссылка на видео в YouTube В директории для удобства, где установлен 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++){}
}
Надеюсь, вам это поможет!!!