STM32库函数开发系列文章目录
第一篇:STM32F103ZET6单片机双串口互发程序设计与实现
文章目录
- STM32库函数开发系列文章目录
- 前言
- 一、STM32F103ZET6单片机双串口互发程序设计与实现是什么?
- 二、使用步骤
-
- 总结
前言
daodanjishui物联网核心原创技术之STM32F103ZET6单片机双串口互发程序设计与实现。
一、STM32F103ZET6单片机双串口互发程序设计与实现是什么?
单片机初学者用串口来调试程序是非常方便的,用什么仿真器,用什么寄存器等等都不如串口打印来得方便快捷。正点原子官方出品的串口调试工具也涉及到串口调试。不过我这个串口互发程序属于自己原创出品,主要当时用STM32的串口连接ESP8266的时候发AT指令太麻烦了,先用串口调试助手接USB转TTL给ESP8266发AT指令,然后再在单片机编写串口发送程序发送AT指令,最后在单片机编写串口接收程序接收ESP8266的数据。
后来就设计出一个串口互发程序来加速程序开发进程,直接给串口2发送AT指令,然后单片机接收到串口2的指令之后转发给串口1直接跟ESP8266通信。后期智能小车的设计中也直接利用了这个技术,让串口蓝牙和串口wifi的数据都可以实现串口互发。
二、使用步骤
1.下载程序
代码如下(示例):
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "usart2.h"
int main(void)
{
u8 t;
u8 len;
u8 len2;
delay_init();
NVIC_Configuration();
uart_init(9600);
uart2_init(9600);
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
u2_printf("电脑 send to串口2的数据为:\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART2, USART_RX_BUF[t]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
}
u2_printf("\r\n");
USART_RX_STA=0;
}
if(USART2_RX_STA&0x8000)
{
len2=USART2_RX_STA&0x3fff;
u2_printf("电脑 send to串口2的数据为:\r\n");
for(t=0;t<len2;t++)
{
USART_SendData(USART2, USART2_RX_BUF[t]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
}
u2_printf("\r\n");
printf("\r\n");
for(t=0;t<len2;t++)
{
USART_SendData(USART1, USART2_RX_BUF[t]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
printf("\r\n");
USART2_RX_STA=0;
}
}
}
2.测试步骤和程序说明
为什么用51单片机调试串口蓝牙模块或者是串口wifi模块很困难呢?因为串口只有一个,串口一旦用于与模块通信之后,就没有办法进行调试信息的打印了,这次分享的程序是基于stm32f103zet6单片机,串口1和串口2的信息可以互发,举一个例子说明:
这里面 写了串口1 和串口2
串口一的打印语句是printf()
串口二的打印语句是u2_printf()
串口一接pa9 pa10
串口二接pa2 pa3
这个代码的功能就是双串口的消息互相发送
比如电脑给串口1发送 aaa,则单片机通过串口1和串口2向电脑发送aaa,在电脑的串口调试助手可以看出来
比如电脑给串口2发送 bbb,则单片机通过串口1和串口2向电脑发送bbb,在电脑的串口调试助手可以看出来
总结
通过修改这套程序,可以让串口蓝牙调试模块或者是串口wifi模块的调试再也不需要用到usb转ttl模块进行测试了,可以直接用单片机两个串口来联合测试,单片机用一个串口接模块,用一个串口接电脑,这样用电脑串口助手给单片机发送AT指令的时候,单片机的串口就会将AT指令通过另一个串口转发到模块上,同时模块返回的信息也可以打印回电脑串口调试助手,相当方便。
后期会推出基于串口蓝牙的智能小车程序,用双串口进行调试。
工程截图:
源码工程下载链接:https://www.cirmall.com/circuit/19782/
点我直接跳转
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)