【单片机期末】串行口循环缓冲区发送

串行口分为正在发送数据和空闲状态

单片机的程序可以分为两种:主程序和中断服务程序,其中主程序可以被中断服务程序打断。

一个字节 = 8位,单片机是10位的UART。

对于51单片机,先发送低位D0再发送高位。

起始位是低电平,结束位是高电平

如果往串行口内发送了数据,那么会导致中断再次产生,如果没有往串行口里发送数据,则主程序中就不会再次产生中断。

如果要送出7个数字,就将UARTSave_Index从5变成7。

主程序什么时候知道有数据要往外发送?

触发串行口中断就会进入到中断服务程序中。

主程序中将UARTSend_State置为1

相等时,

将UARTSend_State置为0

串行口循环缓冲区的方式非常难理解,这是一个主程序和中断服务程序相互交织的过程。

每次触发中断服务程序后,UARTSend_Index会加1

缓冲区的大小已知是16个

回环的目的是让头和尾相接,因为能实现回环,所以可以实现缓冲区不停地被重复利用,相当于是一个无穷大的缓冲区。
​​​​​​​

相关推荐
宵时待雨15 分钟前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
逐步前行15 分钟前
STM32_新建工程(寄存器版)
stm32·单片机·嵌入式硬件
m0_7190841136 分钟前
React笔记张天禹
前端·笔记·react.js
Ziky学习记录1 小时前
从零到实战:React Router 学习与总结
前端·学习·react.js
bai5459361 小时前
STM32 CubeIDE 通过PWM占空比控制舵机角度
stm32·单片机·嵌入式硬件
sensen_kiss1 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习
red_redemption2 小时前
自由学习记录(116)
学习
松涛和鸣2 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂3 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
r i c k3 小时前
数据库系统学习笔记
数据库·笔记·学习