HelloWorld для STM32F103 |
![]() |
Добавил(а) microsin |
В этой статье описывается быстрый старт с процессором 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. |