串口初始化配置详解

这篇具有很好参考价值的文章主要介绍了串口初始化配置详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STC15系列单片机之串口初始化

什么是串口

简单理解就是一个电脑和单片机之间沟通的桥梁,从电脑角度考虑,我要发送信息给单片机,我需要什么,肯定是需要一个数据线对吧,将我要传给单片机的信息通过数据线发送过去,这就需要一个数据线端口,这个端口就是TXD,
那单片机要接受电脑传过来的值,那肯定需要一个插数据线的端口,用来接受数据值,这个端口就是RXD;反过来一样,单片机需要一个发送端口TXD,电脑需要一个接收端口RXD。
串口初始化配置详解
所以,如何使用串口进行发送数据和接收数据呢,现在开始跟我走,保证学会

第一步、看懂数据手册

原理篇

打开对应的数据手册,我用的是STC15W4K58S的数据手册,不过定时器一是通用型的,不影响初学者的理解(我也是初学者,所以我懂初学者的难,所以保证每一步都是小白步伐)
找到串行口通信章节,选择工作模式,建议刚开始学习选择(8位UART ,波特率可变)也就是模式一
串口初始化配置详解
串口初始化配置详解
这个原理的话去看下视频链接:(链接: link
不想看的我简单总结一下也很容易理解:发送时,将数据写入SBUF,然后打开发送控制器TI,这样一帧数据就传输完成了;接收时,数据进入移位寄存器,然后打开接收控制器开关RI。将数据写入SBUF,这时我们只需要读取这个SBUF中的值就行,一般处理方法就是将SBUF中的值放到一个数组中。
原理虽然很简单,但是配置对于初学者还是很难,我们一步一步走,

串口配置篇,

如果一步都不会,可以先用STC-ISP生成 一个 ,然后跟着配置
例如,我们要配置一个波特率为9600bsp,定时器模式选择1T,选用定时器1的16位自动重装载作为波特率发生器,然后选择复制代码到自己的程序中
串口初始化配置详解
当然这里面我们如果要使用串口中断,就要打开串口中断的开关ES =1和总中断开关EA =1;还可以配置优先级,PS = 0 / PS = 1;
串口初始化配置详解

自己一步一步配置篇

由于选择串行口一,就要打开串行口一的相关寄存器
串口初始化配置详解
我们需要根据串行口1的相关寄存器进行配置
按顺序有AUXR、SCON 、PCON、IE、IP,这些是关于串口的,还需要配置定时器的TCON 、TH、TL值,一共就配置这些(有的进行位操作就行,比如IE中的 EA =1(打开总中断),ES= 1,打开串口中断允许)
首先第一步SCON
串口初始化配置详解
可位寻址就是可以单独对某一个位进行赋值操作,比如TI = 1,
由数据手册可以得出我们要的值为方式一,SM0 = 0;SM1 = 1;SM2 =0 ,REN为是否接受应答,设置位允许 REN = 1,TB8和RB8为方式二和方式三的进行的操作,我们不用,即TB8= 0;RB8 = 0;T1和R1就是刚才前面提到的控制开关,发送或者接收完成由硬件自动置一,所以要软件置零,所以赋初值为0,所以SCON = 0101 0000 = 0X50
串口初始化配置详解
PCON 由于采用的串行口一,波特率不加倍,所以值为0000 0000,可写可不写,PCON = 0X00;
串口初始化配置详解
AUXR:采用不分频,这样速度较高,我们采用的是定时器1,所以T1x12 = 1
AUXR = 0100 0000 = 0X40,不过一般不这样写,因为如果对定时器二操作也采用直接赋值,就相当于再次给AUXR赋值00000100,将我们配置的定时器1不分频清除了,所以有
AUXR |= 0X40;//先逻辑或一下,这样就算再次传入值 逻辑或以后,我们的T1X12 =1 不变
串口初始化配置详解

AUXR &= 0XFE; 再与一个FE,FE = 1111 1110,就是将最低位清零,保证选择的是定时器1作为波特率发生器
串口初始化配置详解
TCON
学习到串口,定时器的配置应该是已经会了的,按照每一位进行配置就完事了

串口初始化配置详解
TH 和TL怎么算呢,以9600bsp举例
串口初始化配置详解
数据手册都会有计算方式
其中SYSCLK = 22118400HZ,波特率我们自己选择为9600
(65536-(65536-(22118400/(9600
4))= FDC0
那么TH = 0XFD
TL = 0XC0
至此,串口就配置完成,代码如下

void Uart1_Init(void)		//9600bps@22.1184MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xC0;			//设置定时初始值
	TH1 = 0xFD;			//设置定时初始值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
	ES  = 1;            //打开串口中断允许
	EA  = 1;            //打开总中断
}

如果引入串口中断的话就要知道中断号,如图所示
串口初始化配置详解

void Uart1_Isr(void) interrupt 4//函数名可以不一样,中断号必须为4
{
if(RI == 1)//接收完成后由硬件自动置一
{
	RI = 0;//由软件置零
}
}

困了困了,仅供学习,哪里错了可以私信我哦!文章来源地址https://www.toymoban.com/news/detail-460223.html

到了这里,关于串口初始化配置详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • android系列-init 初始化日志

    1.FirstStageMain 2.InitKernelLogging  3.KernelLogger  4.OpenKmsg 

    2024年02月02日
    浏览(15)
  • 【kubernetes系列】kubernetes之initcontainer初始化容器

    【kubernetes系列】kubernetes之initcontainer初始化容器

    Init Container就是用来做初始化工作的容器,可以是一个或者多个,如果有多个的话,这些容器会按定义的顺序依次执行,只有所有的Init Container执行完后,主容器才会被启动。我们知道一个Pod里面的所有容器是共享数据卷和网络命名空间的,所以Init Container里面产生的数据可以

    2024年02月12日
    浏览(10)
  • 【K8S系列】快速初始化⼀个最⼩集群

    【K8S系列】快速初始化⼀个最⼩集群

    走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记一级重要 蓝色 :用来标记二级重要 希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言

    2024年02月04日
    浏览(8)
  • C语言字符串初始化详解:用常量字符串进行字符数组初始化

    简介 字符串初始化 用常量字符串 初始化过程 示范代码 结论 在C语言中,字符串被定义为字符数组。字符串的初始化是指将一个常量字符串复制到字符数组中。本文将详细介绍字符串的初始化方法,并提供相应的示范代码。 在C语言中,有几种常用的方法可以用常量字符串来

    2024年02月15日
    浏览(19)
  • 【SpringBoot系列】初始化机制几种实现策略模式

    【SpringBoot系列】初始化机制几种实现策略模式

    前言 Spring Boot是一个用于快速构建基于Spring框架的应用程序的开发框架。 它提供了许多便捷的功能和特性,使得开发者可以更加高效地开发和部署应用程序。 其中,初始化策略是Spring Boot中一个重要的概念,它决定了应用程序在启动时如何进行初始化和配置。 本文将介绍S

    2024年02月07日
    浏览(15)
  • WPS二次开发系列:WPS SDK初始化

    本文将详细介绍WPS SDK初始化,帮您能够更好的在项目中接入WPS SDK实现自己的应用和WPS应用进行通信交互。 向WPS官方发送邮件申请,邮件格式如下 邮件模板: 发起人 :有需要申请接入WPS移动端的企业或者个人 邮件主题: XXX公司XXX项目---WPS Android端 SDK二次开发集成申请 邮件

    2024年04月16日
    浏览(10)
  • 路由器初始化配置、功能配置

    路由器初始化配置、功能配置

    部门 主机数量 网络地址 子网掩码 网关 可用ip Vlan 市场部 38 192.168.131.0 255.255.255.0 192.168.131.1 2-254 11 研发部 53 192.168.132.0 255.255.255.0 192.168.132.1 2-254 12 财务部 9 192.168.133.0 255.255.255.0 192.168.133.1 2-254 13 综合 12 192.168.134.0 255.255.255.0 192.168.134.1 2-254 14 后勤 25 192.168.135.0 255.255.255.0 192

    2024年01月18日
    浏览(9)
  • STC15系列单片机学习4:串口通讯

    STC15系列单片机学习4:串口通讯

    在使用单片机的串口前,得先知道所使用的单片机有几个串口,再结合你的硬件电路图来使用哪个串口。 以下是STC15各系列单片机的串口数量,STC15W4K32S4系列有4个串口 工作模式0:同步移位寄存器(官方建议初学者不学) 工作模式1:8位串口,波特率可变 工作模式2:9位串口

    2024年04月13日
    浏览(13)
  • 凝思系统安装及初始化配置

    凝思系统安装及初始化配置

    我本次使用的是浪潮塔式服务器,配置如下: [浪潮塔式服务器][130101101200095X][NP5570系列|Intel至强银牌(8核16线2.1GHz)CPU 2|16GB内存 2|2TB硬盘 1|4GB独显 1|千百兆网口 4|500W电源 1|键盘鼠标 1|内置DVD 1] 浪潮服务器官网地址:https://www.inspur.com/eportal/ui?pageId=2317460type=2 官方镜像下载地址:

    2024年02月12日
    浏览(30)
  • DPDK系列之二十八内存分配启动和初始化

    在前面对DPDK中的内存进行了各个模块的分析,这次开始整体流程的分析说明。重点是分析一下内存从开始准备到最终应用的过程,从而把各个分别讲的模板贯穿起来,从而能够更好的了解和认识DPDK中内存的使用。 DPDK中,启动时对内存的处理如下: 1、大页内存的处理 这个在

    2024年02月10日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包