单片机基础教程:使用STM32F103C8T6开发板
单片机基础教程:使用STM32F103C8T6开发板
目录
1. [单片机简介](#introduction-to-mcus)
2. [硬件准备](#hardware-preparation)
3. [软件安装](#software-installation)
4. [环境配置](#environment-setup)
5. [编写第一个程序](#writing-your-first-program)
6. [常见问题](#common-issues)
7. [总结](#summary)
1. 单片机简介
单片机(Microcontroller Unit, MCU)是一种将中央处理单元(CPU)、存储器、输入输出接口等集成在一块芯片上的微型计算机。广泛应用于消费电子、工业控制等领域。
2. 硬件准备
– STM32F103C8T6 开发板
– USB 数据线
– LED 灯(可选)
– 面包板及连接线(可选)
3. 软件安装
3.1 安装 Keil MDK
Keil MDK 是一款强大的集成开发环境(IDE),支持多种微控制器。
1. 下载 Keil MDK 安装包。
2. 按照提示完成安装过程。
3. 注册或试用 Keil MDK。
3.2 驱动安装
确保你的开发板能被电脑识别。
1. 连接开发板到电脑。
2. 在设备管理器中找到 STM32 设备并安装驱动。
4. 环境配置
4.1 创建项目
打开 Keil MDK,创建一个新的 STM32 项目。
1. `File` > `New uVision Project`
2. 选择 `ST` > `STM32F10x` 系列
3. 输入项目名称和位置
4. 选择 `Flash` 大小为 64 Kbytes (STM32F103C8T6)
4.2 添加启动文件
下载并添加启动文件 `startup_stm32f10x_hd.s` 到项目中。
1. 在 `Target` 视图下,右键点击 `Source Group 1` > `Add Files to 'Source Group 1'`
2. 导航到启动文件的位置并选择它
4.3 配置时钟树
在 `SystemCoreClock.h` 文件中设置系统时钟频率。
```c
#define SystemCoreClock 72000000
```
5. 编写第一个程序
5.1 初始化GPIO
编写代码来初始化 GPIO,并使能时钟。
```c
void GPIO_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
// 使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// 设置模式为输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
```
5.2 控制LED灯
编写一个简单的程序来控制开发板上的LED灯。
```c
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 初始化GPIO
GPIO_Init(GPIOA, GPIO_Pin_9);
while (1)
{
// 点亮LED
GPIO_SetBits(GPIOA, GPIO_Pin_9);
delay(500); // 延时500ms
// 关闭LED
GPIO_ResetBits(GPIOA, GPIO_Pin_9);
delay(500); // 延时500ms
}
}
```
5.3 延时函数
实现延时功能的函数。
```c
void delay(uint32_t delay)
{
uint32_t tickstart = HAL_GetTick();
uint32_t wait = delay;
if (wait < HAL_MAX_DELAY)
{
while(HAL_GetTick() – tickstart < wait);
}
}
```
6. 常见问题
6.1 编译错误
确保所有头文件都已正确包含,并且没有语法错误。
6.2 程序不运行
检查硬件连接是否正确,以及是否正确烧录了程序。
作者:寂然如故