【串口发送中断】基于赛元单片机使用三合一串口的UART功能

前言

关于赛元单片机触摸的那篇文章确实帮助到过一些网友,后来有网友私信说赛元单片机的三合一串口功能遇到了问题,考虑到我之前的项目中用到过这个串口,也调通了,便想写下这篇文章,目的是帮助遇到问题的网友,以及记录学习的过程。
所用单片机型号:SC92F8463B(同系列的都可以参考本篇文章),主频:12Mhz
之前用过STM32F103C8T6的单片机,在那次的使用经历中,第一次了解并学习到了串口的使用方法,当时的项目中,参考的是原子哥的示例代码进行串口的收发,后面测试的过程中,发现串口功能会影响到其它的功能。在老工程师的指导下,才了解到,原子哥的串口发送方式是不太适用于工作中的项目的,原因也很简单,以阻塞的方式发送数据帧,再说直白一点,通过while()查询标志位以此完成数据的发送。
因此,我便想先介绍一种不一样的数据发送方式!

中断的方式发送数据

使用串口时,经常会用到以中断的方式接受数据,但很少使用以中断的方式发送数据,网上相关的资料也很少。但是这是一种非常好的方式,特别是在实际的工作中,会更加深刻的体会到这一点。而且不论是51单片机还是基于ARM的单片机,我所使用过的单片机都能以中断的方式发送数据。

先来看看SC92F846XB的规格书
在这里插入图片描述
在这里插入图片描述

PS:这里我截的是UART0的相关寄存器,而不是三合一串口的,因为三合一串口没有解释的这么清楚,但是我在实际使用时,发现三合一串口和UART0一样,都没什么区别,一样有发送中断的功能,只是寄存器不一样而已。

先看第一幅图中红框里的内容:发送和接收完成时可产生中断RI/TI,该中断标志需要软件清除
接收就不说了,用过串口的都清楚这个方式,主要说发送,我来大致描述一下以中断发送数据这个过程:

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值