历史上的今天
返回首页

历史上的今天

今天是:2025年12月08日(星期一)

正在发生

2022年12月08日 | 单片机数据通信怎么学?这个工具要用好:串口通信

2022-12-08 来源:zhihu

刚开始学单片机的你,是不是会因用程序把LED点亮而感到高兴,会因用程序把数码管点亮而感到高兴。这是好事,这也是想继续学习下去的动力。


但是到了与数据相关的实验时,却感觉很难有所进步。有时候,把驱动写好了,下载到单片机后,一点反应都没有,可是又不知道问题出在哪里,数据通信又不像LED那样可以用万用表测出到底有没有电。


这是学习单片机和STM32的一道坎。又或者说,这是一条河,阻拦着你的去路的河,有一条河你会怎么办?过去的方法很多,但是笔者觉得较快的方法就是借助原有工具渡过去。过去之后你会发现河的那边是一个不一样的世界。


那这个原有的工具是什么呢?那就是"串口通信"。

串口通信介绍

串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式......这种太过理论了,看似懂了,但又不懂。还是用我笔者自己的话来说吧。

串口通信就是可以把程序在单片机或者STM32芯片中运行的结果发送到电脑的一种通信方式。如何使用串口通讯,你需要知道的几个重要的知识点:

  • 1.波特率。(数据传输的速度,两个设备在通信时的速度要设置成一样,否则会出现乱码)。

  • 2.硬件连接。串口通信是一种异步通信,一般都是TX->RX,RX->TX。

  • 3.停止位。

  • 4.奇偶校验。

  • 5.硬件数据流。

3、4、5,这几项一般不需要改变,所以在这就不用多说了。
串口作用

串口能用来做什么事情?

学过C语言的人都知道,程序开发需要不断调试不断验证。很多的语言编程软件都有很完整的程序调试功能。使用起来很方便。而我们的开发虽然也是用C语言,但我们的程序最终运行的环境不是在我们的开平台而是在真正的硬件系统中运行。这时想要查看程序的运行过程或者结果就不像编程软件那么方便了。


想要解决这个问题,我们这时就可以借助串口通信来把我们需要知道的结果又或者是程序运行的关键步骤发送到电脑上,我们就知道程序在硬件系统中运行是否出现问题。51单片机可以用串口来调试,STM32可以用串口来调试。高级一点的LINUX开发板也是使用串口来调试。


学会串口通信能做什么

当你学会串口通信时,你可以开始玩WIFI模块、GSM模块、蓝牙模块、GPS模块、以及各种使用串口通信的传感器等等。有能力你还可以编写上位机软件通过串口通信来控制设备。


串口通信需要什么

如果你只有STM32核心板,那么你还需要一个串口转USB模块和一个串口数据接收软件还有几根杜邦线就可以了。如果你的是比较完整的一款开发板的话,一般都已经带有串口转USB模块,这样使用起来就更简单了。聪明的你是不是发现还缺少了点什么,对。没错因为还缺少了最重要的程序。想要使用串口通信当然还需要写串口通信的程序。下面就教你如何去用,而不是写。


串口实验

在做一个实验时,最好把这个实验分割成几个关键的步骤,这样做的好处就是可以清晰的知道自己需要做什么,以及做完了哪些。还有哪些还没做。下面笔者把串口实验分成几个关键的步骤:

1)串口通信使用到的GPIO引脚配置

STM32F103系列的芯片一般都有三个串口以上,用来调试使用的串口一般都是使用USART1。其他的串口配置都是一样的。

下面这段就是串口配置的程序:

串口使用的的GPIO口是PA9和PA10,所以只需配置这两个IO口的输入输出模式就可以了。

2)串口主要参数设置(直接看程序)

串口参数配置无法就是配置串口的波特率、数据格式、停止位、奇偶校验、硬件流、收发模式。除了波特率需要改变其他的参数都不需要管。直接复制拿来用。
3)串口中断配置

串口如果使用中断接收,那么就需要配置串口的中断参数,配置项无法就是配置那个的中断源和中断的优先级。

4)串口使能

就是你需要什么时候开始使用串口功能,就是一句原有的函数。

5)编写串口中断处理函数

使用库函数开发,所有的中断函数都是已经存在的,只是中断函数里面没有处理任何事情而已。中断函数如下:

完整的串口中断函数:

串口数据的接收和发送的函数都是库函数提供的,想用时只需找到它直接拿来用就可以了。

以上就完成了一个最简单的串口实验。把程序编译烧写到STM32然后用串口转USB模块连接到电脑,使用串口数据接收软件SSCOM或其他的数据接收软件设置好波特率,打开串口,正常的话,那发送什么到STM32那就会收到什么。这样就算完成了。

这次就说到这了,如果有开发板的配套例程可以先使用,用多了,慢慢就理解了。这篇文章主要想说明串口的重要性。用串口来调试真的方便很多。


推荐阅读

史海拾趣

High Voltage Power Solutions Inc公司的发展小趣事

机顶盒,全称为数字视频变换盒,是连接电视机与外部信号源的关键设备,其专业性与科普性并重。作为现代家庭娱乐的重要组成部分,机顶盒不仅实现了从模拟信号到数字信号的转换,还极大地丰富了电视节目的选择与观看体验。

从广义上讲,机顶盒涵盖了各种与电视机连接的网络终端设备,包括早期的模拟频道增补器、上网机顶盒,以及当前广泛应用的数字卫星机顶盒、有线电视数字机顶盒和IPTV机顶盒等。这些设备通过接收、解码和显示三个主要步骤,将来自不同传输介质的数字信号转换为适合电视机播放的格式。

