引言

单片机(Microcontroller Unit, MCU)是一种将中央处理器、存储器、输入输出接口等集成在一块芯片上的微型计算机系统。本教程旨在介绍如何使用一种常见的单片机——STM32F103系列(也被称为“蓝 pill”),并提供一些基本的编程实例。

环境搭建

必要工具与软件

– STM32CubeIDE

– ST-Link V2 编程器或 USB 转串口线

– STM32 Discovery板或类似开发板

安装STM32CubeIDE

1. 访问[STM32CubeIDE官网](https://www.st.com/en/development-tools/stm32cubeide.html)下载最新版本。

2. 按照安装向导提示完成安装。

3. 启动STM32CubeIDE,创建一个新的STM32项目。

配置ST-Link V2

1. 将ST-Link V2连接到电脑USB端口。

2. 在STM32CubeIDE中设置调试器为ST-Link V2。

3. 连接开发板上的SWD接口至ST-Link V2。

第一个程序:LED闪烁

创建项目

1. 打开STM32CubeIDE,选择`File` > `New` > `STM32 Project`。

2. 选择MCU型号,例如STM32F103C8T6。

3. 选择HAL库初始化,并生成代码。

编写代码

```c

#include "stm32f1xx_hal.h"

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

while (1)

{

HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);

HAL_Delay(500);

}

}

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/ 初始化主时钟

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

/ 初始化CPU, AHB和APB总线时钟

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

{

Error_Handler();

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOD_CLK_ENABLE();

/Configure GPIO pin Output Level

*/

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);

/Configure GPIO pin : PD12

*/

GPIO_InitStruct.Pin = GPIO_PIN_12;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

}

```

编译与下载

1. 在STM32CubeIDE中点击编译按钮。

2. 使用ST-Link V2进行固件下载。

3. 观察开发板上对应的LED是否按预期闪烁。

作者:寂然如故

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机STM32F103入门

发表回复