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

感谢耐心看完!

相关推荐
高工智能汽车2 小时前
车规MCU,开启“巨变”
单片机·嵌入式硬件
TEL136997627502 小时前
PTCB818A说明书 配套PL27A1芯片MCU参数说明
网络·单片机·嵌入式硬件
硬汉嵌入式3 小时前
【无标题】
stm32·wifi·英飞凌·sdio·赛普拉斯·cyw43·cyw55
客家元器件3 小时前
LPDDR5选型参数
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘3 小时前
实际项目开发单片机—Flash错误
单片机
一个平凡而乐于分享的小比特3 小时前
单片机内部时钟 vs 外部时钟详解
单片机·嵌入式硬件·内部时钟·外部时钟
xyx-3v4 小时前
RK3506G移植APM飞控的可行性
单片机·学习
才鲸嵌入式4 小时前
香山CPU(国产开源)的 SoC SDK底层程序编写,以及其它开源SoC芯片介绍
c语言·单片机·嵌入式·arm·cpu·verilog·fpga
d111111111d4 小时前
编码器测速详情解释:PID闭环控制
笔记·stm32·单片机·嵌入式硬件·学习·算法