文章目录

  • 前言
  • 中断的方式发送数据
  • 代码示例
    • 准备工作
    • 宏定义及全局变量
    • 初始化
    • 中断服务函数
    • ==发送逻辑函数==
    • 启动发送函数
  • 总结

前言

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

中断的方式发送数据

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

先来看看SC92F846XB的规格书

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

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

#mermaid-svg-swZCRECQUNKe7PXI .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-swZCRECQUNKe7PXI .label text{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .node rect,#mermaid-svg-swZCRECQUNKe7PXI .node circle,#mermaid-svg-swZCRECQUNKe7PXI .node ellipse,#mermaid-svg-swZCRECQUNKe7PXI .node polygon,#mermaid-svg-swZCRECQUNKe7PXI .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-swZCRECQUNKe7PXI .node .label{text-align:center;fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .node.clickable{cursor:pointer}#mermaid-svg-swZCRECQUNKe7PXI .arrowheadPath{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-swZCRECQUNKe7PXI .flowchart-link{stroke:#333;fill:none}#mermaid-svg-swZCRECQUNKe7PXI .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-swZCRECQUNKe7PXI .edgeLabel rect{opacity:0.9}#mermaid-svg-swZCRECQUNKe7PXI .edgeLabel span{color:#333}#mermaid-svg-swZCRECQUNKe7PXI .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-swZCRECQUNKe7PXI .cluster text{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-swZCRECQUNKe7PXI .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-swZCRECQUNKe7PXI text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-swZCRECQUNKe7PXI .actor-line{stroke:grey}#mermaid-svg-swZCRECQUNKe7PXI .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-swZCRECQUNKe7PXI .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-swZCRECQUNKe7PXI #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-swZCRECQUNKe7PXI .sequenceNumber{fill:#fff}#mermaid-svg-swZCRECQUNKe7PXI #sequencenumber{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI #crosshead path{fill:#333;stroke:#333}#mermaid-svg-swZCRECQUNKe7PXI .messageText{fill:#333;stroke:#333}#mermaid-svg-swZCRECQUNKe7PXI .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-swZCRECQUNKe7PXI .labelText,#mermaid-svg-swZCRECQUNKe7PXI .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-swZCRECQUNKe7PXI .loopText,#mermaid-svg-swZCRECQUNKe7PXI .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-swZCRECQUNKe7PXI .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-swZCRECQUNKe7PXI .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-swZCRECQUNKe7PXI .noteText,#mermaid-svg-swZCRECQUNKe7PXI .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-swZCRECQUNKe7PXI .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-swZCRECQUNKe7PXI .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-swZCRECQUNKe7PXI .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-swZCRECQUNKe7PXI .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .section{stroke:none;opacity:0.2}#mermaid-svg-swZCRECQUNKe7PXI .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-swZCRECQUNKe7PXI .section2{fill:#fff400}#mermaid-svg-swZCRECQUNKe7PXI .section1,#mermaid-svg-swZCRECQUNKe7PXI .section3{fill:#fff;opacity:0.2}#mermaid-svg-swZCRECQUNKe7PXI .sectionTitle0{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .sectionTitle1{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .sectionTitle2{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .sectionTitle3{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-swZCRECQUNKe7PXI .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .grid path{stroke-width:0}#mermaid-svg-swZCRECQUNKe7PXI .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-swZCRECQUNKe7PXI .task{stroke-width:2}#mermaid-svg-swZCRECQUNKe7PXI .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .taskText:not([font-size]){font-size:11px}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-swZCRECQUNKe7PXI .task.clickable{cursor:pointer}#mermaid-svg-swZCRECQUNKe7PXI .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-swZCRECQUNKe7PXI .taskText0,#mermaid-svg-swZCRECQUNKe7PXI .taskText1,#mermaid-svg-swZCRECQUNKe7PXI .taskText2,#mermaid-svg-swZCRECQUNKe7PXI .taskText3{fill:#fff}#mermaid-svg-swZCRECQUNKe7PXI .task0,#mermaid-svg-swZCRECQUNKe7PXI .task1,#mermaid-svg-swZCRECQUNKe7PXI .task2,#mermaid-svg-swZCRECQUNKe7PXI .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutside0,#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutside2{fill:#000}#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutside1,#mermaid-svg-swZCRECQUNKe7PXI .taskTextOutside3{fill:#000}#mermaid-svg-swZCRECQUNKe7PXI .active0,#mermaid-svg-swZCRECQUNKe7PXI .active1,#mermaid-svg-swZCRECQUNKe7PXI .active2,#mermaid-svg-swZCRECQUNKe7PXI .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-swZCRECQUNKe7PXI .activeText0,#mermaid-svg-swZCRECQUNKe7PXI .activeText1,#mermaid-svg-swZCRECQUNKe7PXI .activeText2,#mermaid-svg-swZCRECQUNKe7PXI .activeText3{fill:#000 !important}#mermaid-svg-swZCRECQUNKe7PXI .done0,#mermaid-svg-swZCRECQUNKe7PXI .done1,#mermaid-svg-swZCRECQUNKe7PXI .done2,#mermaid-svg-swZCRECQUNKe7PXI .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-swZCRECQUNKe7PXI .doneText0,#mermaid-svg-swZCRECQUNKe7PXI .doneText1,#mermaid-svg-swZCRECQUNKe7PXI .doneText2,#mermaid-svg-swZCRECQUNKe7PXI .doneText3{fill:#000 !important}#mermaid-svg-swZCRECQUNKe7PXI .crit0,#mermaid-svg-swZCRECQUNKe7PXI .crit1,#mermaid-svg-swZCRECQUNKe7PXI .crit2,#mermaid-svg-swZCRECQUNKe7PXI .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-swZCRECQUNKe7PXI .activeCrit0,#mermaid-svg-swZCRECQUNKe7PXI .activeCrit1,#mermaid-svg-swZCRECQUNKe7PXI .activeCrit2,#mermaid-svg-swZCRECQUNKe7PXI .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-swZCRECQUNKe7PXI .doneCrit0,#mermaid-svg-swZCRECQUNKe7PXI .doneCrit1,#mermaid-svg-swZCRECQUNKe7PXI .doneCrit2,#mermaid-svg-swZCRECQUNKe7PXI .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-swZCRECQUNKe7PXI .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-swZCRECQUNKe7PXI .milestoneText{font-style:italic}#mermaid-svg-swZCRECQUNKe7PXI .doneCritText0,#mermaid-svg-swZCRECQUNKe7PXI .doneCritText1,#mermaid-svg-swZCRECQUNKe7PXI .doneCritText2,#mermaid-svg-swZCRECQUNKe7PXI .doneCritText3{fill:#000 !important}#mermaid-svg-swZCRECQUNKe7PXI .activeCritText0,#mermaid-svg-swZCRECQUNKe7PXI .activeCritText1,#mermaid-svg-swZCRECQUNKe7PXI .activeCritText2,#mermaid-svg-swZCRECQUNKe7PXI .activeCritText3{fill:#000 !important}#mermaid-svg-swZCRECQUNKe7PXI .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-swZCRECQUNKe7PXI g.classGroup text .title{font-weight:bolder}#mermaid-svg-swZCRECQUNKe7PXI g.clickable{cursor:pointer}#mermaid-svg-swZCRECQUNKe7PXI g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-swZCRECQUNKe7PXI g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-swZCRECQUNKe7PXI .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-swZCRECQUNKe7PXI .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-swZCRECQUNKe7PXI .dashed-line{stroke-dasharray:3}#mermaid-svg-swZCRECQUNKe7PXI #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI .commit-id,#mermaid-svg-swZCRECQUNKe7PXI .commit-msg,#mermaid-svg-swZCRECQUNKe7PXI .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-swZCRECQUNKe7PXI g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-swZCRECQUNKe7PXI g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-swZCRECQUNKe7PXI g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-swZCRECQUNKe7PXI .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-swZCRECQUNKe7PXI .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-swZCRECQUNKe7PXI .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-swZCRECQUNKe7PXI .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-swZCRECQUNKe7PXI .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-swZCRECQUNKe7PXI .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-swZCRECQUNKe7PXI .edgeLabel text{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-swZCRECQUNKe7PXI .node circle.state-start{fill:black;stroke:black}#mermaid-svg-swZCRECQUNKe7PXI .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-swZCRECQUNKe7PXI #statediagram-barbEnd{fill:#9370db}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-state .divider{stroke:#9370db}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-swZCRECQUNKe7PXI .note-edge{stroke-dasharray:5}#mermaid-svg-swZCRECQUNKe7PXI .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-swZCRECQUNKe7PXI .error-icon{fill:#522}#mermaid-svg-swZCRECQUNKe7PXI .error-text{fill:#522;stroke:#522}#mermaid-svg-swZCRECQUNKe7PXI .edge-thickness-normal{stroke-width:2px}#mermaid-svg-swZCRECQUNKe7PXI .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-swZCRECQUNKe7PXI .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-swZCRECQUNKe7PXI .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-swZCRECQUNKe7PXI .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-swZCRECQUNKe7PXI .marker{fill:#333}#mermaid-svg-swZCRECQUNKe7PXI .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-swZCRECQUNKe7PXI {color: rgba(0, 0, 0, 0.75);font: ;}

