STM32下的串口通信程序
一、串口通信简介
1、串口通信概念
串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式,它将需要传输的数据通过串口按位(bit)发送和接收字节。
分类:单工、 半双工、 全双工
2.USART通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)
USART是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
USART提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范以及调制解调器(CTS/RTS)操作。除此之外,它还允许多处理器通信,使用多缓冲器配置的DMA方式可以实现高速数据通信。
相比于USART来说,UART少了USART的同步通信功能,而只有异步通信的功能。简单区分同步和异步的方法就是看通信时需不需要对外提供时钟输出,如果需要对外提供时钟输出就是同步通信方式,否则为异步通信方式。我们平时用的串口通信基本都是 UART。
二、stm32串口通信实验
1.功能要求
1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。
野火产品资料链接:https://ebf-products.readthedocs.io/zh_CN/latest/
使用的为野火STM32F103指南者
2.步骤
下载图中圈出的三个压缩包
用usb线把stm32开发板和电脑相连接,stm32端连接的 ‘usb转串口’这个接口,再打开stm32开关,可以看到红色的小灯亮起。
连接过后打开CH341SER.EXE,点击安装,显示安装成功即可。
打开串口下载助手mcuisp
按如下方式配置:①搜索串口,设置波特率 115200(尽量不要设置的太高) ,②选择要下载的 HEX 文件、③校验、编程后执行、④DTR 低电平复位,RTS 高电平进入 bootloader、⑤开始编程。(前4步一定要调试正确,否则可能连接不上)
3.代码及效果图
打开1.程序源码_教程文档—>再打开1-[野火]《STM32库开发实战指南》(标准库源码)【优先学习】—>接下来点开1-书籍配套例程-F103VE指南者.rar下载解压后打开第21个串口通信文件中的USART1接发文件夹,打开后选择下图工程文件
打开后把其中stm32f10x_it.c文件的串口中断服务函数部分改为如下:
int i=0;
uint8_t ucTemp[50];
void DEBUG_USART_IRQHandler(void)
{
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp[i] = USART_ReceiveData(USART1);
}
if(ucTemp[i] == '!')
{
if(ucTemp[i-1] == '2'&&ucTemp[i-2] == '3'&&ucTemp[i-3] == &