OpenEdv-开源电子网

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

[战舰F103] 战舰V3/精英板子实现两板子间的串口通信测试程序(串口2间的通信)

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

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

http://www.openedv.com/forum.php?mod=viewthread&tid=285681&extra=
有用户问到两103ZET6芯片如何实现串口通信,所以改了这个程序,程序参考该帖子http://www.openedv.com/forum.php?mod=viewthread&tid=284685

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



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

2.JPG 1.JPG



整个程序重要的是usart2.c和usart2.h,这两文件的程序与usart.c和usart.h类似。所以
请参考战舰V3/精英的F1开发指南手册关于串口通信实验章节部分
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); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口1初始化为115200
        usart2_init(115200);        //串口2初始化为115200
         LED_Init();                            //LED端口初始化
        KEY_Init();                  //初始化与按键连接的硬件接口
        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]








战舰V3精英板子实现两板子间的串口通信测试程序_串口2间的通信.rar

2.49 MB, 下载次数: 484

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

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2018-12-27 18:35:40 | 显示全部楼层
啊哈~加油!!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-2-6
在线时间
26 小时
发表于 2018-12-28 00:13:10 | 显示全部楼层
不对不对,没法用。我测试了一下乱码,
11111.jpg
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-2-6
在线时间
26 小时
发表于 2018-12-28 00:14:00 | 显示全部楼层
不对啊,我测试了一下。没法用、乱码,你自己看
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-9-16
在线时间
2 小时
发表于 2019-9-16 21:24:22 | 显示全部楼层
乱码的看看有没有共地操作,我刚刚试了一下代码是OK的,谢谢分享,欢迎交流。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-10-31
在线时间
12 小时
发表于 2020-11-16 19:54:02 | 显示全部楼层
大赞 我以后也会发
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-10-31
在线时间
12 小时
发表于 2020-11-16 19:54:28 | 显示全部楼层
让大家学起来不那么痛苦
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-6-5
在线时间
3 小时
发表于 2021-6-5 17:08:07 | 显示全部楼层
厉害厉害
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-5-3
在线时间
3 小时
发表于 2021-6-6 05:26:00 来自手机 | 显示全部楼层
请问那这个程序到底是在哪个板子上跑呢?程序只有一个啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-4-4
在线时间
4 小时
发表于 2021-6-20 19:29:51 | 显示全部楼层
能解释一下跳线帽为什么要这么接吗?我的是探索版F407,我用了串口2,但是用调试助手,发送不了数据,也接不到数据
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-10-12
在线时间
0 小时
发表于 2021-7-15 19:59:39 | 显示全部楼层
我想问一下,程序怎么下载?这个程序是精英版的程序,还是战舰的程序?还是把这一个程序同时要下载到两个板子里面吗?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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