STM32
登录
直播中
elecfans
16年用户
1708经验值
擅长:可编程逻辑
私信
关注
[问答]
如何去实现STM32CUIDE的串口通信设计
开启该帖子的消息推送
STM32
串口通信
串口
通信
的基本分类有哪几种?
STM32
CubeIDE是什么?如何去实现STM32CUIDE的串口通信设计?
回帖
(1)
于惠
2021-12-8 13:53:42
通信的基本分类
按通信距离分为短中长三类
按通信介质也可以分为有线和无线
按通信的方式也可以分为串行和并行通信,串口通信只是众多串行通信当中的一种形式,通过开发板上的串口,将数据一位一位的一次传输。
所用设备
STM32MP157开发板,STLINK连接器,USB转TTL接口,5V电源。
开发环境
STM32CUBEIDE
STM32CubeIDE是一个多功能的集成开发工具,集成了TrueSTUDIO和STM32CubeMX,将以往的配置和编译的环境合二为一,它是STM32Cube软件生态系统的一部分。
点击下载
,
下载过程就不再赘述了,一路NEXT就行,也可以参考其他文档自行下载。
硬件连接
将开发板和电脑通过USB转TTL连接,
GND和GND连,RXD和TXD需要交叉连接
将PanGu开发板进入Engineering Mode的方式是将拨码开关设置为如下模式1,2OFF,3ON
新建一个工程
选择要使用的开发板,我使用的是STM32MP157A
命名然后finish
查阅开发板信息确定UART4串口,用于调试串口,所以我们需要对串口4进行配置
选用串口4,M4内核,模式选择异步通信。底线的波特率,字节长度,奇偶校验,停止位保持默认。
需要注意的是当我们配置完串口4以后,软件会自动帮我们选择好接受和发送的引脚,但其实这个引脚只是可以用来做通信的两个引脚,而一个开发板这样的引脚有很多,所以具体的应缴需要我们查找芯片手册威廉希尔官方网站 原理图,自己手动改正。
查看原理图可以看到UART_4RX对应引脚应当为PB2
同理将UART_TX的引脚改为PG11
改为如图所示
Code Generator第一个选上,这样软件会自动生成外设的.c和.h文件方便我们查看,按住ctrl+s生成代码
在main.c中插入如下代码
使用到的库函数HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)其中huart4是初始化串口控制器的结构体变量的指针,生成代码会被自动定义,pData指向应用缓冲器的指针,我把它定义成了一个ch全局变量,缓存大小为1,Size应用缓存大小(int的话就是4个字节,char一个字节数)Timeout超时设置,超过这个时间函数还没有数据函数不再等待,超时返回继续运行。
点击左上角小锤子编译
编译完成,没有报错,对其进行调试,用stlink来将写好的程序的下载到开发板上并调试。
编译完成
点击上面那个小虫子,选择Debug Configurations
调试器选择engineering mode
运行程序然后打开串口调试助手,轮询通信收发成功!
串口中断模式的通信后续有时间会继续更新,可以直接在轮询方式上修改,使能UART4的中断,并在主函数里添加函数HAL_UART_Receive_IT(),不仅能接收,还会去使能接收中断。
新人上手,第一篇笔记,不足之处请各位多多谅解。
通信的基本分类
按通信距离分为短中长三类
按通信介质也可以分为有线和无线
按通信的方式也可以分为串行和并行通信,串口通信只是众多串行通信当中的一种形式,通过开发板上的串口,将数据一位一位的一次传输。
所用设备
STM32MP157开发板,STLINK连接器,USB转TTL接口,5V电源。
开发环境
STM32CUBEIDE
STM32CubeIDE是一个多功能的集成开发工具,集成了TrueSTUDIO和STM32CubeMX,将以往的配置和编译的环境合二为一,它是STM32Cube软件生态系统的一部分。
点击下载
,
下载过程就不再赘述了,一路NEXT就行,也可以参考其他文档自行下载。
硬件连接
将开发板和电脑通过USB转TTL连接,
GND和GND连,RXD和TXD需要交叉连接
将PanGu开发板进入Engineering Mode的方式是将拨码开关设置为如下模式1,2OFF,3ON
新建一个工程
选择要使用的开发板,我使用的是STM32MP157A
命名然后finish
查阅开发板信息确定UART4串口,用于调试串口,所以我们需要对串口4进行配置
选用串口4,M4内核,模式选择异步通信。底线的波特率,字节长度,奇偶校验,停止位保持默认。
需要注意的是当我们配置完串口4以后,软件会自动帮我们选择好接受和发送的引脚,但其实这个引脚只是可以用来做通信的两个引脚,而一个开发板这样的引脚有很多,所以具体的应缴需要我们查找芯片手册威廉希尔官方网站 原理图,自己手动改正。
查看原理图可以看到UART_4RX对应引脚应当为PB2
同理将UART_TX的引脚改为PG11
改为如图所示
Code Generator第一个选上,这样软件会自动生成外设的.c和.h文件方便我们查看,按住ctrl+s生成代码
在main.c中插入如下代码
使用到的库函数HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)其中huart4是初始化串口控制器的结构体变量的指针,生成代码会被自动定义,pData指向应用缓冲器的指针,我把它定义成了一个ch全局变量,缓存大小为1,Size应用缓存大小(int的话就是4个字节,char一个字节数)Timeout超时设置,超过这个时间函数还没有数据函数不再等待,超时返回继续运行。
点击左上角小锤子编译
编译完成,没有报错,对其进行调试,用stlink来将写好的程序的下载到开发板上并调试。
编译完成
点击上面那个小虫子,选择Debug Configurations
调试器选择engineering mode
运行程序然后打开串口调试助手,轮询通信收发成功!
串口中断模式的通信后续有时间会继续更新,可以直接在轮询方式上修改,使能UART4的中断,并在主函数里添加函数HAL_UART_Receive_IT(),不仅能接收,还会去使能接收中断。
新人上手,第一篇笔记,不足之处请各位多多谅解。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
串口通信
怎样
去
解决
stm32
和FPGA
串口
通信
的问题呢
2021-12-06
1951
STM32
的
串口
功能该如何
去
实现
2021-08-11
1801
STM32
的USART
串口
通信
该怎样
去
实现
呢
2021-11-17
500
STM32
串口
是如何
去
实现
485双机
通信
的
2021-12-08
1104
如何利用Python
去
实现
Arduino UNO的
串口
通信
呢
2021-12-21
1340
如何
去
实现
基于Arduino IDE软件的
STM32
串口
通信
程序呢
2021-12-07
934
如何
去
实现
STM32
F1 USART
串口
通信
的软硬件设计呢
2022-02-16
815
stm32
通过
串口
向上位机发送数据的程序该如何
去
实现
呢
2021-12-10
1456
如何
去
实现
STM32
的USART
串口
通信
实验呢
2021-12-07
697
如何
去
实现
USB
串口
无线模块与
STM32
间的无线
通信
呢
2021-12-17
1901
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分