STM32入门教程

本笔记是记录b站江协科技的STM32入门教程的学习过程遇到的问题以及解决方法

文章目录

1、STM32介绍

ARM既是ARM公司,也是ARM处理器内核

ARM公司设计ARM内核,半导体厂商完善内核及其周边电路并生产芯片

ARM有三个系列:A系列(手机芯片)、R系列、M系列(苹果电脑芯片)

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。其中,ST 是公司名称,M是微控制器Microcont的首字母。

STM32拥有四个系列:高性能系列(High performance)、主流系列(Mainstream)、超低功耗系列(Ultra-low-power)、无线系列(Wireless)。

下表是STM32外设英文缩写:

英文缩写 名称 英文缩写 名称
NVIC 嵌套向量中断器 CAN CAN通信
SysTick 系统滴答定时器 USB USB通信
RCC 复位和时钟控制 RTC 实时时钟
GPIO 通用IO口 CRC CRC校验
AFIO 复用IO口 PWR 电源控制
EXTI 外部中断 BKP 备份寄存器
TIM 定时器 IWDG 独立看门狗
ADC 模数转换器 WWDG 窗口看门狗
DMA 直接内存访问 DAC 数模转换器
USART 同步/异步串口通信 SDIO SD卡接口
I2C I2C通信 FSMC 可变静态存储控制器
SPI SPI通信 USB OTG USB主机接口

STM32命名规则:

产品系列 类型 子类型 引脚数目 闪存存储器容量 封装 温度范围
STM32 F 103 C 8 T 6
基于ARM核心的32位微控制器 F=通用类型 101=基本型 102=USB基本型,USB 2.0全速设备 103=增强型 105或107=互联型 T=36 C=48 R=64 V=100 Z=144 4=16K 6=32K 8=64K B=128K C=256K D=384K E=512K H=BGA T=LQFP U=VFQFPN Y=WLCSP64 6=-40℃~85℃ 7=-40℃~105℃

2、软件准备

下载keil5 MDK

下载keil5 软件并激活

串口驱动STM32 STlink安装

usb转串口驱动

3、新建工程

1、首先建立一个文件夹STM(自定义取名,可取项目名称,最好是英文)

2、打开 keil 软件,顶头位置 找到 Project ,点开后选择第一个New μVision Project

3、双击选择刚刚建立的文件夹,并在弹出的 窗口下方 文件名 填上工程名称

4、选择芯片型号STM32F103C8 系列(使用的是STM32F103C8T6

5、在文件夹内创建Start (用来移植启动文件)、Library(用来存放库函数文件)

6、移植启动文件

启动文件的路径1:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

路径2:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

其中:stm32f10x.h是外设寄存器描述文件、system_stm32f10x.c/h是时钟配置文件

路径3:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

注意:core_cm3.h/c 是内核寄存器描述

7、单击文件名称,稍等一会,然后修改为Start

8、将刚刚复制的内容添加Start文件夹中

注意:选择的文件有这些"core_cm3.c" "core_cm3.h" "startup_stm32f10x_md.s" "stm32f10x.h" "system_stm32f10x.c" "system_stm32f10x.h"

启动文件选择md的原因如下图:后续要根据自己的型号选择

小钥匙表示该文件是只读文件,无法修改

9.添加启动文件的头文件路径,先点击"魔法棒"

选择C/C++

点击这个Include Paths后面的三个点

继续点击虚线方形标志(添加)

点击三个点,添加路径

选择Start文件,然后点确定,Ok

最后应该是这个样子

10、创建用户文件夹,并添加到工程文件夹中

11、在User文件下,创建main函数

注意修改文件路径

12、写一个while循环来测试是否成功创建

鼠标右键可以直接插入头文件

代码:

复制代码
#include "stm32f10x.h"                  // Device header

int main(void)
{
	whlie(1)
	{
	}
}

点击运行:

当出现0 Error0 Warning时,表示成功建立!

13、创建外设标准库文件夹

在自己的项目工程里创建一个名为Library 的文件夹,并在工程中创建Library

14、添加外设库函数文件和

按照图片中的路径,分别找到对应的子文件夹

路径1:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

路径2:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc

将两个文件夹内所有的文件移植到到刚刚创建的Library文件夹中

其中misc.c是内核的库文件

13、给User继续移植库函数

进入路径STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中,并找到这三个文件,将文件移植到自己工程的User文件夹下

conf.h是用来配置库函数头文件的包含关系的

两个it文件是用来存放中断函数的

15、在工程中添加库函数文件

首先添加Library的库函数文件,如图所示添加即可

然后继续添加User的库函数

16、让库函数跑起来

点开魔术棒 ,在C/C++栏目中的Define 添加这一句USE_STDPERIPH_DRIVER(添加后才能正常使用库函数)

同时,在C/C++栏下的Include Paths添加文件路径

最后点击ok就行

点击运行,当出现**0 Error(s), 0 Warning(s)**时,证明移植成功

  • 下面讲解如何查找USE_STDPERIPH_DRIVER

    • USE使用、下划线、STD标准、PERIPH外设、下划线、DRIVER驱动

    在main主函数中,右键点击头文件

    鼠标翻转到图片位置,有一个定义,就是那串函数的位置了


一些有用的设置

注意:记得查看魔法棒 中,Target 栏下ARM Compiler选择版本5

配置中文语言显示:

  • 点击扳手工具
  • Encoding 中选择UTF-8 ,这样可以防止中文出现乱码问题(倘若使用别的代码时,中文乱码,就需要在这里调整为GB2312

配置调试器:

  • 在魔法棒中,选择Debug ,在Use选择ST-Link Debugger(我们主要是使用ST-Link烧录)

​ - 同时,点击后面的Settings ,在Flash Download 中勾选Reset and Run(这样方便我们下载程序完毕后,自动运行)

4、连线准备

ST-Link与STM32F103C8T6接线如下表

ST-Link STM32F103C8T6
SWDIO DIO
GND GND
SWCLK DCLK
3.3V 3.3

感谢耐心看完!

相关推荐
tangchao340勤奋的老年?7 小时前
AMT630C 开阳电子 RISC‑V 显示 SoC|工业级双屏驱动 MCU,带 CAN 总线,国产 HMI 控制芯片
单片机·嵌入式硬件
youshi66688 小时前
stm32-SPI通信协议、软件SPI
stm32·单片机·嵌入式硬件
振南的单片机世界8 小时前
EXTI“一线多挂”陷阱:PA0和PB0同时触发,中断函数懵了
arm开发·stm32·单片机·嵌入式硬件
coward918 小时前
全志T507 (sun50iw9p1)sunxi pinctrl 子系统实现分析
linux·嵌入式硬件
ACP广源盛139246256738 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 大模型私有化部署中 MST 多屏转换芯片 GSV2231 硬件价值与应用场景
大数据·数据库·人工智能·嵌入式硬件
oshan20129 小时前
零基础STM32入门教程--04-工程文件分析
stm32·单片机·嵌入式硬件
lhbweilai9 小时前
FreeRTOS(事件组)
stm32·单片机·嵌入式硬件
szarron10 小时前
VNA6 便携式矢量网络分析仪:从入门到精通
数据库·嵌入式硬件·测试工具·5g·射频工程
恒锐丰科技韩生10 小时前
率能 SS8812T|8.2‑36V 双通道 H 桥电机驱动 ETSSOP28 带散热焊盘 打印机安防机器人专用
嵌入式硬件·硬件工程
210Brian10 小时前
STM32学习笔记(七)TIM定时中断(上)
笔记·stm32·学习