1.向串口数据寄存器写入数据
2.物理层面发送数据,软件执行其它任务
3.物理层面发送完毕,TI置位,进入发送中断服务函数
4.TI标志位清0,由内部逻辑决定继续发送或者停止发送

整个发送的过程其实非常简单和顺畅,而且单片机的效率也能达到最高。
再来对比下查询的方式进行发送:

#mermaid-svg-VKYVZL7ClDmbEjGk .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .label text{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .node rect,#mermaid-svg-VKYVZL7ClDmbEjGk .node circle,#mermaid-svg-VKYVZL7ClDmbEjGk .node ellipse,#mermaid-svg-VKYVZL7ClDmbEjGk .node polygon,#mermaid-svg-VKYVZL7ClDmbEjGk .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VKYVZL7ClDmbEjGk .node .label{text-align:center;fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .node.clickable{cursor:pointer}#mermaid-svg-VKYVZL7ClDmbEjGk .arrowheadPath{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-VKYVZL7ClDmbEjGk .flowchart-link{stroke:#333;fill:none}#mermaid-svg-VKYVZL7ClDmbEjGk .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-VKYVZL7ClDmbEjGk .edgeLabel rect{opacity:0.9}#mermaid-svg-VKYVZL7ClDmbEjGk .edgeLabel span{color:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-VKYVZL7ClDmbEjGk .cluster text{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-VKYVZL7ClDmbEjGk .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VKYVZL7ClDmbEjGk text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-VKYVZL7ClDmbEjGk .actor-line{stroke:grey}#mermaid-svg-VKYVZL7ClDmbEjGk .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-VKYVZL7ClDmbEjGk #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .sequenceNumber{fill:#fff}#mermaid-svg-VKYVZL7ClDmbEjGk #sequencenumber{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk #crosshead path{fill:#333;stroke:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .messageText{fill:#333;stroke:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VKYVZL7ClDmbEjGk .labelText,#mermaid-svg-VKYVZL7ClDmbEjGk .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-VKYVZL7ClDmbEjGk .loopText,#mermaid-svg-VKYVZL7ClDmbEjGk .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-VKYVZL7ClDmbEjGk .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-VKYVZL7ClDmbEjGk .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VKYVZL7ClDmbEjGk .noteText,#mermaid-svg-VKYVZL7ClDmbEjGk .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-VKYVZL7ClDmbEjGk .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-VKYVZL7ClDmbEjGk .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-VKYVZL7ClDmbEjGk .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-VKYVZL7ClDmbEjGk .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .section{stroke:none;opacity:0.2}#mermaid-svg-VKYVZL7ClDmbEjGk .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-VKYVZL7ClDmbEjGk .section2{fill:#fff400}#mermaid-svg-VKYVZL7ClDmbEjGk .section1,#mermaid-svg-VKYVZL7ClDmbEjGk .section3{fill:#fff;opacity:0.2}#mermaid-svg-VKYVZL7ClDmbEjGk .sectionTitle0{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .sectionTitle1{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .sectionTitle2{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .sectionTitle3{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-VKYVZL7ClDmbEjGk .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .grid path{stroke-width:0}#mermaid-svg-VKYVZL7ClDmbEjGk .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-VKYVZL7ClDmbEjGk .task{stroke-width:2}#mermaid-svg-VKYVZL7ClDmbEjGk .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .taskText:not([font-size]){font-size:11px}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-VKYVZL7ClDmbEjGk .task.clickable{cursor:pointer}#mermaid-svg-VKYVZL7ClDmbEjGk .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VKYVZL7ClDmbEjGk .taskText0,#mermaid-svg-VKYVZL7ClDmbEjGk .taskText1,#mermaid-svg-VKYVZL7ClDmbEjGk .taskText2,#mermaid-svg-VKYVZL7ClDmbEjGk .taskText3{fill:#fff}#mermaid-svg-VKYVZL7ClDmbEjGk .task0,#mermaid-svg-VKYVZL7ClDmbEjGk .task1,#mermaid-svg-VKYVZL7ClDmbEjGk .task2,#mermaid-svg-VKYVZL7ClDmbEjGk .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutside0,#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutside2{fill:#000}#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutside1,#mermaid-svg-VKYVZL7ClDmbEjGk .taskTextOutside3{fill:#000}#mermaid-svg-VKYVZL7ClDmbEjGk .active0,#mermaid-svg-VKYVZL7ClDmbEjGk .active1,#mermaid-svg-VKYVZL7ClDmbEjGk .active2,#mermaid-svg-VKYVZL7ClDmbEjGk .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-VKYVZL7ClDmbEjGk .activeText0,#mermaid-svg-VKYVZL7ClDmbEjGk .activeText1,#mermaid-svg-VKYVZL7ClDmbEjGk .activeText2,#mermaid-svg-VKYVZL7ClDmbEjGk .activeText3{fill:#000 !important}#mermaid-svg-VKYVZL7ClDmbEjGk .done0,#mermaid-svg-VKYVZL7ClDmbEjGk .done1,#mermaid-svg-VKYVZL7ClDmbEjGk .done2,#mermaid-svg-VKYVZL7ClDmbEjGk .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-VKYVZL7ClDmbEjGk .doneText0,#mermaid-svg-VKYVZL7ClDmbEjGk .doneText1,#mermaid-svg-VKYVZL7ClDmbEjGk .doneText2,#mermaid-svg-VKYVZL7ClDmbEjGk .doneText3{fill:#000 !important}#mermaid-svg-VKYVZL7ClDmbEjGk .crit0,#mermaid-svg-VKYVZL7ClDmbEjGk .crit1,#mermaid-svg-VKYVZL7ClDmbEjGk .crit2,#mermaid-svg-VKYVZL7ClDmbEjGk .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-VKYVZL7ClDmbEjGk .activeCrit0,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCrit1,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCrit2,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-VKYVZL7ClDmbEjGk .doneCrit0,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCrit1,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCrit2,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-VKYVZL7ClDmbEjGk .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-VKYVZL7ClDmbEjGk .milestoneText{font-style:italic}#mermaid-svg-VKYVZL7ClDmbEjGk .doneCritText0,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCritText1,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCritText2,#mermaid-svg-VKYVZL7ClDmbEjGk .doneCritText3{fill:#000 !important}#mermaid-svg-VKYVZL7ClDmbEjGk .activeCritText0,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCritText1,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCritText2,#mermaid-svg-VKYVZL7ClDmbEjGk .activeCritText3{fill:#000 !important}#mermaid-svg-VKYVZL7ClDmbEjGk .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-VKYVZL7ClDmbEjGk g.classGroup text .title{font-weight:bolder}#mermaid-svg-VKYVZL7ClDmbEjGk g.clickable{cursor:pointer}#mermaid-svg-VKYVZL7ClDmbEjGk g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VKYVZL7ClDmbEjGk g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-VKYVZL7ClDmbEjGk .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-VKYVZL7ClDmbEjGk .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VKYVZL7ClDmbEjGk .dashed-line{stroke-dasharray:3}#mermaid-svg-VKYVZL7ClDmbEjGk #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk .commit-id,#mermaid-svg-VKYVZL7ClDmbEjGk .commit-msg,#mermaid-svg-VKYVZL7ClDmbEjGk .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-VKYVZL7ClDmbEjGk g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-VKYVZL7ClDmbEjGk g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VKYVZL7ClDmbEjGk g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VKYVZL7ClDmbEjGk .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VKYVZL7ClDmbEjGk .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-VKYVZL7ClDmbEjGk .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-VKYVZL7ClDmbEjGk .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VKYVZL7ClDmbEjGk .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-VKYVZL7ClDmbEjGk .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-VKYVZL7ClDmbEjGk .edgeLabel text{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VKYVZL7ClDmbEjGk .node circle.state-start{fill:black;stroke:black}#mermaid-svg-VKYVZL7ClDmbEjGk .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-VKYVZL7ClDmbEjGk #statediagram-barbEnd{fill:#9370db}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-state .divider{stroke:#9370db}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-VKYVZL7ClDmbEjGk .note-edge{stroke-dasharray:5}#mermaid-svg-VKYVZL7ClDmbEjGk .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-VKYVZL7ClDmbEjGk .error-icon{fill:#522}#mermaid-svg-VKYVZL7ClDmbEjGk .error-text{fill:#522;stroke:#522}#mermaid-svg-VKYVZL7ClDmbEjGk .edge-thickness-normal{stroke-width:2px}#mermaid-svg-VKYVZL7ClDmbEjGk .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-VKYVZL7ClDmbEjGk .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-VKYVZL7ClDmbEjGk .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-VKYVZL7ClDmbEjGk .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-VKYVZL7ClDmbEjGk .marker{fill:#333}#mermaid-svg-VKYVZL7ClDmbEjGk .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-VKYVZL7ClDmbEjGk {color: rgba(0, 0, 0, 0.75);font: ;}