从技术层面看,机顶盒集成了高性能的解调器、解码器和处理器,能够接收并处理来自有线电缆、卫星天线、宽带网络及地面广播的高清、甚至超高清视频信号,为用户带来细腻的画面与震撼的音效。同时,机顶盒还具备网络交互功能,支持在线购物、网页浏览、视频点播等多元化服务,使电视机从单向接收信息的设备转变为智能终端。

展望未来,随着高清、超高清技术的普及以及人工智能、云计算等技术的融入,机顶盒将向智能化、多功能化方向发展,为用户提供更加便捷、个性化的观看体验。在智能电视普及的背景下,机顶盒作为有效补充和扩展,将继续在特定应用场景下发挥不可替代的作用,推动家庭娱乐的多元化发展。

ABL Aluminum Components公司的发展小趣事

为了进一步提升竞争力,ABL公司开始实施国际化发展战略。公司首先在海外市场设立了销售分支机构,积极开拓国际市场。随后,ABL公司又在海外建立了生产基地,利用当地资源和优势降低生产成本。通过国际化发展,ABL公司不仅扩大了市场份额,还提高了品牌的国际影响力。

Anaren公司的发展小趣事

随着技术的成熟,ABL公司开始积极拓展市场。公司通过与大型电子产品制造商建立合作关系,将其铝合金组件应用于更广泛的领域。同时,ABL公司也注重品牌建设,通过参加行业展会、发布技术白皮书等方式,提升公司在业内的知名度和影响力。随着市场份额的逐步扩大,ABL公司逐渐成为了电子行业铝合金组件领域的领军企业。

Honeywell公司的发展小趣事

背景:霍尼韦尔公司的历史可以追溯到1885年,由发明家艾伯特·布兹在美国明尼阿波利斯创立布兹电子温度调节器公司。

发展:布兹成功研发出了一种名为“风门挡板”的装置,该装置能够自动调节室内温度,这是当时的一大技术突破。随着业务的不断发展,布兹电子温度调节器公司被统一温度控制公司收购,并在1893年更名为电子供热调节器公司。

关键事件:1898年,电子供热调节器公司被W.R. Sweatt收购,并于1916年更名为明尼阿波利斯热调节器公司。这一系列的更名和收购奠定了霍尼韦尔在恒温器领域的基础。

BREL International Components公司的发展小趣事

品质是BREL International Components公司发展的基石。公司从原材料采购到生产流程控制,再到产品检测,都严格遵循国际质量标准。BREL还建立了完善的品质管理体系,通过定期的质量检查和持续改进,确保每一件产品都达到客户的要求。正是这种对品质的执着追求,让BREL的产品在市场上赢得了良好的口碑,品牌价值不断提升。

南京国博公司的发展小趣事

国博电子的前身可以追溯到2000年成立的上海华信集成电路有限公司,起初专注于射频芯片的研发与生产。随着技术的积累和市场的拓展,公司逐步从单一的射频芯片企业成长为覆盖射频芯片、模块、组件的完整产业平台。这一跨越不仅体现了公司在技术上的深厚积累,也反映了其对市场需求的敏锐洞察和快速响应能力。通过不断的技术创新和产品研发,国博电子成功在无线通信、移动通信等领域占据了一席之地。

问答坊 | AI 解惑

生命树教你如何获得优质低价的数码照片

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 …

查看全部问答>

C语言降龙十八掌——第二掌 printf藏玄机

这是一个真实的案例。在某型号的核心网络交换机设备中,为调试方便,实现了一个把内存内容从终端打印的功能,也就是dump memory,屏幕的左边显示十六进制,右边以ASCII形式显示, 用过UltraEdit的十六进制编辑功能朋友应该都很了解。显示ASCII码部 ...…

查看全部问答>

GPS/GPRS远程定位监控、的模块又朋友搞定没有呀,又的话来一块好吧

GPS/GPRS远程定位监控、的模块又朋友搞定没有呀,又的话来一块好吧 有搞定利用GPRS的UDP协议传送GPS信号到指定IP的模块的朋友吗?有的话跟帖,或者电话短消息,13838539322…

查看全部问答>

IAREWSTM8还是有些粗糙呀,CASE语句处理太严格

在一个 switch() 语句里,新添加一个分支 case 20: //正在编辑 A_ON_Time 参数,LED1长亮       break; 这种情况下编译器跳出严重错误,如下图所示,然后找了半天错误,最后发现在case 20里添加一句话如下面所示代码: ...…

查看全部问答>

德州仪器:TMS320C6474培训课程简介

$(\'swf_NI2\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjcyNDA1OTky/v.sw ...…

查看全部问答>

两相四线步进电机

请问一下两相四线步进电机的四根线时序脉冲是怎么给的, 帮我看看这个程序吧, 我发现延时函数换成 int k=800; void Delay(void){  for(int j=0;j《k;j++);  }  这个之后 步进电机转动就有问题了  请问一下是什么问题啊 ...…

查看全部问答>

2011年 预测控制类 雷达资料

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 2011年 预测控制类 雷达资料 我想下其他的东西需要下载币,无奈只得收费了 [ 本帖最后由 lightstar1989 于 2011-8-27 18:34 编辑 ]  …

查看全部问答>

电平相反

max7221片选端低电平有效,clk上升沿din接收数据,可我仿真时,片选端一直高电平啊,clk也不见脉冲,只看见低电平,就算脉冲太快,看不到,片选端也不应该高电平啊,所驱动的数码管还显示呢。哎。。。。。。…

查看全部问答>

flashmagic怎么下呀

没有账号,也没有注册的地方。高手指点。…

查看全部问答>