STM32+CubeMX零基础串口收发全攻略
系列文章目录
第一章:初学单片机,使用STM32进行点灯
文章目录
- 系列文章目录
- 前言
- 一、使用到的装置和软件
- 二、串口收发
- 1.STM32CubeMX配置
- 2.keil5的使用
- (1)阻塞式收发
- 使用printf()进行输出
- 发送数据
- (2)中断式收发
- 总结
前言
本文主要是解决简单的串口通信
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用到的装置和软件
本案例主要涉及到的装置和软件有:
1.一块STM32F103ZET6的开发板(也可使用其它板子)
2.ST-LINKV2(有钱的也可使用J-link等)一个与杜邦线若干
3.涉及到的软件有三个分别是:STM32CubeMX(用于生成文件),Keil uVision5(用于编程),XCOM V2.2(用于查看数据)
4.USB TO TTL(USB转TTL串口)
二、串口收发
1.STM32CubeMX配置
基本配置和第一章点灯案例一样(需要的可以在系列文章目录里面查看第一章),这里主要是对串口的配置:
串口配置如图所示:
Connectivity中UART(通用异步收/发器)、USART(通用同步/异步收/发器),从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型。
我这里使用的是USART1(由于本案例选择的是异步串口,所以选择UART也可),在选择好了Mode之后一般会自动选择引脚A10(RX)和A9(TX)(注意在连接单片机和计算机时,单片机的RXD接计算机的TXD,单片机的TXD接计算机的RXD)
在选好之后我们看下面协议的配置:
Baud Rate 波特率:如果想要稳定一点的话可以选择9600这些,想要快一点就可以选择115200
Word Length 字长(数据位和校验位的长度之和)
Panity 校验位:None是无校验,Even是偶校验,Odd是奇校验
Stop Bits 停止位
可以点击GPIO Settings查看是否是自己要配的串口:
我这里是PA9和PA10,如果要选择其它的串口可以鼠标左键单击右边芯片上的对应引脚进行选择。
然后我们就可以点击生成文件了
2.keil5的使用
(1)阻塞式收发
在main.c文件中写入代码:
HAL_UART_Transmit(&huart1,(uint8_t*)"Hello",5,0xFFFF);//阻塞式发送函数,第一个参数存放串口一的所有数据,HAL_Delay(1000);
然后运行程序没有报错就使用USB TO TTL 将单片机与电脑连接并烧录程序
打开XCOM V2.2软件对数据进行监控
串口选择:一般会自动分配到所在串口,如果可以打开设备管理器查看:
在串口选择下面的选项要与前面在STM32CubeMX里设置的内容相同,然后打开串口,就可以接收到数据了(每隔一秒就会发送一句 Hello )。
使用printf()进行输出
还是在main.c文件中引入头文件
#include<stdio.h>
重写fputc()这个c标准库函数(printf()在c标准库函数实质是一个宏,实际是调用fputc()函数):
int fputc(int c,FILE *stream)
{uint8_t ch[1]={c};HAL_UART_Transmit(&huart1,ch,1,0xFFFF);return c;
}
先注释掉原来的语句,使用printf()输出
然后编译,没有报错就进行烧录。烧录完成之后就可以打开XCOM查看数据了:
如果此时查看不到,经检查没有出现硬件以及未复位的问题,就打开魔法棒,点击Target,勾选如下图所示选项:
然后重新进行烧录就能查看到结果了
发送数据
还是在main.c文件中写入代码:
uint8_t buf[5];HAL_UART_Receive(&huart1,buf,3,0XFFFF);HAL_UART_Transmit(&huart1,buf,3,0xFFFF);
然后重新进行烧录,点击XCOM,打开串口,在发送窗口输入要发送的字符串,然后点击右边的发送按钮,在接收窗口就能看见单片机返回的字符串。
(2)中断式收发
要使用中断式收发,先要在stm32cubemx里面将串口中断打开:
然后再重新生成代码
将数组定义成全局变量:
uint8_t buffer[5];
再写一个回调函数,将接收到的数组发送回去并开启下一次的接收:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{HAL_UART_Transmit_IT(&huart1,buffer,3);HAL_UART_Receive_IT(&huart1,buffer,3);}
将第一次触发中断的语句放在while(1)之前
HAL_UART_Receive_IT(&huart1,buffer,3);
后续的串口操作都是由中断来进行的,此时while(1)中没有其它函数,我们可以在while(1)中编写其它的逻辑,基本不受串口影响。
对程序进行运行和烧录,我们打开串口随便发送三个字符,可以看到字符成功的被返回回来了。
总结
以上便是串口的使用攻略了,除此之外还可以使用MDA方式进行收发,这里就暂时不进行讲解了。
STM32+CubeMX零基础串口收发全攻略相关推荐
- 计算机软考 零基础,零基础计算机软考攻略
原标题:零基础计算机软考攻略 对于有相关专业基础的考生来说,可能并不会觉得软考难考.如果是有相关专业基础知识,可以选择对应级别的考试项目,这样学习起来效率会更高,对所学知识掌握起来也更容易.而如果是零 ...
- 2019小程序赚钱全攻略:零基础搭建、引爆、变现你的小程序
最近在知乎有个问题爆红: 抖出无数人的心酸经历: 无论买什么东西,都会不由自主跟每天的饭钱作对比-- 父亲做手术,我却负担不起昂贵的止疼药-- 老公出轨,却因为没钱不敢离婚,怕抢不到孩子的抚养权-- ...
- 我的3D之路-----非教科书式3D计算机图形学零起点全攻略
我的3D之路-----非教科书式3D计算机图形学零起点全攻略 http://zero3d.cn/blog/post/38.html 这篇文章不包含任何技术知识,但我的希望它能指明一条从零开始通往3D领 ...
- Gradle脚本基础全攻略
转载http://blog.csdn.net/yanbober/article/details/49314255 [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处 ...
- 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)
零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)-项目概述篇(一) 一.项目开发总体框架 二.项目开发流程 三.项目技术选型
- php 继承性,php面向对象全攻略 (七) 继承性_php基础
//定义一个"人"类做为父类 class Student{ //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人 ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- 创业全攻略:从零到开具第一张发票
2019独角兽企业重金招聘Python工程师标准>>> 创业全攻略:从零到开具第一张发票 来源:创业家网 作者:Chen Guang(ATS 测评研究中心创始人) 背景:我是一个工科 ...
- 3D计算机图形学零起点全攻略
http://www.gamengines.com/article-1542.html 这篇文章不包含任何技术知识,但我的希望它能指明一条从零开始通往3D领域的成功之路.我将罗列我看过的相关经典书籍作 ...
最新文章
- ppt流程图字体太小_PPT演示让你尴尬的5大突发情况,早学早预防!
- aspx网页_http://jwxt.xmdh.com/home.aspx厦门东海职业技术学院教务网络管理系统
- 007_Web to lead
- springBoot引入spring配置文件
- linux 中ifconfig命令 结果解释
- 某些面向对象的思想--一步步更新
- C-Sharp网络编程案例解析(Socket类的使用)
- UNIX环境高级编程之第6章:系统数据文件和信息-习题
- Python学习---Python数据类型1206
- 算法第四版 课后习题答案
- win7蓝牙驱动的使用方法
- 简单线性相关系数 r及检验
- 半正定矩阵和正定矩阵的一些理解和补充
- android测行走距离,如何在Android中行走时计算距离?
- OSChina 新年乱弹 ——爱你们,新年快乐
- 饮料自动售货机模拟(小项目)
- Android 接入穿山甲SDK之插屏广告
- 记一次微信小程序云函数操作Mysql数据库
- 百度富文本编辑器引入问题
- Squid缓存服务器和代理介绍
热门文章
- 幻影机器人庄园参观路线_上海幻影机器人庄园
- 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
- python消除水印与颜色,万能版本
- 计算机不同用户资料共享吗,手把手教你创建电脑公用账户,别人借电脑,再也不用为难了...
- 前台js解析json数据
- dreamweaver半角空格_网页设计半角空格怎么输入
- Windows电脑桌面云便签敬业签怎么预设提醒日期?
- 机器学习模型部署的三种方法
- jquery实现将注册信息保存表格中
- 金龄会与大健康企业携手开展防养老诈骗活动