1.向串口数据寄存器写入数据
2.物理层面发送数据,软件阻塞在while中等待标志位置位
3.标志位置位,由内部逻辑决定继续发送或者停止发送

从流程图中应该会比较容易看出这两种发送方式的区别。采用中断方式发送时,可以说全是优点,莫得缺点~

代码示例

本文主要是为了解决网友的问题,再搞清楚中断发送这件事后,以三合一串口为例,从初始化开始,到发送一帧数据结束,来完整的演示一下。

准备工作

前提条件:需要在main()函数中定时调用uart1_start_trans()函数,推荐500ms,1000ms。
实验现象:每间隔一次定时时长,会在串口助手中接收到data_for_tx中的数据。

宏定义及全局变量

//相关宏定义
#define SYSTEM_CLK                  ((unsigned long int)12000000)
#define UART1_BAUD_9600_LOAD_VALUE  9600static u8 data_for_tx[5] = {0x11, 0x22, 0x33, 0x44, 0x55}; //定义一个待发送数据的数组

初始化

/*************************************************************/
/*函数名:hw_uart1_init
/*输  入:无
/*输  出:无
/*功  能:初始化串口1的IO口,波特率9600并开启中断;
/*************************************************************/
void hw_uart1_init(void)
{P2CON &= 0xFC;                                            //TX/RX设置为输入带上拉P2PH  |= 0x03;OTCON |= 0xC0;                                               //串行接口SSI选择Uart1通信SSCON0 = 0x50;                                               //设置通信方式为模式一,允许接收SSCON1 = SYSTEM_CLK/UART1_BAUD_9600_LOAD_VALUE;            //波特率低位控制SSCON2 = (SYSTEM_CLK/UART1_BAUD_9600_LOAD_VALUE)>>8;        //波特率高位控制IE1 |= 0x01;                                                  //开启SSI中断IP1 |= 0x01;                                              //中断优先级设置为高EA = 1;
}

