STM32F103 单片机
引言
单片机是一种集成微处理器、存储器和输入/输出接口于一体的集成电路芯片。它广泛应用于嵌入式系统中,从家用电器到工业自动化设备。本教程将介绍使用 STM32F103 系列单片机进行基本开发的过程。
硬件准备
- STM32F103 Discovery Board
- USB线
- 计算机
- ST-Link V2 编程器(可选)
软件准备
- STM32CubeIDE
- Keil uVision 或其他支持ARM的IDE(可选)
- ST-Link Utility (用于编程器)
开发环境搭建
1. 安装STM32CubeIDE
2. 打开STM32CubeIDE,选择`File -> New STM32 Project`
创建项目
1. 选择你的STM32型号 `STM32F103C8T6`
2. 添加必要的HAL库文件
3. 配置时钟树
4. 设置GPIO和其他外设
撰写第一个程序 - 闪烁LED灯
步骤 1: 初始化GPIO
```c
// 初始化GPIO端口为输出模式
void GPIO_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint16_t GPIO_Mode, uint16_t GPIO_Speed, uint16_t GPIO_OType, uint16_t GPIO_PuPd) {
/* ... GPIO初始化代码... */
}
// 初始化LED
void LED_Init(void) {
GPIO_Init(GPIOA, LED_PIN, GPIO_MODE_OUT, GPIO_SPEED_FREQ_LOW, GPIO_OTYPE_PP, GPIO_NOPULL);
}
```
步骤 2: 控制LED闪烁
```c
// 使能外设时钟
void EnablePeriphClock(void) {
/* 使能GPIOA时钟 */
__HAL_RCC_GPIOA_CLK_ENABLE();
}
// 闪烁LED函数
void ToggleLED(void) {
static uint32_t toggle = 0;
HAL_GPIO_TogglePin(GPIOA, LED_PIN);
toggle = !toggle;
}
```
步骤 3: 主循环
```c
int main(void) {
/* 外设时钟使能 */
EnablePeriphClock();
/* 初始化LED */
LED_Init();
while (1) {
/* 闪烁LED */
ToggleLED();
/* 延时 */
HAL_Delay(500);
}
}
```
项目编译与下载
1. 在STM32CubeIDE中点击`Build`按钮编译项目。
2. 使用ST-Link将程序下载到开发板。