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

嵌入式学习day41-硬件(2)

GPIO:

GenralPurposeInput/Output,GPIO是51单片机和外界交互最基本的方式

工作模式:

        输出模式:单片机给定引脚一个电平(高电平(5V)低电平(0))

        输入模式:检测引脚电平变化

将GPIO类比水龙头:

        输出模式:控制水龙头(水流)

        输入模式:观察水龙头是否有水流(按键)

按键:

按键K1,两个引脚被接到GND和P14引脚,当K1按键被按下时,P14引脚会和GND短路到一起,P14引脚会呈现低电平


判断按键是否被按下:只需要检测对应的引脚是否为低电平

中断:

中断概念:

CPU在执行一个任务时,被外界更为紧急的事件打断,转而去执行更为紧急的任务,执行完后再回到刚才的地方继续向下执行,这一过程叫做中断

中断源:

打断CPU执行当前任务的事件/源头叫做中断源(51单片机中5个中断源)

中断源分类:

外部中断0、外部中断1、定时器0、定时器1、串口

外部中断:

单片机上的引|脚电平变化所引|发的中断(INT0(P3-2)、INT1(P3-3))

中断优先级:

CPU再去处理中断任务时候,会去比较多个中断的优先级,优先去处理优先级高的中断

中断嵌套:

处理一个中断时,再嵌套另外的中断;51单片机只允许嵌套2层

中断处理流程:

  1. 中断源发出中断请求
  2. 检查CPU是否响应中断及该中断源是否被屏蔽
  3. 比较中断优先级
  4. 保护现场
  5. 执行中断服务函数 (回调函数)
  6. 恢复现场

中断相关寄存器配置

IE寄存器(中断允许寄存器)

  • 将IE寄存器中的bit7,EA置1,代表CPU能够响应所有中断
  • 将IE寄存器中的bit0,EX0置1,代表允许外部中断0产生中断

TCON寄存器(定时器寄存器)

  • 将TCON寄存器的bit1,IEO置1,代表向CPU发起中断请求,CPU响应完中断请求后,硬件清“0"
  • 将TCON寄存器的bit0,IT0置1,代表外部中断O下降沿触发中断

定时器:

概念:

能够产生一个精准的定时,不同外设对时序的要求高(高电平和低电平时间是精准的)

51单片机内部有两个定时器,分别为timer0、timer1,所使用自增型定时器(计数器 16位)

Clock,时钟,CPU运行节拍,频率(Intel 2.1GHZ)
频率单位:HZ
时间单位:S
频率和时间关系:1/2.1GHZ s


51单片机:
晶振,晶体振荡器(12MHZ/11.0592MHZ)
51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12=1MHZ
51单片机完成一条指令运算:1/1MHZ=1us


通过定时器0实现1ms定时:
1ms =1000us
定时器初值:64535

定时器相关寄存器配置:

8位自动重装载定时器:

分为TLO和THO两部分,1byte,实际参与计数的只有TLO,当TLO中的值加到255溢出后,再将TH0中的值重新装入到TL0中

TCON寄存器:

  • bit4置1,TMOD寄存器中的Gate位清0,代表允许定时器开始计数

TMOD寄存器:

  • 定时器0 -> 低四位清0
  • 将TMOD寄存器中的M0,bit0置1,代表定时器0工作在16位定时器/计数器模式

IE寄存器:

  • 将IE寄存器中的bit7置1,代表CPU能够响应所有中断
  • 将IE寄存器中的bit1置1,代表允许定时器0产生中断

流程:

  1. 先配置TMOD模式选择寄存器,将低四位清0,再将bit0置1代表工作在16位定时器
  2. 向TH0和TL0中装入定时器的初值(1ms->64535)
  3. 将TCON寄存器中的bit6置1,代表允许定时器开始计数
  4. 将IE寄存器中的bit7和bit1置1,开启中断总开关和定时器0的子开关
  5. 编写定时器0的中断服务函数

PWM、蜂鸣器:

脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚的电平发生翻转

PWM周期:

一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)

PWM占空比:

在一个周期内高电平所占的比例

蜂鸣器:

震荡源  -> 声音(波)-> 音调不同 -> 波的频率发生变化 -> 高音 高频  低音 低频   音量不同 -> 波的振幅 -> 能量

有源蜂鸣器:存在震荡源,通电后蜂鸣器会发出持续频率的声音

无源蜂鸣器:不存在震荡源,通电后蜂鸣器不会发出声音,需要给蜂鸣器一个震荡


http://www.xdnf.cn/news/1448515.html

相关文章:

  • ansible总结2
  • 代码随想录算法训练营第一天 | 704.二分查找 27. 移除元素 977.有序数组的平方
  • python中`__annotations__` 和 `inspect` 模块区别??
  • 两个子进程之间使用命名pipe
  • 从月薪5K到年薪60W!API自动化测试如何让你突破职业瓶颈
  • K8S 部署 NFS Dynamic Provisioning(动态存储供应)
  • 【STM32】STM32F103系列USB大坑 二
  • 具身智能让人形机器人 “活” 起来:懂语言、能感知、会行动,智能进化再提速
  • 使用langgraph创建工作流系列4:人机回环
  • 面试复习题-Flutter
  • 论文介绍:“DUSt3R”,让 3D 视觉从“繁琐”走向“直观”
  • Swift 解法详解:LeetCode 370《区间加法》
  • 《网络安全实战:CC攻击(应用层)与DDoS攻击(网络层)的底层逻辑与防御体系》​
  • 分发饼干——很好的解释模板
  • 从“看见”到“行动”:一场机器视觉与机器人的软硬件共舞
  • 把本地win11系统打包成镜像并安装到vmware中
  • Springboot3+SpringSecurity6Oauth2+vue3前后端分离认证授权-授权服务
  • FastVLM:高效视觉编码助力视觉语言模型突破高分辨率效率瓶颈
  • LeNet-5:卷积神经网络的奠基之作
  • 0903 C++类的运算符重载、静态成员与继承
  • 前端-安装VueCLI
  • 【ARM嵌入式汇编基础】-数据处理指令(三)
  • OpenHarmony Ability“全家桶”彻底拆解:从UIAbility到ExtensionAbility一文说清楚
  • LeetCode 1537.最大得分
  • 残差连接的概念与作用
  • 蓝桥杯算法之基础知识(6)
  • Netty从0到1系列之Channel
  • 【 线段树】P12347 [蓝桥杯 2025 省 A 第二场] 栈与乘积|普及+
  • 基于 HTML、CSS 和 JavaScript 的智能图像灰度直方图分析系统
  • HTML全屏功能实现汇总