Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【STM32】STM32单片机入门

【STM32】STM32单片机入门

作者头像
s-little-monster
发布于 2024-08-09 05:13:03
发布于 2024-08-09 05:13:03
4900
举报

这是一个新的系列,stm32单片机系列,资料都是从网上找的,主要参考江协科技还有正点原子以及csdn博客等资料,以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习,希望能对也没有学过51直接学32的同学们有一定的作用和帮助 文章内容有很多是自己的理解,希望各位嵌入式大佬们可以看一下文章然后帮忙指正一下错误,感谢!

正片开始

一、准备条件

直接在B站上搜索stm32江协科技,在那里下载安装包,按照2-1和2-2的步骤下载好安装好需要的配件:Keil5MDK以及F1单片机资源,新建好一个工程

啰嗦的我就不再叙述了,这款芯片使用的是STM32F1 内核为ARM Cortex-M3 主频为72MHz 随机存取存储器RAM大小为20K,实际存储介质为SRAM 只读存储器ROM大小为64K,实际存储介质为Flash 标准3.3V供电

SRAM和Flash的位置:

这张图下面再分解

二、外设

在江协科技的PPT中,up为我们整理了整个芯片所有的外设,但有些外设用的比较少,有句话叫做20%的外设可以应用到80%的场景下,所以作为入门博客,我会把常用的外设罗列清楚,不太用的就不再介绍了

每个单片机都要用到的一个外设就是RCC,它负责控制系统时钟和复位相关功能,只要MCU想要驱动程序,必须由RCC来设置初始化时钟,因为静息状态下硬件为了节省功耗是不工作的

除了RCC以外,最常用的就是以下八个外设:

1、GPIO通用输入输出口

单片机芯片引脚大多数都是GPIO口,用来输入和输出,根据引脚的数量分为GPIOA、GPIOB、GPIOC等,GPIOA又分为GPIOA0到GPIOA15,简写问PA0到PA15,16个引脚

GPIO有四种输入模式四种输出模式 输入模式:浮空输入、上拉输入、下拉输入、模拟输入 输出模式:开漏输出、推挽输出、复用开漏输出、复用推挽输出

其中输出模式全部为数字输出,输入模式仅模拟输入为模拟输入,其他都为数字输入

引脚定义图:

可以看到大多数的引脚都为GPIO通用输入输出口

2、调试工具

这一章主要讲怎么调试,有三种调试方式: (1)串口调试,通过串口通信,电脑使用串口助手显示调试信息 (2)显示屏调试,也就是使用OLED屏调试 (3)Keil调试,也就是使用开发软件进行调试

这里我在学习的过程中不知道串口是什么,在网上搜了一下得出的答案是:多用途的接口,它允许计算机和外部设备之间的数据传输

这里我们更加推荐显示屏调试以及Keil调试,显示屏调试时最简单的,对于学过C语言的同学而言使用Keil软件进行调试应该是比较容易上手的

3、EXTI外部中断

