| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> RT-Thread零基础快速入门第9讲——串口(UART/RS485) -> 正文阅读 |
|
[嵌入式]RT-Thread零基础快速入门第9讲——串口(UART/RS485) |
RT-Thread零基础快速入门第9讲——串口(UART/RS485)目录前言串口是单片机最常用的通讯方式之一,关于串口的介绍在RT-thread官网上已经有非常详细的介绍了,我这里就不多讲了,今天主要讲一讲官网上没有的东西,让你更加深入的了解RT-thread是如何配置和使用串口进行数据收发的。 一、配置底层引脚1、确定串口引脚先从原理图查看自己需要使用的串口号及对应的引脚。 2、配置底层引脚1)配置串口 先打开对应的串口(Mode选择Asynchronous即可),然后检查GPIO是否和原理图一致。 2)生成新的工程 二、编写应用层代码1、打开串口使能用env打开工程,进入menuconfig配置页面,打开串口使能。 如果你不知道env怎么使用,可以在下面这个链接查看。 2、重新生成工程在env输入下面的命令,重新生成新的工程。
3、编写串口收发代码串口收发的示例代码可以在RT-thread官网查看,有中断接收的示例,也有DMA接收的示例,都是写的很详细的了,拷贝过来改一下就可以用了。 你也可以在menuconfig里面打开串口接收的示例。 建议:如果只是测试串口功能的话可以直接添加示例文件,但是实际应用中还是建议新建一个文件,然后编写串口的应用代码,再把这个文件加入到keil工程里面。 参考:RT-Thread零基础快速入门第2讲——添加新文件到工程 不管用哪种方法,示例代码添加进来之后还是要按照自己的需求修改配置,比如串口号,波特率,串口接收的数据处理等。 以中断接收的demo为例:
2)修改波特率
如下图所示: 利用switch语句处理接收数据的示例代码:
三、进阶学习1、串口的硬件小知识串口常用的电平有三种:TTL、RS232、RS485。
三种电平之间不能直接通信,需要通过转换芯片转换成相同的电平。除了这三种电平以外,我们常常还用到USB,USB有自己的协议(2.0、3.0、3.1等),USB和TTL、RS232和RS485这些电平之间也是不能直接通信的,也需要转换。一般单片机或者其他MCU的串口电平都是TTL的,而PC端一般使用USB。 举个例子: TTL一般是板内模块间通讯用的比较多,因为串口线过长会有线损,影响通讯,因此,外接的传感器和MCU的通讯大多使用RS232和RS485这两种,像RS485,串口线即使长达一百米,也不影响正常通讯。 2、RS485的使用上面简单介绍了三种电平硬件上的区别,那么在编程上又有什么区别呢? 我们在写代码的时候只要把RS485这个使能脚的控制加进去就可以了。 1)先定义485的使能引脚,以及加入GPIO配置要用到的头文件。
提示:引脚号用宏定义,这样的话如果以后要修改引脚,就不需要把每个函数都改一遍。 2)在串口初始化的时候把485使能引脚的初始化也加进去,默认设置为接收模式。
3)在串口发送数据前切换485为发送模式,发送完成后再切回接收模式。
四、常见问题解答1、ENV配置里面没有我要用的串口号问题分析:这是因为你这个工程menuconfig页面的配置文件并没有把所有串口和配置都添加进来。 2、ENV配置的串口配置没有DMA模式问题分析:这个问题和上面那个问题其实是一样的,修改Kconfig即可 3、ENV配置没错,硬件电路也是对的,但是串口就是收不到数据问题分析:假如你ENV的配置是没错的,硬件电路也确认过是正常的,使用list_device也能查找到uart设备,但是就是收不到数据,有可能是底层串口没有配置好,比如底层的引脚号配置的不对或者串口根本就没有打开,这种情况在修改了电路图或者工程的时候很容易出现,也很容易忽视,因为这个问题编译的时候并不会报错,你不仔细核对原理图是发现不了的。 4、STM32CubeMX、ENV及串口初始化等软件部分都确认是对的,但就是没有数据问题分析:这种情况就要结合硬件一起排查了,最快的排查方法就是直接上示波器或者逻辑分析仪,可以单独写一个测试线程,让单片机定时发数据(发什么数据不重要),然后用示波器查看MCU串口的TX引脚的波形,正常的波形是很规律的,每一帧的数据间隔也会跟你定时的时间一致,并且数据帧的波形都是比较漂亮的方波。如果没有波形,排除MCU损坏的情况的话,肯定还是软件没有配置好。接收的测试也是一样的,可以通过PC端的串口助手定时发送数据,然后测试MCU串口的RX引脚,看看波形是否正常,如果波形正常,但是单片机就是没有收到数据,那肯定还是软件没有配置好。 5、串口每次都只能通过输入命令启动吗命令行输入只是为了方便我们测试,实际使用的话可以使用INIT_APP_EXPORT自动加载函数,或者在其他函数、线程里面调用。
五、结束语串口的使用其实非常简单,但是实际使用的时候往往会因为一些小问题折腾了半天,这个时候一定要冷静的分析问题,先检查一遍硬件电路,再按流程检查一遍配置和代码,最后实在没办法了就上示波器吧。 RT-thread相关教程汇总:https://blog.csdn.net/ShenZhen_zixian/article/details/120563891 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:23:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |