Keil uVision5 – IDE для STM32


19.12.2016

Keil - Keil uVision5

Установка и настройка Keil. Создание первого проекта. Официальный сайт: http://www.keil.com/ Платная среда разработки для микроконтроллеров STM32. В бесплатном варианте имеет ограничение по объему программы до 32Кб. Скачать можно с официального сайта.

Установка и настройка Keil

Скачиваем Keil с официального сайта и устанавливаем. При установке Keil, должны установиться драйвера для St-Link программатора. Я устанавливал версию Keil 5.13, поскольку на мою старенькую Windows XP версия Keil 5.22 устанавливаться не захотела.

PackInstaller

После установки запускаем Keil и кнопкой на тулбаре открываем PackInstaller Справа в закладке Devices находим наш контроллер. В моем случае это STM32F103C8, после чего в закладке Packs слева по очереди инсталлируем все пакеты. Почему в PackInstaller все делается справа налево я так и не понял. Оставим это на совести разработчиков. После того, как установим все пакеты, закрываем PackInstaller и создаем проект с помощью меню Project -> New mVision Project... Выбираем папку и указываем имя проекта. После чего будет предложено выбрать микроконтроллер. Далее появится окно, в котором нужно отметить компоненты, которые мы будем использовать в проекте. Отмечаем обязательно:
  • CMSIS-CORE - поддержка основного ядра ARM
  • System Startup - основной конфигурационный системный файл
  • Standard Peripherals Drivers Framework - стандартные драйверы периферии
И те компоненты, которые будут использоваться в проекте:
  • GPIO - управление выводами микроконтроллера
  • RCC - управление тактированием периферии
После того, как расставили галочки нажимаете в левом нижнем углу кнопку "Resolve" и только потом "ОК". Окно должно закрыться. Теперь создаем основной файл, в котором будет наша первая программа. Правой кнопкой мыши кликаем на Sourcegroup 1, далее Add New Irem to Group Source Group 1... Указываем тип и имя файла. После чего будет создан и открыт файл main.c.. Наберем в нем следующий текст программы:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
int main(void)
{
  int i;
  /* Initialize Leds mounted on STM32 board */
  GPIO_InitTypeDef  GPIO_InitStructure;
  /* Initialize LED which connected to PC13, Enable the Clock*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  /* Configure the GPIO_LED pin */
  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);
  while (1)
  {
    /* Toggle LED which connected to PC13*/
    GPIOC->ODR ^= GPIO_Pin_13;
    /* delay */
    for(i=0;i<0x100000;i++);
  }
}
Перед тем как компилировать программу нужно сделать некоторые настройки нашего проекта. Кликаем на иконке Options for Target... Откроется окно настроек проекта. В закладке "Target" нужно указать тактовую частоту микроконтроллера. В закладке "Output" нужно выбрать формат выходного файла. В закладке "C/C++" указать в строке Define: следующие опции: USE_STDPERIPH_DRIVER,STM32F10X_CL Без этих опций проект не будет нормально компилироваться. Можно выбрать уровень оптимизации. Теперь можно закрыть окно настроек и попробовать собрать проект, выполнив пункт меню Project -> Build target. После удачной сборки должны увидеть такую картину: Успехов.
Также следует обратить внимание на IDE для STM32 System Workbench for STM32 Лично я перешел на System Workbench for STM32

Смотри также:

Коментарі:
Леонид говорить:
30.12.2016 20:21
Добрый день!

При компилировании проекта выдает кучу ошибок:

*** Using Compiler `V5.06 update 4 (build 422)`, folder: `C:\\Keil_v5\\ARM\\ARMCC\\Bin`
Build target `Target 1`
compiling stm32f10x_gpio.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\StdPeriph_Driver\\src\\stm32f10x_gpio.c: 1 warning, 1 error
compiling GPIO_STM32F10x.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\RTE_Driver\\GPIO_STM32F10x.c: 1 warning, 1 error
compiling main.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
main.c: 2 warnings, 1 error
#1-D: last line of file ends without a newline
}
compiling misc.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\StdPeriph_Driver\\src\\misc.c: 1 warning, 1 error
compiling stm32f10x_rcc.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\StdPeriph_Driver\\src\\stm32f10x_rcc.c: 1 warning, 1 error
assembling startup_stm32f10x_md.s...
compiling system_stm32f10x.c...
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(433): error: #67: expected a "}"
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
C:\\Keil_v5\\ARM\\PACK\\Keil\\STM32F1xx_DFP\\2.1.0\\Device\\Include\\stm32f10x.h(477): warning: #12-D: parsing restarts here after previous syntax error
} IRQn_Type;
RTE\\Device\\STM32F103C8\\system_stm32f10x.c: 1 warning, 1 error
".\\Objects\\test.axf" - 6 Error(s), 6 Warning(s).
Target not created.
Build Time Elapsed: 00:00:01

Додати коментар

* - обов'язкові поля

Архіви