滑县网站建设服务,wordpress搬家后空白,家装公司名称取名参考,wordpress 相册 不显示图片1、门电路 门电路组成简单加法器#xff1a; 二进制对电路的影响#xff1a;
0和1代表无和有#xff1b;
以下图例#xff0c;演示与门#xff1a;左1右1输出1#xff1b; 电平标准#xff1a;使用不同的电压表示数字0和1#xff1b;
高电平#xff1a;1#xff1…
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为例子
C44引脚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、连接电路
PAI16个引脚为一组编号0-15 4、点击stm32芯片设置代码源文件和晶振频率 5、配置供电网 给VCC/VDD配置高电平 给GND配置低电平 了解GPIO的使用
1、找寄存器地址 寄存器的地址 偏移地址寄存器的详细描述 基地址基地址范围的左边地址
通过基地址加上偏移地址的形式找到寄存器 2、通过寄存器的赋值操作寄存器的工作模式 四个位控制一个引脚一共16个引脚需要64位一个寄存器32位所以需要两个寄存器
寄存器
端口配置低寄存器GPIOxCRL
[3-0] 0001;
端口输出数据寄存器(GPIO)
3、使能和失能
失能失能是MCU微控制单元的默认模式该模式基于低能耗的原则保证设备是处于关闭状态来达到低耗能的目的
使能使能是MCU的供能模式通过对使能寄存器的赋值操作改变模式使其从失能模式变为使能模式从而启动MCU的模式
要让其他寄存器运行需要先把使能寄存器设置为使能模式 外设挂载在外设上通过APB2操作外设使能寄存器
RCC基地址偏移量操作寄存器 了解代码编辑平台keil5
1、设置编码格式 2、设置生成HEX File
了解总线 系统总线System Bus是计算机系统中一个至关重要的组件它作为连接计算机系统主要部件的桥梁承担着数据传输、地址指定和控制信号传输等多重任务。以下是关于系统总线的详细解析 一、系统总线的定义与功能 系统总线是一个单独的计算机总线用于连接计算机系统的主要组件如CPU、内存和输入输出接口等。其主要功能包括 数据传输通过数据总线Data BusDB实现CPU与存储器、输入输出接口等部件之间的数据交换。地址指定通过地址总线Address BusAB确定数据传输的目的地即指定CPU访问的存储单元或外设的地址。控制信号传输通过控制总线Control BusCB传输各种控制信号和时序信号协调各部件之间的操作。 二、系统总线的分类 系统总线按照传递信息的功能来分主要分为以下三类 控制总线Control BusCB 主要用来传送控制信号和时序信号。控制信号包括读/写信号、片选信号、中断响应信号等也有来自其他部件的反馈信号如中断申请信号、复位信号等。控制总线的传送方向通常是双向的其位数根据系统的实际控制需要而定。数据总线Data BusDB 是双向三态形式的总线用于CPU与存储器、输入输出接口等部件之间的数据交换。数据总线的位数是微型计算机的一个重要指标通常与微处理器的字长相一致。数据总线上传输的数据可以是真正的数据、指令代码、状态信息或控制信息。地址总线Address BusAB 由CPU或有DMA直接内存访问能力的单元使用用于沟通这些单元想要存取读取/写入的内存地址。地址总线的宽度决定了系统能够访问的内存空间大小。 三、系统总线的作用与特点 作用系统总线在微型计算机中扮演着类似于人体神经中枢的角色通过它将CPU、内存、输入输出接口等部件紧密地连接在一起实现了计算机内部各部件之间的信息交换和协同工作。特点 模块化系统总线的开发促进了计算机系统的模块化设计使得计算机系统的扩展和升级变得更加容易。高效性通过系统总线传输数据和控制信号可以大大提高计算机系统的数据传输速率和整体性能。灵活性系统总线的设计使得人们可以根据自己的需要将不同规模和类型的内存和接口接到系统总线上形成各种规模的微型计算机。 1、时钟
仿真没有加外部时钟电路使用内部时钟振荡器产生的时钟信号
不仿真来自晶振 晶振时钟Crystal Oscillator Clock 晶振时钟是指通过晶体振荡器产生的稳定时钟信号。晶体振荡器是一种能够产生高精度、高稳定度频率的电子元件它利用石英晶体的压电效应在外部电路的作用下产生稳定的振荡频率。这个频率通常被用作系统的基准时钟源因为它具有极高的稳定性和准确性。 在大多数计算机和嵌入式系统中CPU和其他关键组件的时钟信号都是由晶振提供的。晶振产生的时钟信号经过分频、倍频等处理后可以生成不同频率的时钟信号以满足系统不同部分的需求。 系统时钟System Clock 系统时钟是一个更广泛的概念它指的是整个系统内部用于同步和驱动各种操作的时钟信号。在计算机系统或嵌入式系统中系统时钟可能由多个时钟源组成但其中最重要的是由晶振产生的基准时钟信号。 系统时钟不仅用于CPU的执行还用于控制外设的通信速率、管理中断和异常、记录系统时间等。系统时钟的准确性和稳定性对系统的整体性能和可靠性至关重要。 两者之间的关系 晶振时钟是系统时钟的基础在大多数系统中系统时钟的基准信号是由晶振产生的。晶振的高稳定性和准确性保证了系统时钟的可靠性。系统时钟是晶振时钟的扩展和应用系统时钟不仅包含了晶振产生的基准信号还包含了经过处理后的各种时钟信号这些信号被用于系统的各个部分。 时钟来自系统时钟晶振时钟系统时钟分给AHB总线AHB总线分给APB总线
编写STM32代码
通过宏定义找到寄存器基地址偏移地址
对寄存器赋值通过取反操作与或非的操作来达到对寄存器固定位置的赋值从而使得寄存器处于特定的模式对引脚输出不同的电平达到控制电路的目的
while1防止跑飞使得单片机内部一直跑这个代码
单片机内部暂时没有操作系统所以编写c代码不用return
设置GPIO某个引脚输出高低电平的步骤
1、使能GPIORCC
因为GPIO挂载在APB2这一条数据总线上所以要通过APB2使能GPIO因为LED挂载于IO端口A;所以IO端口A置1写使能 2、设置通用推挽输出10Mhz工作模式CRL
3、操作端口输出寄存器ODR
案例1通过设置推挽中的挽时LED点亮
仿真proteus结果 设施端口输出寄存器输出1
#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);//0GPIOA_CRL | (0x01 0);//输出低电平 第0位清零GPIOA_ODR ~(0x01 0);while(1);
}案例2 操作端口2