中断是在主程序的运行过程中,出现了特定的中断触发条件(也就是中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后返回原来的位置继续执行程序

当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急选择相应更加紧急的中断源,更紧急的中断源优先级更高,我们可以通过编写程序的方式决定中断源优先级

当一个中断程序正在运行时,优先级更高的中断源申请中断,那么当前程序中断,先执行优先级更高的中断程序

AFIO复用输入输出口

AFIO主要用于引脚复用功能的选择和重定义 它主要完成两个任务:复用功能引脚重映射、中断引脚选择

4、TIM定时器

TIM就是timer,定时器的简写,可以对输入的时钟进行计数,并且在计数值达到设定值时触发中断

时钟:一个周期性的信号,用于为定时器提供一个稳定的、可测量的时间基准。这个时钟信号可以是STM32内部生成的,也可以是外部提供的

根据复杂度和应用场景定时器分为高级定时器、通用定时器、基本定时器三种类型

5、USART串口

USART是一种全双工通用同步(异步)串行收发模块,用于实现数据在微控制器与外部设备之间的串行通信,它支持同步和异步操作,能够独立地进行数据的接收和发送

6、I2C通信

I2C是一种双向、二线制、串行总线标准,用于连接低速外围设备 I2C总线由两根信号线组成,分别是时钟线(由主机设备控制,用于同步数据传输的时钟信号)和数据线(用于在主机和从机之间传输数据)

7、SPI通信

SPI通信以主从方式工作,即一个主机和一个或多个从机之间的通信 SPI也支持全双工通信,主设备和从设备可以同时发送和接收数据

8、RTC实时时钟

RTC模块的工作原理基于一个32位的计数器,该计数器以固定的时间间隔(通常为1秒)递增。当计数器溢出时,会产生一个中断或触发其他事件。在STM32中,RTC模块通常与电源管理模块和备份寄存器配合使用,以实现断电保护和数据恢复功能

三、创建工程

根据视频的步骤安装好后大约就是这样的效果:

四、分析系统结构

这里的系统结构视频中应该已经分析的挺清楚了,但是我第一遍听的时候也是没有听懂,所以搁这里做一个复盘

左上角的Cortex-M3是MCU,引出三根总线,通过ICode总线连接Flash接口,加载程序指令;DCode数据总线也连接Flash,加载数据;System系统总线,连接比如SRAM,存储运行时的变量数据,还有FSMC,FSMC是外接存储,不为我们所要梳理的内容

AHB系统总线用于挂载主要外设,意思是先进高性能总线,挂载着RCC和SDIO,SDIO用于连接外接SD卡,不为我们所要梳理的内容 通过桥接1和桥接2分别接到APB2和APB1两个外设总线上,APB用于连接一般的外设,APB2一般连接外设中比较重要的部分,APB1主要连接外设中稍微不重要的部分

由于MCU主要进行一些重要的工作,某些简单的工作我们不准备使用MCU来进行了,这里给MCU配备了DMA,用来处理一些很简单的程序,比如数据的挪用等简单但是要反复作用的事情,它通过DMA总线连接到总线矩阵上,它与MCU一样有总线的控制权,用于访问外设,当需要搬运数据等的操作时,外设会通过请求线向DMA发出请求,然后DMA就会获得总线控制权,进行操作

五、引脚定义

这份材料是由江协科技up整理出来的,对初学者是友好的,因为一上来就看手册很容易被劝退,stm32的手册又长又多,看起来是很难受的,这里简单梳理一下引脚的作用

类型S代表电源,I代表输入,O代表输出,I/O代表输入输出,I/O口电平代表I/O口所能容忍的电压,FT的为5V,其他为3.3V

主功能就是默认功能,配置I/O口的时候可以选择是通用I/O口还是默认复用功能,连接到对应外设的话可以调整为默认复用功能,如果同一个I/O口的两种复用功能我都需要用,在其他引脚有该重定义功能以及没有连接的时候可以连接后将该口配置为重定义功能

1号引脚VBAT是一个备用电源,可以接电池,系统电源断电时,电池可以给RTC和备份寄存器提供电源

2号引脚有三个功能,分别是普通I/O口、侵入检测、RTC时钟

3、4号引脚是I/O口或者接32.768KHz的RTC晶振

5、6号引脚接系统的主晶振,一般为8MHz,通过特殊电路产生72MHz的频率作为系统的主时钟

7号引脚NRST是系统复位引脚,N代表是低电平复位的

8、9号引脚是内部模拟部分的电源,VSS负极接GND,VDD正极接3.3V

10 ~ 19、21 ~ 22号、25 ~ 33号、41 ~ 43号、45 ~ 46号引脚都是I/O口,PA0有wake up的功能,可以用于唤醒处于待机模式的STM32

20号引脚是I/O口或者BOOT1引脚,BOOT1引脚用来配置启动模式

44号引脚是BOOT0引脚,BOOT0引脚用来配置启动模式

STM32采用分区供电的方式,供电口多 23 、24、35、36、47、48号引脚VSS_n和VDD_n是系统的主电源口

37 ~ 40号都是默认主功能都是调试端口,用来调试和下载程序,支持SWD和JTAG两种调试方式,SWD两根线:34号SWDIO和37号SWCLK JTAG五根线:34号JTMS、37号JTCK、38号JTDI、39号JTDO、40号NJTRST

这里我们说的多少号引脚有什么样的作用不是每个板子的该号引脚就是这样的作用,作用是要看它的功能的

六、启动配置

在STM32中,可以通过配置BOOT0和BOOT1引脚来配置三种不同的启动模式 当BOOT0引脚接地时,这时不论BOOT1接地还是接3.3V,启动模式都是主闪存存储器模式,也就是使用Flash 当BOOT0引脚接3.3V,BOOT1引脚接地,启动模式就是系统存储器,可以用于串口下载程序 当BOOT0引脚和BOOT1引脚同时接3.3V,启动模式就是内置的SRAM

BOOT引脚是在通电的一瞬间有效的,过了这段时间就会变为普通引脚

七、最小系统电路

从左到右,从上到下依次是复位电路,BOOT配置电路、电源指示灯以及I/O口测试灯、下载电路、稳压芯片、引脚排针,芯片、USB接口、晶振电路、滤波电容

通过这些小电路引脚的名称确定它们所要接到的位置,除了直接看它的结构,也可以通过引脚名称来获取它的功能,只要清除引脚的作用就可以了

分享到这里~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
STM32F103C8T6单片机简介「建议收藏」
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
全栈程序员站长
2022/08/10
15K0
STM32F103C8T6单片机简介「建议收藏」
STM32 最小系统
单片机最小系统是指用最少的电路组成单片机可以工作的系统,通常最小系统包含:电源电路、时钟电路、复位电路、调试/下载电路,对于STM32还需要启动选择电路。
韦东山
2022/05/05
1.7K0
STM32 最小系统
1-STM32+ESP8266+AIR202基本控制篇: 硬件使用说明
板载说明 1.主控MCU:  STM32F103C8T6 2.WIFI模块:  ESP8266-12F/E 3.GPRS模块: AIR202 (2G,移动/联通) 4.DHT11,一路继电器输出,OLED液晶 拨动开关说明
杨奉武
2020/06/28
1.5K0
如何解决STM32待机模式无法下载程序问题
STM32的待机模式(Standby Mode)是一种低功耗模式,主要用于在不需要高性能处理的情况下,降低系统的功耗。
不脱发的程序猿
2025/01/12
5100
如何解决STM32待机模式无法下载程序问题
stm32入门教程_单片机STM32
首先你得知道学习stm32,实际就是在学ARM内核,stm32内核就是ARM的; ARM使用RISC精简指令集模式开发; ARM公司全称Acorn Risc Machine; ARM处理器本身是32位设计,但也具备16位指令集,与等价32位处理器相比代码量节省35%,还能具备32位处理器的所有优势; ARM公司是英国的; ARM公司是全球知识产权提供商,他不做生产制造; 全世界超过95%的智能手机和平板电脑都采用ARM架构; 同时日本软银收购了ARM公司,成为物联网的领军者; ARM11系列就是应用到手机上的芯片,包括ARMv6、ARM6T2、ARMv6KZ、ARMv6K; ARM12系列时候,名字就不叫ARM12了,叫成Cortex; 杨桃首页:
全栈程序员站长
2022/10/29
1.8K0
stm32入门教程_单片机STM32
STM32F0单片机快速入门二 开发环境的建立 20200128
让 STM32F030 运行起来非常简单,在硬件上仅需给数字电源和模拟电源引脚(VDD,VDDA)供电,最好分别加上去耦电容。推荐值: VDD引脚加 1个4.7uF并联几个0.1uF 电容,VDDA 引脚加 1个1uF并联 1个0.01uF电容。电容值大些小些,甚至不加,对调试都不会有太大影响。
用户2366192
2021/05/31
8580
STM32介绍
什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是Microelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。STM32 是以32位为一个单位,同时能处理32位。比如51单片机就是一个同时处理8位的单片机。STM32中外设以4个位确定一个引脚功能。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,大受工程师和市场的青睐,无芯能出其右。 CMSIS构架
跋扈洋
2021/01/29
2.6K1
STM32新手入门教程[通俗易懂]
简介参考自:小马哥STM32四轴学习平台–DragonFly四轴STM32单片机软件入门级飞控算法课程
全栈程序员站长
2022/07/25
2.6K0
STM32新手入门教程[通俗易懂]
STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享
这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是:
Mculover666
2020/07/16
3.1K1
STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享
STM32F103笔记(一)[通俗易懂]
stm32F1系列是来自ARM公司具有突破性的以ARM Cortex-M3为内核的32为微处理器,内核为ARM公司为要求高性能,低功耗,低成本,性价比高的嵌入式应用专门设计的Cortex-M内核。
全栈程序员站长
2022/11/07
3.4K0
STM32F103笔记(一)[通俗易懂]
stm32开发教程_单片机STM32
有关stm32F1,stm32F4 固件驱动包的下载,请打开这篇文章: https://blog.csdn.net/xiaoeleis/article/details/105789061
全栈程序员站长
2022/10/04
9620
stm32开发教程_单片机STM32
【STM32】系统时钟RCC详解(超详细,超全面)
时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。
全栈程序员站长
2022/09/14
2.8K0
【STM32】系统时钟RCC详解(超详细,超全面)
1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)--硬件使用说明
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTA_BC260Y/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
杨奉武
2021/06/01
2.7K0
1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)--硬件使用说明
如何使用串口来给STM32下载程序
第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成。后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进行在线调试,所以后来就很少使用串口来下载程序了。前几天在uFUN试用群里看到有几个朋友在使用串口下载程序时,遇到了各种各样的问题,所以在这里简单介绍一下如何通过串口来给STM32下载程序。
单片机点灯小能手
2020/07/16
3.3K0
STM32F103C8T6芯片的重要引脚功能有哪些?
STM32F103C8T6 是 STM32F1 系列中的一款基于 ARM Cortex-M3 内核的微控制器,具有丰富的外设和引脚功能。
不脱发的程序猿
2024/11/28
1.6K0
STM32F103C8T6芯片的重要引脚功能有哪些?
聊一聊STM32的低功耗管理(附源码)
先来看看STM系列手册为例看看STM32的几种工作模式,小飞哥最近用到STM32G0系列的MCU,就拿G0的手册来聊一聊吧,其他的都类似,功耗方面有些差别
用户8913398
2022/06/07
2.2K0
聊一聊STM32的低功耗管理(附源码)
STM32学习笔记(超详细整理145个问题)
1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备;
全栈程序员站长
2022/08/18
1.6K0
STM32学习笔记(超详细整理145个问题)
【STM32】GPIO口以及EXTI外部中断
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
s-little-monster
2024/08/09
7280
【STM32】GPIO口以及EXTI外部中断
stm32如何才能正常运行的调试笔记
想使用野火或者安福来的代码模板来学习这个stm32,毕竟他买使用量挺多的,代码风格尤其是安福来比较好,因此想试试他们的工程,但是弄了好长一段时间,单片机就是不能运行,进入debug,就死机,停在硬件错误或其他地方。
用户4645519
2020/09/07
5220
stm32 boot0硬件接法导致的概率性启动失败问题总结和反思
问题概要,板子在稳压电源上工作很好,可一旦接了电池,stm32就会出现概率性的无法启动。加上项目比较急,这个问题阻塞一直无法量产。真是非常的要命啊。
番茄老夫子
2023/11/03
1K0
相关推荐
STM32F103C8T6单片机简介「建议收藏」
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档