单片机基础

本文介绍了单片机的基础知识,包括推挽与开漏输出的差异、定时器的作用和优势、异步与同步通信的区别、I2C通信流程以及中断服务函数的注意事项,还讲解了如何对寄存器进行置0或置1操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推挽输出与开漏输出的区别

  • 推挽电路可以输出高低电平,连接数字器件,又两个三极管电路组成,每次只导通一个。
  • 开漏输出相当于输出直接接到三极管的集电极,需要接上拉电阻使用,适合做电流型驱动,有较大的吸入电流的能力。

定时器的功能以及优势

  • 单片机的中定时器主要作用是用于计数,一次计数就是一个时钟周期,可以用于中断、延时计算、脉冲发送、脉冲检测等。具有稳定好、易于使用的优势,同时中断和定时器的使用极大减小了CPU的负担。

异步通信与同步通信的区别

同步通信与异步通信区别:
1、同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
2、同步通信效率高,异步通信效率较低。
3、同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
4、同步通信可用于点对多点,异步通信只适用于点对点。

I2c通信过程

1、主机发起第一次通信,将读指令和寄存器Y的地址写入从机
2、从机将读指令和地址解析出来,并将地址中的内容存到从机输出buffer
3、主机再次与从机通信读取数据内容

中断

  • 中断是指在计算机运行过程中遇到外部信号,需要主机干预时,主机会停下主程序的运行,进入中断程序,处理新的情况,处理完毕后,再继续执行主程序。
  • 中断服务函数需要注意以下几点:
    1、不能返回值。中断服务函数的调用是硬件级别的,当中断产生,pc指针强制跳转到对应的中断服务函数入口,进入中断具有随机性,并不是某段代码对其进行调用,那么如果有返回值它的返回值返回给谁?显然这个返回值毫无意义,如果有返回值,它必定需要进行压栈操作,这样一来何时出栈怎么出栈将变得无法解决。
    2、不能向ISR(中断服务函数)传递参数。因为函数传递参数必定会要求压栈出栈操作,由于进入中断服务函数的随机行,谁给它传递参数都成问题
    3、ISR(中断服务函数)​尽可能的短小。中断时间如果过长会影响其他中断的接收响应。
    4、不能使用printf()打印。由于printf之类的glibc函数采用的是缓冲机制,这个缓冲区是共享的,相当于一个全局变量,第一层中断来时,它向缓冲里面写入一些部分内容,恰好这时来了个优先级更高的中断,它同样调用了printf,也向缓冲里面写入一些内容,这样缓冲区的内容就错乱了。

对寄存器某位置0或置1、

a |= 1 << 6 //置1
a &= ~(1 << 6) //置0​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值