这部分没啥可说的,就是按照示例代码和规格书写的。

中断服务函数

/*************************************************************/
/*函数名:uart1_isr
/*输  入:无
/*输  出:无
/*功  能:串口1中断服务函数,以中断方式进行收发;
/*************************************************************/
void uart1_isr(void)    interrupt 7
{u8 temp_char = 0;if(SSCON0&0x02)                      //发送标志位判断{SSCON0 &= 0xFD;                  //清中断uart1_send_data();             //发送逻辑}if((SSCON0&0x01))                    //接收标志位判断{SSCON0 &= 0xFE;                  //清中断temp_char = SSDAT;uart1_receive_data(temp_char);  //接收逻辑  }
}

中断服务函数其实是很简洁的,这里不再介绍接收逻辑的编写,只说发送逻辑的函数,以中断方式发送数据的重点也在这里~

发送逻辑函数

/*************************************************************/
/*函数名:uart1_send_data
/*输  入:无
/*输  出:无
/*功  能:发送逻辑判断,控制发送数据;
/*************************************************************/
void uart1_send_data(void)
{static u8 index = 0;              //函数内部局部变量,用做待发送数组的下标if(index>=5){index = 0;}else{SSDAT = data_for_tx[index++];}
}

分析一下这个过程:index的初始值为0,在发送逻辑函数中,会将data_for_tx[0]写入数据寄存器,物理层会发送data_for_tx[0],index变为1;发送完毕后,便会再次进入发送中断函数,调用在发送逻辑函数时,会将data_for_tx[1]写入数据寄存器,物理层会发送data_for_tx[1],index变为2,循环几次后index变为5时,data_for_tx数组中的5个元素都已经发送完毕了(即这一帧数据发送完毕),这时已经不需要再发送了,需要做的仅仅是将index给清零,等待main函数中启动下一帧数据的发送。
以上是理解发送中断的重点,一遍看不懂就多看几遍,也可以自己动手画一画流程图。

