Visual Studio 2019 +STM32实现串口通讯

1.下载 免费版 visual studio 2019 并进行安装visualstudio.microsoft.com/zh-hans/
2.双击软件创建项目
3.选择windows窗体应用程序(.net framework)创建项目。
4.项目创建完成,初始界面。
5.选择左侧的工具栏,选择 组件,然后双击 串口组件将串口添加进入项目。
6.点击鼠标右键,修改串口模块的属性,包括 波特率等,本实验采用默认。
7.双击串口模块,添加数据接收中断函数
8.添加按钮模块,控制stm32开发板led灯的亮灭。
9.好的现在基本界面与模块添加完成,开始写程序,添加程序各种变量:
//串口通讯命令 public static byte[] sendorder = new byte[3] { 0x5a,0x00, 0xa5 }; //中间为命令,头尾为校验 00 关灯 01开灯 02关蜂鸣器 03开蜂鸣器 // 串口接收 public static byte[] revcmd = new byte[3];
10. 开灯led0程序如下:
private void button1_click(object sender, eventargs e) //开灯led0 { try { if (serialport1.isopen) { serialport1.close(); } serialport1.open(); //打开串口 serialport1.discardinbuffer();//清空缓冲区数据 sendorder[1] = 0x01;//发送开灯命令 serialport1.write(sendorder, 0, 3);//写入串口缓冲区 } catch { messagebox.show(请检查串口1是否打开); } }
11.关灯led0程序如下:
private void button2_click(object sender, eventargs e) { try { if (serialport1.isopen) { serialport1.close(); } serialport1.open(); //打开串口 serialport1.discardinbuffer();//清空缓冲区数据 sendorder[1] = 0x00;//发送开灯命令 serialport1.write(sendorder, 0, 3);//写入串口缓冲区 } catch { messagebox.show(请检查串口1是否打开); } }
12.蜂鸣器程序留给大家写,偷个懒(●'◡'●)
13.串口接收函数如下:
private void serialport1_datareceived(object sender, system.io.ports.serialdatareceivedeventargs e) //串口接收中断 { try { serialport1.read(revcmd, 0, 3); // 将接收缓冲区输入revcmd } catch { messagebox.show(请检查串口1是否打开); } this.invoke(new eventhandler(comservice)); //调用事件处理函数 } 15.串口接收数据处理函数如下: private void comservice(object sender, eventargs e) { if ((revcmd[0] == 0x5a) & (revcmd[1] == 0x01) & (revcmd[2] == 0xa5)) { button5.text = 灯开了; button5.backcolor = color.fromargb(255, 0, 0); //设置控件颜色为红色 // button5.backcolor = color.fromknowncolor(knowncolor.lightseagreen);; //设置控件颜色为 } if ((revcmd[0] == 0x5a) & (revcmd[1] == 0x00) & (revcmd[2] == 0xa5)) { button5.text = 灯关了; button5.backcolor = color.fromargb(224, 224, 224);//灰色 } }
 14.上位机程序编写完成。
15.下面开始写stm32开发板程序,这个比较简单,大家应该都会吧。(●'◡'●) 
void usart1_irqhandler(void)//串口1中断服务程序{ u8 res; usart1_startflag=1; if(usart_getitstatus(usart1,usart_it_rxne)!=reset) { res=usart_receivedata(usart1); //读接收到的字节,同时相关标志自动清除 if(usart1_rx_cnt<100) { usart1_rx_buff[usart1_rx_cnt]=res; usart1_rx_cnt++; tim_clearitpendingbit(tim7,tim_it_update);//清除定时器溢出中断 tim_setcounter(tim7,0);//当接收到一个新的字节,将定时器7复位为0,重新计时(相当于喂狗) tim_cmd(tim7,enable);//开始计时 } }} ///////////////////////////////////////////////////////////////////////////////////// //串口服务函数void usart1rx_service(void){ if(usart1_frameflag==1) { usart1_startflag=0; usart1_frameflag=0; //复位帧结束标志 usart1_rx_cnt=0;//接收计数器清零 if((usart1_rx_buff[0]==0x5a)&&(usart1_rx_buff[1]==0x00)&&(usart1_rx_buff[2]==0xa5)) //通讯测试 5a 00 a5 { sendbuf[0]=0x5a; sendbuf[1]=0x00; sendbuf[2]=0xa5; led0=1; usart1_senddata(sendbuf,3); } if((usart1_rx_buff[0]==0x5a)&&(usart1_rx_buff[1]==0x01)&&(usart1_rx_buff[2]==0xa5)) //通讯测试 5a 00 a5 { sendbuf[0]=0x5a; sendbuf[1]=0x01; sendbuf[2]=0xa5; led0=0; usart1_senddata(sendbuf,3); } }}
16.下面进行配置电脑,由于水平有限,本程序需要设置电脑的com口且需要改为com1如下图:
或者更改vs2019中串口模块的属性,如下:
17.好的完成了,谢谢大家。


讨论SERIALTEK公司发布PCIE GEN5 X16协议分析仪的性能与结构与应用领域
霍尔电流传感器在直流电流检测中的应用
英特尔希望跟业界合作伙伴共同致力和推动边缘计算的发展
安森美半导体在CES 2017展示用于快速充电和高速数据传输的全面的USB Type-C方案
超导磁共振成像设备以进口贸易为主,2020年德国是主要进口市场
Visual Studio 2019 +STM32实现串口通讯
全面碾压三星,台积电5nm斩获大批客户
微型电流模式升压DC/DC变换器
贵出天际!几款你很难买到的手机:小米MIX、华为荣耀Magic、魅族Pro6 Plus、华为Mate9保时捷版
Windows下硬件中断虚拟设备驱动程序开发工具和编程方法
VLAN是什么技术 wlan常用的vlan技术包括哪些
TCL华星宣布6代柔性AMOLED产线开始量产出货
MWC2018让世界的目光聚焦中国遇见更美好未来
新材料在中国科技产业地位的突出变化
锂离子电池产量71.5亿只,同比增长1.3%
高通微软又有新合作?
中兴就是一杆秤,所有的企业应以它为准星
节能减排,加强污水垃圾处理和污染治理!
50条电气控制知识和电气实用速算法资料合集
程序员怎样高效的学习