Программирование ARM HelloWorld для STM32F103 Thu, November 21 2019  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

HelloWorld для STM32F103 Печать
Добавил(а) microsin   

В этой статье описывается быстрый старт с процессором STM32F103RBT6 и IAR Embedded Workbench for ARM 5.50.

Использовалась недорогая отладочная плата, купленная на AliExpress [1] (подобную плату можно также купить в других Интернет-магазинах, например dx.com [2]). Для загрузки кода и отладки использовался JTAG-отладчик G-Link [3].

1. Подключите светодиод через резистор 100 Ом к ножке порта PC0:

M3STM32F103R8T6STM32 board with LED 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).

 

Добавить комментарий


Защитный код
Обновить

Top of Page