电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【小熊派BearPi-loT开发板连载】配置小熊派的串口(一)
分 享
扫描二维码分享
【小熊派BearPi-loT开发板连载】配置小熊派的串口(一)
小熊派
BearPi
串口
瑟寒凌风
关注
发布时间: 2021-03-22
丨
阅读: 1955
在实际的项目开发过程中,特别是用一些比较常见的传感器,使用最多的通信方式可能就是串口通信了, 该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。 在串口的异步通信中,数据以字节为单位的字节帧进行传送,发送端和接收端必须按照相同的字节帧格式和波特率进行通信,其中字节帧格式规定了起始位、数据位、寄偶效验位、停止位。 起始位是字节帧的开始,使数据线处于逻辑0状态,用于向接收端表明开始发送数据帧,起到使发送和接收设备实现同步。停止位是字节帧的终止,使数据线处于逻辑1状态,用于向接收端表明数据帧发送完毕。波特率采用标准速度,如4800、9600、19200、28800、38400、57600等。 本文中串口波特率采用115200。 # 基本串口配置 首先查看电路图,如下图 ![](https://cf02.ickimg.com/bbsimages/202103/5de4eb58d9e42957342d0968726ffc55.jpg) 从图中我们可以看出串口2使用的引脚是PA2和PA3,其中PA2是TX,PA3是RX。 基于这个图我们可以使用串口工具连接这两个引脚,如下图 ![](https://cf02.ickimg.com/bbsimages/202103/4afacf0a4b2d0ee3b1fdef702f8ffcfb.jpg) 串口工具与开发板的串口连接时交叉连接,串口工具的TX连接开发板的RX,串口工具的RX连接开发板的TX。 忘了说一句,串口一定是共地的,也就是说串口工具上的GND要和开发板上的GND用线连接起来。 我们打开STM32CubeMX,打开新建工程,搜索L431系列单片机 ![](https://cf02.ickimg.com/bbsimages/202103/be03eb362823561a371fa59583cdf2a2.jpg) 打开如下图 ![](https://cf02.ickimg.com/bbsimages/202103/5bcab0aca16a5d6b9857ddd4ed044d3d.jpg) 我们选择PA2引脚,左键点击,然后选择USART2_TX,如下图 ![](https://cf02.ickimg.com/bbsimages/202103/b9008366b338cce09cf7c33defd9b323.jpg) 同理,我们选择PA3引脚,左键点击,然后选择USART2_RX,如下图 ![](https://cf02.ickimg.com/bbsimages/202103/13eab84703a7a588706ace0b40ae2bad.jpg) 然后配置时钟,如下图 ![](https://cf02.ickimg.com/bbsimages/202103/a85460d4f19579dd3c24244848c24447.jpg) 然后点击configuration,配置串口 ![](https://cf02.ickimg.com/bbsimages/202103/6de988c184e744a4f34bd46519cb7d9e.jpg) ![](https://cf02.ickimg.com/bbsimages/202103/53df75449388a7c0d8840937a4effcbe.jpg) 这是表示波特率115200,数据位8位,停止位1位,无奇偶校验。 完成后点击如下图标生成代码。 ![](https://cf02.ickimg.com/bbsimages/202103/9768e01065419d2780df8ad0764b6fd2.jpg) # 串口的简单发送 我们在main()函数的while循环里面,更改成如下内容 ```c while (1) { HAL_UART_Transmit(&huart2,(uint8_t*)"123",3,1); HAL_Delay(1000); } ``` 其中HAL_UART_Transmit()函数的原型如下 ```c HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) UART_HandleTypeDef *huart代表串口句柄 uint8_t *pData代表数据内容 uint16_t Size代表数据长度 uint32_t Timeout代表超时时间 ``` 按照如上配置,我们打开串口工具软件,可以看到在不断打印我们的123数据 ![](https://cf02.ickimg.com/bbsimages/202103/c24a43a7eddfb7effb773ac6b53b74d5.jpg) # 串口的简单接收 串口的接收不是很好看效果,我们就用收到什么发送什么的方式,把收到的数据重新显示出来吧。 我们在main()函数里面,更改成如下内容 ```c #include "main.h" #include "stm32l4xx_hal.h" #include "usart.h" #include "gpio.h" #include "stdlib.h" #include "string.h" void SystemClock_Config(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); uint8_t buf[32] = {0}; while (1) { memset(buf,0,32); if(HAL_OK == HAL_UART_Receive(&huart2,buf,1,1000)) HAL_UART_Transmit(&huart2,buf,1,1); } } ``` 这个时候我们可以看到现象,在串口调试软件中发送什么内容,都可以在接收区域显示出来 ![](https://cf02.ickimg.com/bbsimages/202103/891f51073305a338f5220e14ee9c35d1.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
瑟寒凌风
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交