В этой статье описывается быстрый старт с процессором STM32F103RBT6 и IAR Embedded Workbench for ARM 5.50.
Использовалась недорогая отладочная плата, купленная на AliExpress [1] (подобную плату можно также купить в других Интернет-магазинах, например dx.com [2]). Для загрузки кода и отладки использовался JTAG-отладчик G-Link [3].
1. Подключите светодиод через резистор 100 Ом к ножке порта PC0:
Примечание: вместо шагов 2 .. 7 можете просто скачать проект целиком по ссылке [4] и открыть его в среде IAR. После этого сразу переходите к шагу 8.
2. Запустите IAR, создайте новый проект на языке C. В тело модуля main скопируйте следующий код:
#include < ctype.h>
#include < stdlib.h>
#include < limits.h>
#include < intrinsics.h>
#include < assert.h>
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "system_stm32f10x.h"
#include "stm32f10x_conf.h"
#define LED_ON() GPIO_WriteBit(GPIOC,GPIO_Pin_0,Bit_SET)
#define LED_OFF() GPIO_WriteBit(GPIOC,GPIO_Pin_0,Bit_RESET)
#define LED_TOGGGLE() GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_0)?LED_OFF():LED_ON()
void main (void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// Настройка подсистемы STM32 (конфигурация тактов, PLL и Flash):
SystemInit();
// Инициализация вывода светодиода LED:
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while(1)
{
LED_TOGGGLE();
volatile int i;
for(i=0; i < 0x10000; i++);
}
}
3. Скопируйте в папку проекта каталог library, который находится в папке arm\examples\ST\STM32F10x\OLIMEX-STM32F103-STK\ каталога установки IAR 5.50. Добавьте в проект модули stm32f10x_gpio.c, stm32f10x_it.c, stm32f10x_rcc.c, system_stm32f10x.c.
4. В свойствах проекта выберите модель процессора ST STM32F10xxB (General Options -> Device).
5. Добавьте пути поиска подключаемых файлов (свойства проекта -> C/C++ Compiler -> Preprocessor):
$PROJ_DIR$\
$PROJ_DIR$\library\CMSIS\Core\CM3\
$PROJ_DIR$\library\STM32F10x_StdPeriph_Driver\inc\
6. Откройте файл модуля system_stm32f10x.c, закомментируйте в нем #define SYSCLK_FREQ_72MHz, и в этом же месте добавьте строку (здесь задается тактовая частота внешнего кварцевого резонатора):
#define SYSCLK_FREQ_HSE 8000000
7. Выберите отладчик J-Link (свойства проекта -> Debigger -> Setup -> Driver: J-Link / J-Trace).
8. Скомпилируйте проект (F7) и запустите его на выполнение/отладку (Ctrl+D). Светодиод, подключенный к порту PC0, начнет мигать.
[Ссылки]
1. ARM Cortex-M3 STM32F103R8T6 STM32 Development Board site:chinalctech.com. 2. ARM Cortex-M3 STM32F103R8T6 Development Board - Red site:dx.com. 3. High Speed J-Link JLink V8 USB ARM JTAG Emulator Debugger J-Link V8 Emulator site:aliexpress.com. 4. 190217HelloWorldSTM32.zip - исходный код (проект для IAR Embedded Workbench 5.50). |