目录如下,持续更新~~

【1】星空派GD32F303开发板介绍 与 文章目录

1. 串口基础概念

USART数据格式一般分为启动位、数据帧、可能的奇偶校验位、停止位,如图4.34所示。

启动位:发送方想要发送串口数据时,必须先发送启动位。

数据帧:发送的数据内容,数据的Bit位。有8位数据字长和9位字长两种。

可能的奇偶校验位:在串口通信中一种简单的检错方式,没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

停止位:停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。

通常情况下,我们默认选择的USART数据格式为:8位数据字长、无奇偶校验位、1位停止位。

如图4.34 USART数据格式

硬件连接:

GD32F303具有5路UART,分别是:

2. USART和UART的区别

USART:通用同步和异步收发器

UART:通用异步收发器

当进行异步通信时,这两者是没有区别的。区别在于USART比UART多了同步通信功能。

这个同步通信功能可以把USART当做SPI来用,比如用USART来驱动SPI设备。

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

同步是阻塞模式,异步是非阻塞模式。

其中SPI IIC为同步通信  UART为异步通信, usart为同步&异步通信。

3. 串口相关引脚

串口相关引脚可以查看“【03】官方资料\数据手册”GD32F303xx_Datasheet_Rev2.0.pdf

需要注意的是:不同芯片型号的引脚可能不一致,一定要根据自己的芯片型号去查找对应的引脚复用!本开发板默认使用的是GD32F303Z

本实验用的是串口0 ,即USART0 ,对应的串口引脚为 PA9(TX)   PA10(RX)

3. 代码部分

对应的代码例程:“04_USART_Printf”

(1)串口初始化

void  uart0_init (void)
{/* 使能 GPIO 时钟 */rcu_periph_clock_enable(RCU_GPIOA);/* 使能 uart 时钟 */rcu_periph_clock_enable(RCU_USART0);/* 将GPIO A9 引脚复用为 USARTx_Tx */gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);/* 将GPIO A10 引脚复用为 USARTx_Rx */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);/* USART 去初始化 */usart_deinit(USART0);//波特率设置usart_baudrate_set(USART0, 115200U);//接受使能usart_receive_config(USART0, USART_RECEIVE_ENABLE);//发送使能usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);//使能串口0usart_enable(USART0);
}

(1)串口发送

发送一个字节:

void uart0_send_byte(uint8_t ch)
{usart_data_transmit(USART0, (uint8_t)ch);while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
}

发送字符串:

void uart0_send_string(uint8_t *str)
{uint8_t *p = str;while(*p){uart0_send_byte(*p);p++;}
}

发送数组

void uart0_send_data(uint8_t *data, int len)
{int i;for(i = 0; i < len; i++){uart0_send_byte(data[i]);}
}

(2)串口接收

static uint8_t uart0_rcev_buff[100];
static uint8_t uart0_rcev_index = 0;/*!\brief      this function handles USART0 exception\param[in]  none\param[out] none\retval     none
*/
void USART0_IRQHandler(void)
{uint8_t ch = 0;if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){/* Read one byte from the receive data register */ch = (uint8_t)usart_data_receive(USART0);if(uart0_rcev_index < sizeof(uart0_rcev_buff)){uart0_rcev_buff[uart0_rcev_index ++] = ch;}}
}

