通信的基本分类
按通信距离分为短中长三类
按通信介质也可以分为有线和无线
按通信的方式也可以分为串行和并行通信,串口通信只是众多串行通信当中的一种形式,通过开发板上的串口,将数据一位一位的一次传输。
所用设备
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(),不仅能接收,还会去使能接收中断。
新人上手,第一篇笔记,不足之处请各位多多谅解。
作者:翱翔的小菜鸡
串口
串口通信
通信