STM32

1、门电路





门电路组成简单加法器:

二进制对电路的影响:

0和1代表无和有;

以下图例,演示与门:左1右1输出1;

电平标准:使用不同的电压表示数字0和1;

高电平:1;

低电平:0;

CMOS标准:3.3v标准;

TTL标准:

储存器:

RAM:随机储存器;ROM:只读储存器;

运算器:加法器,寄存器;

单片机编程可以理解为寄存器编程;

特殊功能的寄存器SFR:

控制外设,中断,定时/计数等功能;

程序状态寄存器(PSW):

存放ALU(算数逻辑单元)的操作状态特征,进位标志、溢出标志等;

堆栈指针寄存器(SP):

指示堆栈顶部位置,支持堆栈操作实现;

数据指针寄存器(DPTR):

通常是16位,用于储存数据存储器或程序储存器的地址信息,支持间接寻址操作;

中断允许寄存器(IE)和中断优先级寄存器(IP):

管理和控制中断请求,包括中断的允许,禁止,优先级设置;

定时/计数寄存器:

测量时间间隔、周期和频率;

I/O端口寄存器(p0,p1,p2,p3):

用于控制单片机的输入输出端口,包括端口的方向设置,输出状态的读取和写入以及输入状态的读取操作;

要操作GPIO,就要操作能影响GPIO的寄存器,给SFR一个固定的值来操作寄存器,还要搞清楚GPIO的地址;

控制器:

程序计数器PC,指令寄存器IR,指令译码器ID,时许控制电路;

运算器+控制器 = 中央处理器(CPU);

认识STM32F1:

32位微控制器;

MCU:微控制单元--单片机

控制:(了解)

单片机的作用,优势(低功耗,成本,性能)

学习stm32目标:

直接控制功能模块(单片机外设);

主控芯片--子芯片(主控芯片通过单片机通信协议分发任务给子芯片(单片机协议))

目标:

学外设:GPIO TIM USART ADC

学外设组合使用:

学特殊机制:中断,协议(协议匹配)

了解单片机的命名规则(以STM32F103C8T6A为例子):

C:44引脚;8表示64kb闪存;

了解闪存:

闪存(Flash Memory)是一种非易失性存储器,它允许数据在断电后仍然保留,并且可以被多次擦除和写入。以下是关于闪存的详细介绍:

  • 定义:闪存是一种电子式可清除程序化只读存储器的形式,它能够在断电后保持数据不丢失。
  • 特征:长寿命的非易失性,即数据在断电后仍能长时间保存。

闪存存放烧录的代码;

了解GPIO:

General Purpose Input/Output,通用输入输出接口

通过数据手册查看电平标准;电气特性;IO端口特性等信息;

通用输出:

高电平2.4-3.6

低电平-0.4-0.5

共地:

点灯--输出--proteus(仿真平台)


了解影响GPIO的寄存器(SFR):

通过寄存器地址对寄存器的赋值操作对应的位,来影响GPIO;

每一组GPIO都有独立的寄存器;

每个IO端口可以自由编程,来配置不同的模式;

一个io端口位的基本结构:

推挽模式和开漏模式:

MOS管结构:

推挽模式:

推挽模式下:P-MOS管和N-MOS管都打开,当输出数据寄存器输出高电平1时,经过输出控制(输出控制取反),P-MOS的N-MOS的G极都是低电平,VDD是高电平,Vss是低电平,此时只有P-MOS导通,IO引脚为高电平,外接低电平导通,表现为推;反之:当输出数据寄存器输出低电平0时,经过输出控制(输出控制取反),P-MOS的N-MOS的G极都是高电平,VDD是高电平,Vss是低电平,此时只有N-MOS导通,IO引脚为低电平,外接高电平导通,表现为挽;

开漏模式:

开漏模式下:P-MOS管关闭,输出数据寄存器为高电平1时,经过输出控制变成低电平,此时N-MOS管表现为不导通,此时的io引脚表现为高阻态;当输出数据寄存器为低电平0时,经过输出控制变成高电平,此时N-MOS管表现为导通,IO引脚为低电平,若外接电路,可以通过输出控制外接电路的导通与短路;以灯泡为例;

仿真平台proteus:

创建工程的选项:

1、选择芯片型号:

2、选择软件组件:

1、添加元器件:选择元器件模式,按P,进入选择元器件模式的选择页面,有搜索框可以直接搜索

2、选择终端模式:选择终端模式,选到POWER,可以选择供电;

3、连接电路:

PAI:16个引脚为一组;编号0-15;