GD32F303课程【4】串口开发相关推荐

  1. orangepi——uart串口开发(TX,RX)

    基于wiringPi的串口开发 1.简介 串口是嵌入式常用的一种通信方式,串口协议涉及到波特率.奇偶校验位.数据位.停止位等.如何配置寄存器. 串行接口的简称,按照一位一位的顺序传输. wiringP ...

  2. Android USB串口开发

    因为第一次接触Android下的串口开发,在网上找了很多例子都不能满足自己的需要以及不能正常使用,于是结合网上的资源以及查阅资料,终于完成了关于这个串口的开发,在此记录下usb转串口通信开发的过程. ...

  3. 中移4G模块-ML302-OpenCpu开发-串口开发

    B站:https://space.bilibili.com/309103931 中移4G模块-ML302专栏:https://blog.csdn.net/qq_33259323/category_10 ...

  4. 教育资源数字化 计算机和通讯,《计算机网络技术课程数字化资源开发研究》.doc...

    <计算机网络技术课程数字化资源开发研究> 课题研究报告 <计算机网络技术课程数字化资源开发研究>课题组 朱家俊 刘振海执笔 摘 要:本课题是从计算机网络技术课程入手,开发出操作 ...

  5. android 串口开发第二篇:利用jni实现android和串口通信

    一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...

  6. QT for Android串口开发

    QT for Android 思路 一.所用到的头文件 1.打开串口 2.配置串口 3.接收数据 3.发送数据 最近在搞QT for Android开发,在网上搜了下解决方案发现都是需要java库的支 ...

  7. 健康课程小程序开发,传播正确养生方法,拥抱健康生活

    人们的生活节奏随着城市化进程脚步的加快变得越来越紧凑,因此人们对身体健康的关注度逐渐升高,这也使得养生行业得到快速发展,并且随着养生趋势逐渐年轻化,越来越多的年轻人开始加入到养生行列中来.但是对于很多 ...

  8. css网站结课设计,毕业设计(论文)-《DIV+CSS》课程网站的开发.doc

    专业: 教育技术学 专业: 教育技术学 学号: 1911120207 Hebei Normal University of Science & Technology 本科毕业设计 (人文科学) ...

  9. 瑜伽美体塑形馆小程序课程报名系统开发制作

    瑜伽美体塑形馆小程序课程报名系统开发制作 瑜伽美体塑形馆,专注零基础瑜伽教练的培训,瑜伽,孕妇瑜伽,健身,美体塑形,减肥课程分类展示,会员在线报名课程. 瑜伽美体塑形馆小程序课程报名系统主要功能有:大 ...

  10. 480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程

    480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程 ===============课程目录=============== ├─(1) 01-Pyt ...

最新文章

  1. mysql种default约束的语句_sql语句大全之SQL DEFAULT 约束
  2. linux mint 下载迅雷安装包,linux mint 最新版本下载地址
  3. 【计算机网络】网络安全 : 入侵检测系统 ( 基于特征的入侵检测系统 | 基于异常的入侵检测系统 )
  4. 340. 通信线路(分层图最短路)
  5. java无法实例化类型_java – 无法实例化泛型中的类型
  6. 【Unity3D与23种设计模式】模板方法模式(Template Method)
  7. 【EasyUI】DataGrid 合并单元格 - 使用实例
  8. createbitmap 旋转90度_小学数学,图形的运动,平移与旋转
  9. shell脚本,结合expect给当前网段所有主机分发任意文件
  10. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置
  11. Ubuntu 13.04 安装最新版本的Nginx
  12. 全国计算机考试网页制作,全国计算机信息高新技术考试网页制作(FrontPage平台)网页制作员级考试考试大纲...
  13. python实验报告内容实现购物车系统_Python实现的购物车功能示例
  14. A network analyzer is used for
  15. [note] 电磁场和微波课组(一)——电磁学(电学部分)
  16. 菜鸟的mongoDB学习---(二)MongoDB 数据库,对象,集合
  17. 低频能不能采到高频?采样定理指导硬件设计
  18. 微擎mysql和redis_微擎如何开启redis,redis开启方法详解
  19. Linux下的流量控制(TC)和服务质量(QoS)
  20. 亚马逊云科技在中国区域新推多项服务;德州仪器携手台达打造高效能服务器电源供应器 | 全球TMT...

热门文章

  1. 【转载】downRight关于菱形图像的分割(求解)
  2. mysql 数据库表结构设计与规范
  3. 实习记——《Rethink》
  4. 【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)
  5. 画论42 茅一相《绘妙》
  6. 4.3计算机动画制作 教案,高中信息技术选修2教案-4.3.1 选择计算机动画制作工具1-教科版.docx...
  7. 在鸿蒙开发板上使用MQTT协议、OneNET实现第一个物联网项目
  8. 微信小程序页面跳转的方法总结
  9. MySQL 数据库的高可用性分析
  10. 渲染管线的理解与学习