启动发送函数

/*************************************************************/
/*函数名:uart1_start_trans
/*输  入:无
/*输  出:无
/*功  能:启动串口1发送;
/*************************************************************/
void uart1_start_trans(void)
{SSCON0 |= 0x02;       //手动置位发送中断标志位,进入发送中断,启动发送
}

总结

以上便是此篇文章的全部内容,不仅仅是三合一串口的使用,更是介绍了中断方式发送数据这种方式,掌握它,很有必要。
如果本文对你有用,请点个赞吧,这是对我莫大的支持,当然也更欢迎评论区留言讨论以及收藏哦~
祝:变得更强!

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

  1. 赛元单片机触摸按键调节及避坑指南(以SC92F8461B的高灵敏触摸为例)

    目录 前言 流程总览 步骤说明 1.烧录官方高灵敏hex文件 2.目标板连接电脑并选择初始参数 3.参数调整 4.验证相互间影响 5.将配置信添加到工程 6.灵活调整 总结 前言 项目中前前后后用到过 ...

  2. K_A11_002 基于STM32等单片机驱动DS18B20串口与OLED0.96双显示

    K_A11_002 基于STM32等单片机驱动DS18B20 串口与OLED0.96双显示 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 时序 对应程序: 四.部分代码说明 1.接 ...

  3. STM32串口发送中断

    SECTION 2 先说TC.即Transmission Complete.发送一个字节后才进入中断,这里称为"发送后中断".和原来8051的TI方式一样,都是发送后才进中断,需要 ...

  4. 赛元单片机SC92F732x系列printf函数构造[以7321为例]

    先放效果图: 再放代码部分: 首先本代码依据赛元官方DEMO代码所作修改,官方地址:赛元芯片官方DEMO 我所修改""Uart_Init.c部分: #include "H ...

  5. STM32串口发送中断踩坑

    今天想测试下Modbus设备,手上暂时没有串口转485的模块,就打算用手上的stm32f042的开发板做个串口转485模块.如下所示 但是软件实际开发过程中,遇到了麻烦. 现象: 在打开串口接收中断时 ...

  6. windows 串口编程 c语言,windows下C语言版串口发送程序(基于VS2017)

    #include "tchar.h" #include int main() { /*****************************打开串口*************** ...

  7. 赛元单片机-触摸库使用总结

    SC95F8617触摸库使用笔记 一.资料概述 主要参考资料:<赛元SC95F系列TouchKey MCU 应用指南v0.0.1.pdf>.资料包链接如下: 1.我下载时的地址: SC95 ...

  8. 赛元单片机SC92F732x系列eeprom读写操作[以7321为例]

    目标:在0x0E区域写入0x20,在0x2E区域写入0x21,在0x4E区域写入0x22 先放效果图: 断电后,将写入程序删掉,再上电: 代码部分: 首先本代码依据赛元官方DEMO代码所作修改,官方地 ...

  9. 赛元单片机 keil 插件安装失败解决方法

    安装完 赛元的keil插件之后还是弹出以下画面同时无法找到 对应mcu,解决方法如下: 1.将以下这个字段像有d:keil\C51 这类的字段去掉只保留 SinOne_Chip之后的部分目录, 2.然 ...

