【摘要】 ​主要讲解物联网的技术积累,本期我们先带领大家学习漫谈LiteOS之漫谈开发板第一集-串口,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术问题以及解决方案

1.1 定义

串口即串行端口,泛指采用所有采用串口通信时序的接口,一般在嵌入式中默认为UART口。

1.2 串口的作用

(1)通过串口将程序下载到开发板。

(2)显示调试日志实现对于运行程序的监控。

(3)通过串口发送或接收命令实现终端与开发板的信息交互。

2 串口通信

2.1 定义

在串口中,数据按顺序一位一位的传输,该传输方式成为串口通信。

2.2 串口通信的传输方向

(1)单工:数据只可以沿一个方向传输。

(2)半双工:数据可以分时的沿着两个方向传输,即不能同时进行。

(3)全双工:数据可以同时进行双向传输。

2.3 波特率

波特率指的是每秒传输多少位数据,即传输率。常用波特率为9600和115200。

2.4 数据包

数据包 = 起始位 + 数据位 + 校验位 + 结束位

3 GD32F450i的串口

对于GD32F450i开发板主要通信接口包含4个USART(USART0/1/2/5)和4个UART(UART3/4/6/7)。以USART0为例,具体原理图如图1所示。

由上图可知,引脚PA9和PA10位串口USART0的数据输入(接收)引脚RX和数据输出引脚TX。

4 串口初始化的步骤

(1)使能GPIO的时钟。

(2)使能UART0的时钟。

(3)设置USART TX的引脚或端口。

(4)设置USART RX的引脚或端口。

(5)设置USART TX对应引脚为推挽输出工作模式。

(6)设置USART RX对应引脚为推挽输出工作模式。

(7)设置波特率为115200。

(8)使能Rx、Tx端口。

4.1 串口模式

(1)普通模式:在主函数中接收函数,输出字符串到串口。

1)开发环境

Windows、Keil、Jlink下载器、GD32F450i-EVAL(2019)

注意:若使用的MDK版本为Keil5.25以后,打开项目时以及使用J-Link下载器烧录程序时可能会报错,针对可能出现的问题进行分析以及解决,链接为https://bbs.huaweicloud.com/blogs/123604

2)程序重点

为实现通过printf函数打印字符串和输出实时数据到串口助手,需要重写fputc函数,同时添加头文件 #include "stdio.h",重写函数如下所示。

       int fputc(int ch, FILE *f)

     {

            usart_data_transmit(EVAL_COM1, (uint8_t)ch);

            while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE));

            return ch;

       }

3)硬件连接

连接USB供电线后,将J-Link下载器连接到开发板的JTAG接口上,之后连接到PC端,若LED5点亮说明选择了正确的启动方式,供电正常。硬件连接图如图2所示。供电方式选择GD-Link,串口采用九孔com口串口线(本文中使用杜邦线代替)连接。

之后点击keil5的编译和烧录按钮,如图3所示。

上述过程实现了下载程序到开发板,用跳线帽将JP5跳到USART0上,并将串口线连接到开发板的COM0上,例程首先将输出“USART printf example: please press theTamper key”到超级终端。按下 Tamper 键,串口继续输出“USART printf example”。

通过串口输出的信息如图4所示。

(2)中断模式:产生的不影响主程序运行。

主函数中需要使能接收中断和发送中断即分别将对RBNE和TBE状态寄存器进行操作,触发中断。测试时首先,所有的LED灯亮灭一次。然后EVAL_COM0将首先输出数组 tx_buffer 的内容(从 0x00 到 0xFF)到支持 hex 格式的串口助手并等待接收由串口助手发送的 BUFFER_SIZE 个字节的数据。MCU 将接收到的串口助手发来的数据存放在数组 rx_buffer 中。在发送和接收完成后,将比较 tx_buffer 和rx_buffer 的值,如果结果相同,LED1,LED2,LED3 轮流闪烁;如果结果不相同,LED1,LED2,LED3 一起闪烁。

通过串口输出的信息如图5所示。

(3)DMA模式:与主函数互不影响,独立运行。

主函数中需要先使能USART0的发送和接收DMA通道,触发DMA。对于测试,DMA测试过程与中断方式相同。

通过串口输出的信息如6所示。

通过以上的开发流程,对于物联网中的串口有了更深的认识。

目录主文链接https://bbs.huaweicloud.com/blogs/124244

作者:星辰27

往期文章精选

如果让你手写个栈和队列,你还会写吗?

挑战10个最难的Java面试题(附答案)【上】

javascript基础修炼(13)——记一道有趣的JS脑洞练习题

【我的物联网成长记3】如何开发物联网应用?

