OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4309|回复: 2

[miniF103] MINIV3板子实现两板子间的串口通信测试程序(串口2间的通信)

[复制链接]

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10565
金钱
10565
注册时间
2017-2-18
在线时间
1913 小时
发表于 2018-12-28 14:59:43 | 显示全部楼层 |阅读模式
本帖最后由 peng1554 于 2018-12-28 15:01 编辑

http://www.openedv.com/forum.php ... 091&extra=page%3D10
有网友问到这个所以改了这个程序,程序参考该帖:http://www.openedv.com/forum.php?mod=viewthread&tid=284685

实现的功能是:
A板通过串口1与串口调试助手对话,A板在收到上位机发过来的数据
(以回车换行结束)后,将数据通过串口2发送给B板的串口2,B板的串口2
接收到数据后将数据发送给B板串口1打印,数据显示在串口调试助手上。



需要注意的是:
        1,电脑端串口调试助手波特率必须是115200.
        2,请使用XCOM/SSCOM串口调试助手,其他串口助手可能控制DTR/RTS导致MCU复位/程序不运行
        3,串口输入字符串以回车换行结束.
        4,请用USB线连接在USB_232,找到USB转串口后测试本例程.
        5,P4的PA9/PA10必须通过跳线帽连接在RXD/TXD上.
        6,A板的PA2,PA3分别接B板子的PA3,PA2,接法见下图

2.JPG 1.JPG
整个程序重要的是usart2.c和usart2.h,这两文件的程序与usart.c和usart.h类似。所以
请参考MINIV3的不完全手册关于串口通信实验章节部分
main()实现的是串口数据的处理。
当串口1接收到来自上位机的数据后,通过串口1打印数据到上位机,同时并将收到的数据转发给串口2,进入通过串口2发送数据给另外一块板子
当串口2接收到了来自另一块板子发来的数据是将串口2收到的数据转发给串口1,同时并将数据通过串口1打印到上位机

[mw_shl_code=c,true] int main(void)
{        
        u8 t;
        u8 reclen=0;
        delay_init();                     //延时函数初始化        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
        uart_init(9600);         //串口初始化为9600
        usart2_init(9600);        //串口2初始化为9600
        LED_Init();                           //初始化与LED连接的硬件接口

        while(1)
        {        
                if(USART_RX_STA&0X8000)                                                                                                //接收到一次数据了
                {
                         reclen=USART_RX_STA&0X7FFF;                                                                                //得到数据长度
                          USART_RX_BUF[reclen]=0;                                                                                         //加入结束符
                        for(t=0;t<reclen;t++)
                        {
                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);                //等待发送结束
                                USART_SendData(USART2, USART_RX_BUF[t]);                                 //向串口2发送数据
                        }
                        u2_printf("\r\n\r\n");//插入换行
                        printf("USART_RX_BUF:%s\r\n",USART_RX_BUF);
                        printf("reclen:%d\r\n",reclen);
                         USART_RX_STA=0;                 
                }
                 
                if(USART2_RX_STA&0X8000)                                                                                        //接收到一次数据了
                {
                         reclen=USART2_RX_STA&0X7FFF;                                                                        //得到数据长度
                          USART2_RX_BUF[reclen]=0;                                                                                 //加入结束符
                        for(t=0;t<reclen;t++)
                        {        
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);                //等待发送结束
                                USART_SendData(USART1, USART2_RX_BUF[t]);                                 //向串口1发送数据
                        }
                        printf("\r\n\r\n");                                                                                                //插入换行
                        printf("reclen:%d\r\n",reclen);
                        USART2_RX_STA=0;        
                }                                                                                         
        }        
}[/mw_shl_code]

MINIV3板子实现两板子间的串口通信测试程序_串口2间的通信.rar

2.04 MB, 下载次数: 334

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2015-9-29
在线时间
81 小时
发表于 2020-9-29 16:32:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-9-28
在线时间
13 小时
发表于 2020-11-20 10:33:04 | 显示全部楼层
u2_printf("\r\n\r\n");//插入换行
请问为什么需要这一行?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-5 10:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表