当前位置: 首页 > news >正文

上海工厂网站建设/福州网站排名提升

上海工厂网站建设,福州网站排名提升,建设网站企业邮箱,淘宝客 网站无备案个人主页~ 这是一个新的系列,stm32单片机系列,资料都是从网上找的,主要参考江协科技还有正点原子以及csdn博客等资料,以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习,希望能对也没有学过…

在这里插入图片描述
个人主页~

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

正片开始


初学stm32单片机

  • 一、准备条件
  • 二、外设
    • 1、GPIO通用输入输出口
    • 2、调试工具
    • 3、EXTI外部中断
      • AFIO复用输入输出口
    • 4、TIM定时器
    • 5、USART串口
    • 6、I2C通信
    • 7、SPI通信
    • 8、RTC实时时钟
  • 三、创建工程
  • 四、分析系统结构
  • 五、引脚定义
  • 六、启动配置
  • 七、最小系统电路

一、准备条件

直接在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接口、晶振电路、滤波电容

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


分享到这里~

在这里插入图片描述

相关文章:

【STM32】STM32单片机入门

个人主页~ 这是一个新的系列,stm32单片机系列,资料都是从网上找的,主要参考江协科技还有正点原子以及csdn博客等资料,以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习,希望能对也没有学过…...

学生信息管理系统(Python+PySimpleGUI+MySQL)

吐槽一下 经过一段时间学习pymysql的经历,我深刻的体会到了pymysql的不靠谱之处; 就是在使用int型传参,我写的sql语句中格式化%d了之后,我在要传入的数据传递的每一步的去强制转换了,但是他还是会报错,说我…...

