糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信

信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信

时间:2020-03-05 21:50:41

相关推荐

信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信

串口通信由两种方式,第一种就是用微机原理课上学过的TX和RX两个接口进行通信。不过根据去年的经验,这个板子直接用TX和RX两个接口进行通信容易被烧坏,所以我们就用更简单的usb通信。

在发stm32的时候,老师会给你一个usb的供电线,这个线也是可以当作串口线使用的。而且我也更推荐用这个,因为你可以用一根线实现供电与通信。如果你不用这个usb连接到上位机上通信,你还要再买个充电宝通过usb供电,这样有点多此一举。

那么我们先看上位机需要什么,对于电脑来说,你需要下载以一个串口调试助手。然后打开串口。

对于stm32,则需要用程序来打开串口。我们具体看一下该怎么去做:

#include "mbed.h" //头文件Serial s1(USBTX, USBRX); //这里是调用串口的命令,USBTX和USBRX指明了是通过USB先进行串口连接//如果使用电脑做为另一个串口设备的话,需要提前安装电脑端的串口助手DigitalOut myled(LED1);int main() {s1.baud(9600);//设置波特率为9600,上位机的波特率也要设置一样,不然会乱码while (true) {s1.printf("hellow world n");char c = pc.getc();if(c=='a'){myled = !myled}

#include "mbed.h" 没啥可说的,就是引入了头文件。

Serial s1(USBTX, USBRX); 是用了 Serial函数,也就是串口的调用函数,其规格是Serial A(t,r)第一个t是指使用哪个TX接口,这里系统已经将usb串口的TX封装成了USBTX,同理usb串口的RX封装成了USBRX。

也就是说当使用s1这个串口的时候,使用的usb进行通信。

在主函数里我们要先定义波特率,也就是一秒通过串口传多少个符号,这里要注意上位机与下位机的波特率必须一致,不然会乱码。道理也很简单,如果你传的速率是a,我接受的速率是b那么肯定我们就不是在一个频道上讲话(跨服聊天),这样必然乱码。

在电脑上直接设置就行,stm32上要用s1.baud(9600);设置,括号里面的数值代表了波特率大小,至于为什么是9600只能说是一种习惯。

s1.printf(“hellow world n”);相当于printf(“hellow world n”);,就是用串口传输字符串“hellow world n”然后打印出来。

c = pc.getc();是指从上位机那接受一个字符,然后保存做c。 这样有一个好处,就是上位机可以直接通过串口控制stm32, stm32只需要根据字符c的不同做出不同的动作就行。

在代码的最后一部分我做了一个示例,只要上位机穿过来一个字母‘a’,就改变LED灯的亮灭状态。

char c = pc.getc();if(c=='a'){myled = !myled

如果觉得《信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。