【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!

对你没有看错!不到 10 行代码完成抖音热门视频的爬取!

Python面试的一些心得,与Python练习题分享

漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)的更多相关文章

  1. 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)

    1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...

  2. 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)

    [摘要] 本文主要从GPIO的定义.工作模式.特色.工作场合.以及GD32450i-EVAL开发板的引脚.对应的寄存器以及GPIO的流水灯示例对GPIO加以介绍,希望对你有所帮助. 1定义 GPIO( ...

  3. iTOP-4412开发板-串口转接小板的使用文档

    本文档介绍如何使用 迅为iTOP-4412 精英版如何使用串口转接板,串口小板如下所示.和串口转接板模块相关的资料如下:“iTOP-4412-Android-串口测试文档(升级版)_V2.X.zip” ...

  4. SecureCRT连接开发板 串口传输、tftp传输

    1.串口传输 使用命令:rx  r是service, x是X-model模式 ①.rx 文件名 再按Enter键 ②.将需要传到板子上的文件 拖到SecureCRT里面,选择发送X-model选项 注 ...

  5. 创龙TMS320C6748开发板串口和中断学习笔记

    1. 硬件上,底板有2个串口,UART1和UART2(使用了MAX3232电平转换芯片),其中UART2也可以转RS485的. 2. 看下数据手册部分,不过一直不理解过采样的意思,16字节的FIFO ...

  6. 迅为iTOP-4418开发板串口虚拟控制台配置为普通串口

    如何将 iTOP-4418 的串口控制台配置为普通串口.在最终的产品中,如果需要额外的串口,可以将调试用的控制台串口作为普通串口使用,因为交付给最终用户手中的产品,一般不需要调试串口.屏蔽串口控制台需 ...

  7. 为arm-linux开发板挂载基于nfs的根文件系统

    linux4.14内核,首先设置kernel的bootargs,在make menuconfig中有三种方式来配置: 第一种方式为如果uboot中设置了bootargs环境变量,就采用uboot的bo ...

  8. debian下为arm开发板创建基于debian或emdebian的根文件系统

    Debian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些. emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的 ...

  9. linux与开发板串口通信

    研究了一天的linux串口,结果改了树莓派的系统配置文件config.txt给改了导致系统崩溃....其实我感觉网上的大多数方法都是不符合新版本树莓派的,网上的方法是通过修改系统配置文件后安装mini ...

随机推荐

  1. $color$有色图

    不想看题解的请速撤离 为防被骂灌输题解,撤离缓冲区 这里没字 $Ploya$神题一道,所以我自己做不出来,颓了一部分题解. 由于理(颓题)解不(没)深(脸)中途又拿了$std$对拍(输出中间结果并qj ...

  2. csp-s m 80 题解

    写在前面:(扯淡话) 这次考试是AB组分开考,但是觉得题目并不是很水,所以就来写一下题解,其实这次由于翘掉了午休,所以考试的前半部分还是比较困的(越做越清醒!)今天调完还是很有感触的! 正文: T1 ...

  3. [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  4. php nginx反向代理获取真实ip的教程

    php nginx反向代理获取真实ip的教程 <pre> location /getip { proxy_pass http://newmiracle.cn/ip.php; } proxy ...

  5. IDEA升级,提示"Connection Error Failed to prepare an update"

    问题来源: 之前修改了IDEA的默认配置文件路径,然后升级新版本时就无法升级,提示"Failed to prepare an update Temp directory inside ins ...

  6. 关于GDAL读写Shp乱码的问题总结

    目录 1. 正文 1.1. shp文件本身的编码的问题 1.2. 设置读取的编码方式 1.2.1. GDAL设置 1.2.2. 解码方式 1.2.3. 其他 2. 参考 1. 正文 最近在使用GDAL ...

  7. Ansible之templates模板

    一.jinja2简介解 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Djanjo的模板引擎,并扩展了其语法和一系列强大的功能.ansible的模板配置文件就是用jinja2 ...

  8. MyBatis直接执行sql语句mapper

    <select id="queryBySql" resultType="HashMap"> <![CDATA[ ${sql} ]]> & ...

  9. ThinkPHP v5.1.x POP 链分析

    环境:MacOS 10.13 MAMAP Prophp 7.0.33 + xdebugVisual Studio Code前言我所理解的 POP Chain:利用魔术方法并巧妙构造特殊属性调用一系列函 ...

  10. Python 常用模块系列(2)--time module and datatime module

    import time print (help(time)) #time帮助文档 1. time模块--三种时间表现形式: 1° 时间戳--如:time.time()  #从python创立以来,到当 ...