Java8.0标准之重要特性及用法实例(十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…...

Linux系统中,`buffer`和`cache` 区别

在Linux系统中,buffer和cache都是操作系统用来提高磁盘I/O性能的机制,它们通过将数据暂存于内存中来减少对磁盘的直接访问。尽管它们的目的相似,但它们在实现和用途上有所不同。 Buffer 定义:buffer主要用于存储即将被写入磁盘的…...

python创建进度条的两个手搓方法

# 使用\b 回删进行手搓 import sys,time for i in range(1, 101):# 这里的10代表你的进度: 一个汉字2字节print(你的进度:,str(i)\b*(i10),flushTrue,end)time.sleep(0.5) # 利用\r手搓 import sys,time for i in range(1, 101):# \r光标回到开头print("\r", end&qu…...

JAVA—面向对象编程基础

面向对象是java编程的套路。更符合人类思维习惯,编程更直观。面向对象有三大特征:封装,继承,多态。 目录 1.理解面向对象 2.对象在计算机中的执行原理 3.类和对象的一些注意事项 4.类与对象的一些语法知识 (1&am…...

【计算机视觉学习之CV2图像操作实战:车道识别1】

车道识别 步骤 区域感兴趣高斯模糊图片灰度化边缘提取膨胀腐蚀中值滤波霍夫圆环检测直线绘制车道 import cv2 import numpy as npdef create_roi_mask(frame):height, width frame.shape[:2]# 三角形的顶点top_vertex [int(width / 2 30), int(height * 0.5 30)]bottom_l…...

动态之美:Laravel动态路由参数的实现艺术

动态之美:Laravel动态路由参数的实现艺术 在Web开发中,路由是应用程序的神经系统,它负责将请求映射到相应的处理逻辑。Laravel框架提供了一种强大而灵活的路由系统,允许开发者定义动态路由参数,从而创建更具动态性和可…...

Python练手小项目

计算器 创建一个简单的计算器,能够进行加、减、乘、除四种基本运算。 # 定义加法函数 def add(x, y):return x y# 定义减法函数 def subtract(x, y):return x - y# 定义乘法函数 def multiply(x, y):return x * y# 定义除法函数 def divide(x, y):if y 0:return…...

苹果手机通讯录恢复教程?3招速成指南

随着科技的不断进步,手机丢失、系统崩溃等意外情况也时有发生,一旦这些情况发生,我们宝贵的通讯录资料很可能会付诸东流。对此,本文为广大苹果手机用户提供一份简洁明了的通讯录恢复教程,让你轻松掌握苹果手机通讯录恢…...

python爬虫入门(五)之Re解析

一、什么是Re解析 “Re解析”是指使用正则表达式(regular expression,简称regex)进行文本解析或匹配的过程。 解析网页内容的三种方式: 1、bs4解析(最简单) 2、re解析(解析速度最快&#xf…...

可靠的图纸加密软件,七款图纸加密软件推荐

大家好啊,我是小固,今天跟大家聊聊图纸加密软件。 作为一名设计师,我深知保护自己的知识产权有多重要。曾经就因为图纸泄露,差点血本无归,那个教训可真是惨痛啊!所以我今天就给大家推荐几款靠谱的图纸加密软件,希望能帮到你们。 固信软件https://www.gooxion.com/ 首先要隆重…...

【每日一题】【最短路】【BFS】小红走矩阵 “葡萄城杯”牛客周赛 Round 53 F题 C++

“葡萄城杯”牛客周赛 Round 53 F题 小红走矩阵 题目背景 “葡萄城杯”牛客周赛 Round 53 题目描述 n m n\times m nm的矩阵由障碍和空地组成,初始时小红位于起点 ( 1 , 1 ) (1,1) (1,1),她想要前往终点 ( n , m ) (n,m) (n,m)。小红每一步可以往上…...

无线磁吸充电宝哪个牌子值得入手?什么牌子磁吸充电宝性价比高?

在当下科技日新月异的时期,无线磁吸充电宝成为了众多电子设备用户的得力助手。然而,面对市场上众多品牌和型号的无线磁吸充电宝,消费者常常陷入选择的困境:到底哪个牌子值得入手?什么牌子的磁吸充电宝性价比高&#xf…...

互联网摸鱼日报(2024-08-01)

互联网摸鱼日报(2024-08-01) 36氪新闻 氪星晚报 | Uber与比亚迪合作,将在平台上增加10万辆电动汽车;维维股份将收购大窑汽水?公司回应:消息不实;我国科学家取得全固态锂电池研究新突破 《死侍与金刚狼》,…...

Alpla003经典的价量背离的因子在可转债列表里的因子分析(附python代码)

原创文章第605篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 遗传算法给出的因子五花八门,可解释性不高。 强化学习原理不同,但结果类似。 大模型之前咱们尝试过,Quantlab3.9代码:内置大模型LL…...

进阶理解——typeof 、instanceof

typeof 、instance of 先聊聊JavaScript基本类型数据类型5种含值数据类型2种不含值类型 6种类型的*对象* typeofinstanceof总结进一步扩展一下具体讨论一下typeof局限性扩展判断方法 很多时候,回头望,理解会更深刻,也希望能帮助一些初学的同学…...

不同类型的生物反应器在支架成熟过程中具有哪些特点和应用?

3D Bioprinting of Human Tissues: Biofabrication, Bioinks, and Bioreactors是发表于《International Journal of Molecular Sciences》的一篇综述,详细介绍了3D生物打印人体组织的相关技术进展,包括数据处理、生物打印技术、生物墨水配方、生物反应器…...

8. Spring Ai之入门到精通(超级详细)

简介 2024年5月30号Spring AI 的 1.0.0 里程碑 1 版本发布。表明版本已正在巩固,并且大部分主要错误和问题已经解决,API基本已确定,不会发生很大的变化。 在与大模型集成方面,继LangChain4j之后,又一重大的框架诞生。标…...

寄存器和硬件的关系

寄存器也是一种存储器,只不过普通的存储器只能写和读。里面的数据并没有赋予什么实际意义。但是寄存器就不一样了,寄存器的每一位数据,都对应了硬件电路的状态。寄存器和外设的硬件电路,是可以进行互动的。所以,程序到…...

【WEB】ctfshow-萌新-web9-15

文章目录 题目介绍&#xff1a;题目分析&#xff1a;payload&#xff1a; 题目介绍&#xff1a; ctfshow-萌新计划-web9-15 <?php # flag in config.php include("config.php"); if(isset($_GET[c])){$c $_GET[c];if(preg_match("/system|exec|highlight…...

【Vulnhub靶场AI-WEB-1.0打靶教程】

第一步&#xff1a;查看虚拟机的ip 第二步&#xff1a;扫描ip下开放的80端口 第三步&#xff1a;扫描查到的ip地址下的目录 第四步&#xff1a;访问查到的目录 访问robot.txt 第五步:访问robot.txt显示出的目录 第六步&#xff1a;打开kali终端&#xff0c;使用sqlmap功能 sq…...

html实现酷炫美观的可视化大屏(十种风格示例,附源码)

文章目录 完整效果演示1.蓝色流线风的可视化大屏1.1 大屏效果1.2 大屏代码1.3 大屏下载 2.地图模块风的可视化大屏2.1 大屏效果2.2 大屏代码2.3 大屏下载 3.科技轮动风的可视化大屏3.1 大屏效果3.2 大屏代码3.3 大屏下载 4.蓝色海洋风的可视化大屏4.1 大屏效果4.2 大屏代码4.3 …...

【C++BFS算法 二分查找】2812. 找出最安全路径

本文涉及知识点 CBFS算法 C二分查找 LeetCode2812. 找出最安全路径 给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid &#xff0c;其中 (r, c) 表示&#xff1a; 如果 grid[r][c] 1 &#xff0c;则表示一个存在小偷的单元格 如果 grid[r][c] 0 &#xff0c;则表示一…...

轻触开关 KH-4.5X4.5X5.5H-STM

品  牌&#xff1a; kinghelm(金航标) 厂家型号&#xff1a; KH-4.5X4.5X5.5H-STM 封装&#xff1a; SMD 商品毛重&#xff1a; 0.317克(g) 包装方式&#xff1a; 编带...

3.redis客户端

1.命令行客户端 在安装redis的时候就已经安装好了&#xff0c;就是redis-cli redis-cli -h 127.0.0.1 -p 6379 -a 123456 -a 表示密码 -h 表示ip&#xff0c;不配置默认为本机 127.0.0.1 -p 表示端口&#xff0c;不配置默认为 6379 进入后可以输入ping&#xff0c;返回pong代表…...

Rust配置国内源,解决安装依赖慢问题

温馨提示&#xff1a;最新内容仅在原文更新。 国内源使用字节的RsProxy https://rsproxy.cn/ 解决rust-analyzer加载时间过长(请参考本文) 配置环境变量 Mac export RUSTUP_DIST_SERVER"https://rsproxy.cn" export RUSTUP_UPDATE_ROOT"https://rsproxy.cn/r…...

AI学习指南机器学习篇- Q学习的参数与调优

AI学习指南机器学习篇- Q学习的参数与调优 在强化学习领域中&#xff0c;Q学习是一种经典的算法&#xff0c;可以用来解决各种问题&#xff0c;包括游戏和机器人控制等。Q学习算法的性能很大程度上取决于一些重要的参数&#xff0c;例如学习率和折扣因子。本文将介绍这些参数的…...

《小迪安全》学习笔记02

域名默认存放目录和IP默认存放目录不一样。 IP地址是WWW文件里的&#xff0c;域名访问是WWW里的一个子目录里的&#xff08;比如是blog&#xff09;。 Nmap: Web源码拓展 拿到一个网站的源码&#xff0c;要分析这几个方面↑。 不同类型产生的漏洞类型也不一样 在网站中&…...

C语言:自定义类型进阶(结构体、联合体、枚举)

自定义类型&#xff08;结构体、联合体、枚举&#xff09; 一、结构体&#xff08;一&#xff09;结构体的内存对齐1、结构体内存对齐规则&#xff08;1&#xff09;引子&#xff08;2&#xff09;offsetof 宏函数&#xff08;3&#xff09;内存对齐原理&#xff08;4&#xff…...