4、点击stm32芯片设置代码源文件和晶振频率;

5、配置供电网:

给VCC/VDD配置:(高电平)

给GND配置:(低电平)

了解GPIO的使用:

1、找寄存器地址:

寄存器的地址:

偏移地址:寄存器的详细描述;

基地址:基地址范围的左边地址

通过基地址加上偏移地址的形式找到寄存器;

2、通过寄存器的赋值操作寄存器的工作模式:

四个位控制一个引脚,一共16个引脚,需要64位,一个寄存器32位所以需要两个寄存器;

寄存器:

端口配置低寄存器(GPIOxCRL)

3-0\] = 0001; 端口输出数据寄存器(GPIO) #### 3、使能和失能: 失能:失能是MCU(微控制单元)的默认模式,该模式基于低能耗的原则,保证设备是处于关闭状态,来达到低耗能的目的; 使能:使能是MCU的供能模式,通过对使能寄存器的赋值操作改变模式,使其从失能模式变为使能模式,从而启动MCU的模式; 要让其他寄存器运行需要先把使能寄存器设置为使能模式 ![](https://i-blog.csdnimg.cn/direct/ad540e30ed2d47448ae8ecbbee3c8a23.png) ![](https://i-blog.csdnimg.cn/direct/c831247317f04b60a36cf6725acd9a75.png) 外设挂载在外设上;通过APB2操作外设使能寄存器; RCC基地址+偏移量操作寄存器; ![](https://i-blog.csdnimg.cn/direct/f54e526cfc3d4278b3f967a56ee58b2d.png) ## 了解代码编辑平台keil5: ### 1、设置编码格式: ![](https://i-blog.csdnimg.cn/direct/6799bceae5734c11a4fa6fa1cb2ae77f.png) ![](https://i-blog.csdnimg.cn/direct/b4897cf361f94722afc21fdc96772126.png) ### 2、设置生成HEX File![](https://i-blog.csdnimg.cn/direct/371cf7201b654775811d312df6ec2c1d.png) ## 了解总线: > 系统总线(System Bus)是计算机系统中一个至关重要的组件,它作为连接计算机系统主要部件的桥梁,承担着数据传输、地址指定和控制信号传输等多重任务。以下是关于系统总线的详细解析: > > #### 一、系统总线的定义与功能 > > 系统总线是一个单独的计算机总线,用于连接计算机系统的主要组件,如CPU、内存和输入输出接口等。其主要功能包括: > > * **数据传输**:通过数据总线(Data Bus,DB)实现CPU与存储器、输入输出接口等部件之间的数据交换。 > * **地址指定**:通过地址总线(Address Bus,AB)确定数据传输的目的地,即指定CPU访问的存储单元或外设的地址。 > * **控制信号传输**:通过控制总线(Control Bus,CB)传输各种控制信号和时序信号,协调各部件之间的操作。 > > #### 二、系统总线的分类 > > 系统总线按照传递信息的功能来分,主要分为以下三类: > > 1. **控制总线(Control Bus,CB)** > * 主要用来传送控制信号和时序信号。 > * 控制信号包括读/写信号、片选信号、中断响应信号等,也有来自其他部件的反馈信号,如中断申请信号、复位信号等。 > * 控制总线的传送方向通常是双向的,其位数根据系统的实际控制需要而定。 > 2. **数据总线(Data Bus,DB)** > * 是双向三态形式的总线,用于CPU与存储器、输入输出接口等部件之间的数据交换。 > * 数据总线的位数是微型计算机的一个重要指标,通常与微处理器的字长相一致。 > * 数据总线上传输的数据可以是真正的数据、指令代码、状态信息或控制信息。 > 3. **地址总线(Address Bus,AB)** > * 由CPU或有DMA(直接内存访问)能力的单元使用,用于沟通这些单元想要存取(读取/写入)的内存地址。 > * 地址总线的宽度决定了系统能够访问的内存空间大小。 > > #### 三、系统总线的作用与特点 > > * **作用**:系统总线在微型计算机中扮演着类似于人体神经中枢的角色,通过它将CPU、内存、输入输出接口等部件紧密地连接在一起,实现了计算机内部各部件之间的信息交换和协同工作。 > * **特点** : > * **模块化**:系统总线的开发促进了计算机系统的模块化设计,使得计算机系统的扩展和升级变得更加容易。 > * **高效性**:通过系统总线传输数据和控制信号,可以大大提高计算机系统的数据传输速率和整体性能。 > * **灵活性**:系统总线的设计使得人们可以根据自己的需要,将不同规模和类型的内存和接口接到系统总线上,形成各种规模的微型计算机。 ### 1、时钟: 仿真:没有加外部时钟电路,使用内部时钟振荡器产生的时钟信号; 不仿真:来自晶振; > > #### 晶振时钟(Crystal Oscillator Clock) > > 晶振时钟是指通过晶体振荡器产生的稳定时钟信号。晶体振荡器是一种能够产生高精度、高稳定度频率的电子元件,它利用石英晶体的压电效应,在外部电路的作用下产生稳定的振荡频率。这个频率通常被用作系统的基准时钟源,因为它具有极高的稳定性和准确性。 > > 在大多数计算机和嵌入式系统中,CPU和其他关键组件的时钟信号都是由晶振提供的。晶振产生的时钟信号经过分频、倍频等处理后,可以生成不同频率的时钟信号,以满足系统不同部分的需求。 > > #### 系统时钟(System Clock) > > 系统时钟是一个更广泛的概念,它指的是整个系统内部用于同步和驱动各种操作的时钟信号。在计算机系统或嵌入式系统中,系统时钟可能由多个时钟源组成,但其中最重要的是由晶振产生的基准时钟信号。 > > 系统时钟不仅用于CPU的执行,还用于控制外设的通信速率、管理中断和异常、记录系统时间等。系统时钟的准确性和稳定性对系统的整体性能和可靠性至关重要。 > > #### 两者之间的关系 > > * **晶振时钟是系统时钟的基础**:在大多数系统中,系统时钟的基准信号是由晶振产生的。晶振的高稳定性和准确性保证了系统时钟的可靠性。 > * **系统时钟是晶振时钟的扩展和应用**:系统时钟不仅包含了晶振产生的基准信号,还包含了经过处理后的各种时钟信号,这些信号被用于系统的各个部分。 时钟来自系统时钟(晶振时钟),系统时钟分给AHB总线,AHB总线分给APB总线; ## 编写STM32代码: 通过宏定义找到寄存器,基地址+偏移地址 对寄存器赋值,通过取反操作,与或非的操作来达到对寄存器固定位置的赋值;从而使得寄存器处于特定的模式对引脚输出不同的电平;达到控制电路的目的; while(1):防止跑飞,使得单片机内部一直跑这个代码; 单片机内部暂时没有操作系统,所以编写c代码不用return; 设置GPIO某个引脚输出高低电平的步骤: 1、使能GPIO(RCC) 因为GPIO挂载在APB2这一条数据总线上,所以要通过APB2使能GPIO;因为LED挂载于IO端口A;所以IO端口A置1写使能; ![](https://i-blog.csdnimg.cn/direct/fa0ab5f4126648aba2816497de6befea.png) ![](https://i-blog.csdnimg.cn/direct/5b9fb7c3861148e2a777b849d5a25ecf.png) ![](https://i-blog.csdnimg.cn/direct/17e532fc143744daae9c6697319ec85d.png) ![](https://i-blog.csdnimg.cn/direct/664ed3af1d6246bca6fbaaf1cc435e54.png) 2、设置通用推挽输出,10Mhz(工作模式)(CRL) 3、操作端口输出寄存器;(ODR) 案例1:通过设置推挽中的挽,时LED点亮; 仿真proteus结果: ![](https://i-blog.csdnimg.cn/direct/7e6b29257bc04a66b1b7ee15170593d1.png) 设施端口输出寄存器输出1; ```cpp #define GPIOA_CRL *(int *) (0x40010800 + 0x00) #define GPIOA_ODR *(int *) (0x40010800 + 0x0c) #define RCC_APB2ENR *(int *) (0x40021000 + 0x18) int main(){ //GPIO --失能Disable --低功耗;默认失能; //使能GPIO-- Enable--才能正常工作,也会开始消耗电能; RCC_APB2ENR |= (0x01 << 2);//第二位置1; //设置PA0 --通用推挽输出,10Mhz输出速度; GPIOA_CRL &= ~(0xf << 0);//0 GPIOA_CRL |= (0x01 <<0); //输出低电平 第0位清零 GPIOA_ODR &=~(0x01 <<0); while(1); } ``` 案例2: 操作端口2![](https://i-blog.csdnimg.cn/direct/6f389c75f1054af19edba1427e1fdc18.png)![](https://i-blog.csdnimg.cn/direct/a4ea33d1be0e45aebe5733dee44d251e.png)

相关推荐
cjy_Somnr1 小时前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
Lay_鑫辰2 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤4 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟6 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞6 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲7 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up7 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技16 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志18 小时前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣18 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法