最新文章

  1. 设置maxJsonLength,解决ajax通过POST方式调用.net的webService时,数据过长时服务器返回500错误的问题
  2. 程序员必备的 10 大 GitHub 仓库
  3. java实体类如果不重写toString方法,会如何?
  4. Android 渗透测试学习手册 第五章 Android 取证
  5. Lync Server 2010迁移至Lync Server 2013部署系列 Part7:配置Office Web App 02
  6. php mysql商品数量购买减少_PHP+Redis+MySQL商品秒杀与超卖讲解
  7. CentOS 6系统FreeSwitch和RTMP服务 安装及演示(三)
  8. 4款好用的文献翻译工具推荐
  9. Servlet的原理和基础使用
  10. pycharm下django实战
  11. 二叉树的非递归遍历实现
  12. USB大容量存储类规范概述
  13. 【Git】fatal: Unable to create ‘.git/index.lock’: File exists.
  14. Mahalanobis(马哈拉诺比斯)距离
  15. bug:Bus error的解决方法(zz)
  16. SEO逆东子站生成和权重站提交工具
  17. android 8.0+后台Service限制
  18. 语音对话声空计算机APP,空空语音app
  19. linux yield_通俗易懂的了解——Linux线程模型和线程切换
  20. 计算机专业游戏本后悔,毕业了,到底要不要买游戏笔记本电脑?好多人买了都后悔了?...

热门文章

  1. 刀魔王带你了解QDC五金模的几种分类
  2. 等保三级认证基本要求
  3. 关于嵌入式系统的学习路线图
  4. 数据仓库实践杂谈-(二)-数据分层
  5. 从PS视频流中提取H264数据
  6. POI导入模板,下载表格接口
  7. 修复苹果电脑Mac上出现的错误代码100006的问题
  8. 机器学习实战之路 —— 5 SVM支持向量机
  9. matlab hilbert 包络,hilbert取包络matlab
  10. CLR via C#(05)- 访问限定、数据成员