当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

如何初始化接口看这里!STM32单片机从零开始使用教程(三) 阻塞模式串口的简单应用

以前跑跑马灯的时候已经生成了一次keil工程,只是单纯编译了下载,这次仔细看看工程里有什么。

顺便体验一下快捷的串口设置。

与之前类似,这次需要配置一下串口

模式就用异步,毕竟我们懒得提供额外的同步时钟。

波特率115200,字长8位。

ok,闲话不多说,打开keil!

认识keil工程

工程目录

在keil的project树中可以看到有四大目录

其中Application/MDK-ARM目录下的文件为启动文件(其在资源管理器的目录就是工程目录下的MDK-ARM),打开后可以发现全是晦涩的汇编代码。我们只需要知道它负责我们单片机的启动,进行堆栈指针、程序计数器指针、堆栈大小、异常向量表、C的分支入口等初始化的工作,有兴趣可以针对stm32启动文件深入了解。

Application/User/Core目录下的内容则是用户的源代码,是我们要操作的地方,其在资源管理器下的路径就是工程目录下的Core。

Driver路径下的HAL类似于标准外设库,是Hardware Abstraction Layer(硬件抽象层),不过比标准库的集成度还要再高一些。这是STMcube帮助我们生成的,目前来讲不要随便修改它

另外一股CMSIS则是CMSIS微控制器软件接口标准,我们也不会动它。

代码内容

我们现在应该主要研究的就是User/Core目录下的内容

首先是main.c

开头生成了一段简介,以及他们ST的版权声明

USER CODE BEGIN Header和USER CODE END Header

意味着我们可以把自己的说明插入到这一块。

在几个头文件引用之后,又出现了很多段的ben和end

理论上来讲,我们这些全局变量的定义啊,宏的定义啊什么的其实怎么来都行,你觉得舒服然后能跑起来不报错就没问题。但是对于工程产出而言,能够条理规范地写清楚代码也十分的重要,因此不妨按照人家的模板分门别类的把自己的代码安放到合适的地方。

接下来看Main函数,在无限while循环之前有几个初始化函数

此处的HAL_Init()对所有外设进行初始化,包括flash接口和systick

在进行系统时钟配置后开始初始化我们配置的外设

这里就和Cube工程里面的设置有关了,比如说我打开了GPIO和USART1,那么这里就会有对应的初始化函数。

串口程序

咱们来分析一下串口的相关代码

go to definition可以找到串口初始化代码的原型

其内容就是给一个叫huart1的结构体的成员进行赋值,从这些命名看大概就可以知道分别是实例、波特率、字长等等

在初始化赋值后查询一下初始化是否成功,失败就进入错误处理。

huart1是这样的一个结构体类型,也可以具体地查看结构体的定义。

好像没了,那要怎么实现串口的通信呢?

在中有一段IO 操作函数

注释里面已经大概告诉了我们不同的模式要使用什么样的api

阻塞模式

以阻塞模式为例,我们使用 HAL_UART_Transmit()发送消息

找到发送函数的定义

其输入参量需要*huart(这个已经定义好了,就是我们初始化时做的事情),然后是一个指向发送数据的uint8指针,以及数据的大小,最后是超时

我们先定义一个变量作为发送的消息

那么调用函数就应该把这几个参数传进去,注意需要取地址的地方

接受函数与之类似

我们可以稍微调整一下,把message改成数组,并且添加一个status标志位

在while循环中,我们查询status的状态,如果搞定了,就把消息transmit出去。

下载程序

然后把它丢到串口调试助手上,可以看到单片机能把我们发过去的内容发回来

但缺点有两个,一是我接收到的字符内容得把缓冲区填满了才会执行下一步操作

另一个就是由于是阻塞通信,在没有接受完所有消息时,它就会一直卡在串口接受的位置。

1.《如何初始化接口看这里!STM32单片机从零开始使用教程(三) 阻塞模式串口的简单应用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何初始化接口看这里!STM32单片机从零开始使用教程(三) 阻塞模式串口的简单应用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2242131.html

上一篇

1.5倍行距怎么设置?我来告诉你答案Word中的内容怎么设置行间距?简单两招帮你轻松搞定

下一篇

07excel下拉菜单怎么做看这里!Excel函数公式:含金量超高的下拉菜单制作技巧,绝对的实用

如何初始化接口?终于找到答案了某厂面试:如何优雅使用 SPI 机制

如何初始化接口?终于找到答案了某厂面试:如何优雅使用 SPI 机制

如何初始化接口相关介绍,原文:某厂面试:如何优雅使用 SPI 机制 作者:龙台 代码不多,文章可能有点长。朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程 产出...

如何初始化接口?总结很全面速看!自己动手实现springboot运行时新增/更新外部接口

如何初始化接口?总结很全面速看!自己动手实现springboot运行时新增/更新外部接口

如何初始化接口相关介绍,作者|小代码d 来源| urli 最近有一个要求。必须允许现有的springboot项目加载外部jar包以更新新的接口逻辑。 本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是spr...

如何初始化接口看这里!某厂面试:如何优雅使用 SPI 机制

如何初始化接口看这里!某厂面试:如何优雅使用 SPI 机制

如何初始化接口相关介绍,原文:工厂采访:如何优雅地使用SPI机制 作者:龙带 代码不多,文章长度可能会长一些。 朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程...

关于如何初始化接口,你需要知道这些自己动手实现springboot运行时新增/更新外部接口

关于如何初始化接口,你需要知道这些自己动手实现springboot运行时新增/更新外部接口

如何初始化接口相关介绍,作者|小代码d 来源| urli 最近有一个要求。必须允许现有的springboot项目加载外部jar包以更新新的接口逻辑。 本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是spr...

如何初始化接口?总结很全面速看!某厂面试:如何优雅使用 SPI 机制

如何初始化接口?总结很全面速看!某厂面试:如何优雅使用 SPI 机制

如何初始化接口相关介绍,原文:工厂采访:如何优雅地使用SPI机制 作者:龙带 代码不多,文章长度可能会长一些。 朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程...

如何初始化接口?我来告诉你答案某厂面试:如何优雅使用 SPI 机制

如何初始化接口?我来告诉你答案某厂面试:如何优雅使用 SPI 机制

如何初始化接口相关介绍,原文:工厂采访:如何优雅地使用SPI机制 作者:龙带 代码不多,文章长度可能会长一些。 朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程...

如何初始化接口?我来告诉你答案自己动手实现springboot运行时新增/更新外部接口

如何初始化接口?我来告诉你答案自己动手实现springboot运行时新增/更新外部接口

如何初始化接口相关介绍,作者 | 码小D 来源 | urli 最近有个需求:需要让现有springboot项目可以加载外部的jar包实现新增、更新接口逻辑。本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是...

关于如何初始化接口,你需要知道这些某厂面试:如何优雅使用 SPI 机制

关于如何初始化接口,你需要知道这些某厂面试:如何优雅使用 SPI 机制

如何初始化接口相关介绍,原文:工厂采访:如何优雅地使用SPI机制 作者:龙带 代码不多,文章长度可能会长一些。 朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程...