IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX基于HAL库实现简单串口通信 -> 正文阅读

[嵌入式]STM32CubeMX基于HAL库实现简单串口通信

STM32CubeMX基于HAL库实现简单串口通信

板子:STM32F103C8

编译工具:Keil+STM32CubeMX

烧录工具:FlyMcu

串口调试程序:XCOM

实验要求:

1)设置波特率为115200,1位停止位,无校验位;

2)STM32系统给上位机(win10)连续发送“hello windows!”

一、串口通讯原理

1. 简介:

在串行通信中,一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束。在进行传输之前,双方一定要使用相同的波特率设置。波特率就是每秒钟传输的数据位数。常用的两种基本串行通信方式包括同步通信和异步通信。我们通常使用的是异步通信,异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成。串口通讯有HAL 库轮询,中断,DMA 三种通信模式:

  • 轮询方式:CPU不断查询IO设备,如设备有请求则加以处理。例如CPU不断查询串口是否传输完成,如传输超过则返回超时错误。轮询方式会占用CPU处理时间,效率较低。
  • 中断控制方式:当I/O操作完成时,输入输出设备控制器通过中断请求线向处理器发出中断信号,处理器收到中断信号之后,转到中断处理程序,对数据传送工作进行相应的处理。
  • 直接内存存取技术(DMA)方式:所谓直接传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出“传送块数据”的命令,然后通过中断来得知过程是否结束和下次操作是否准备就绪。

2. USART:

2.1 USERT简介:

USART,英文全称——Universal Synchronous/Asychronous Receiver/Transmitter,即通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

在STM32中文参考手册第516页也做了比较详细的介绍。

2.1 USERT特性:

.在这里插入图片描述

3. 串口通信过程

在这里插入图片描述

二、实验

1. STM32CubeMX

  • 搜索框中输入STM32F103C8选择对应芯片
    在这里插入图片描述

  • 双击芯片进入项目/点击start Project

  • 右侧栏中点击A->Z->USERT1

  • Mode选择Asynchronous异步通信

  • 设置参数:(以下在最新版本地Cube中是默认参数,可以跳过这一步)

    • 波特率:115200 Bits/s
    • 字符长度:8 Bits
    • 停止位 Stop Bits:1
    • 校验位 Parity:None
      在这里插入图片描述
  • 项目配置四步骤

    • 设置名称;Basic;IDE是MDK-ARM
    • Code Generator中勾选此选项生成对应.c和.h文件方便管理
      在这里插入图片描述
      在这里插入图片描述

2. Keil TIME!

在Cube中Generate Code后选择open project跳转至Keil
在这里插入图片描述

  1. 来到main.c中的while循环中添加下列代码:

		//发送的数据
		char data[]="hello windows!\n";
		//发送
		HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xffff);
		//延时1s
		HAL_Delay(1000);

  1. 配置魔法棒(一劳零逸)
    在这里插入图片描述

  2. build项目->debug

  3. 打开UART1窗口以及仿真示波器窗口
    请添加图片描述

  4. Run!!!!

请添加图片描述

这里调用了WIN10的自带计时器

3. 实机运行

3.1 使用FlyMcu烧录hex文件

选择串口后先清空芯片再点击开始编程

请添加图片描述

3.2 使用XCOM接收信息

在这里插入图片描述

三、总结

USART功能非常强大,本次实验只进行了最基础的操作,若想继续探究,还需多多练习。

四、参考文章

醉意丶千层梦:基于HAL库实现stm32简单串口通信

安迪西:STM32CubeMX系列|串口通讯

江南烟脓雨:STM32F103串口通信USART小试牛刀

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:32:33  更:2021-10-28 12:33:33 
 
开发: 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 6:36:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码