PROGCONT.RU

Форма входа







Регистрпция Вход/

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++){}
  }

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


Комментариев нет  Только зарегистрированные пользователи могут оставлять комментарии!