精华内容
下载资源
问答
  • labview与stm32串口通信
    2022-03-30 22:52:58

    今天在初学LABVIEW的时候遇到,32串口发送信息的时候,LABVIEW确实可以接收到信息,但是LABVIEW给另一个串口调试助手发消息的时候,是可以收到的。但是给STM32发送却无法发送。

    原因是:32接收数据是以/r/n为标志截尾的,一般初学者写labview的串口发送缓存区是不加这些的,因此,这样加入回车和换行符,即可以实现了。

     

    更多相关内容
  • 1.电机测速 2.STM32与labview串口通信
  • 程序功能:单片机引脚PD8电平为高时,单片机向上位机发送指令0xAA,PD8电平为低时,不发送指令,同时DS0灯闪烁(单片机为正点原子探索者STM32F407ZGT6) 基于simulink的下位机程序如下:自动生成代码后通过Keil编译...

    (一)程序功能:单片机引脚PD8电平为高时,单片机向上位机发送指令0xAA,PD8电平为低时,不发送指令,同时DS0灯闪烁(单片机为正点原子探索者STM32F407ZGT6)

    基于simulink的下位机程序如下:自动生成代码后通过Keil编译、下载到STM32就行了。注:经测试把if-else函数换成enable函数也可以。

    基于labview的上位机程序:

    前面板:程序面板:

    注意:前面板要以16进制显示

    (二)上述方法编写的下位机程序,当PD8引脚为高时,串口会不停的发送指令。而有时候只需要当PD8引脚电平发生变化时,只发送一次指令就行了,这个时候可以采用外部中断的方式来实现上述要求。具体如下:要先在STM32Cubemx里将PD9设置为外部中断模式

     

    展开全文
  • 程序功能:labview发送指令,当第一个和第三个数分别为0x55和0xAA时,开发板相应的指示灯分别会灭(这里用的是正点原子的探索者,0x55对应DS0,0xAA对应DS1,需要提前通过STM32Cubemx配置底层环境) 基于simulink的...

    程序功能:labview发送指令,当第一个和第三个数分别为0x55和0xAA时,开发板相应的指示灯分别会灭(这里用的是正点原子的探索者,0x55对应DS0,0xAA对应DS1,需要提前通过STM32Cubemx配置底层环境)

    基于simulink的下位机程序:自动生成代码后通过Keil编译、下载到STM32就行了

    基于labview的上位机程序:

    前面板:    程序面板:

    注意前面板的输入字符一定要改为16进制显示,然后输入5500 AA,(00可以改为任意数字)
     

    展开全文
  • Labview作为上位机下位机STM32通过串口通信,通信使用visa驱动,可以设置通信波特率等。
  • 串口通信(Serial Communications)是指外设计算机间,通过数据线按位进行传输数据的一种通讯方式。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。虽然串口通信...

    串口通信(Serial Communications)是指外设与计算机间,通过数据线按位进行传输数据的一种通讯方式。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。虽然串口通信传输速度不高,但程序简单,能实现远距离通信且成本较低,通信长度可达1200米。常用的仪器仪表大多都支持串口通信协议。
    LabVIEW的自带函数库中有现成的串口通信模块,方便快速搭建堪比串口调试助手的软件。
    在这里插入图片描述
    今天分享一个STM32F103C8T6工控板与LabVIEW的串口通讯实例,主要工作如下:
    1)基于Keil MDK写一个串口通信程序,主要配置STM32F103C8T6芯片的USART1相关参数并创建串口1中断服务函数(对应引脚为PA9和PA10,可在手册中看到,如下图所示);
    在这里插入图片描述
    2)基于LabVIEW编写一个串口调试助手,用于与STM32F103C8T6工控板进行实时通信,具体使用的串口通信模块位于程序框图的函数选板–>Instrument I/O -->Serial里,如下图所示。
    在这里插入图片描述
    3)具体实现的功能为:从LabVIEW发送一个命令到STM32F103C8T6工控板中,然后STM32F103C8T6工控板不进行任何处理,将接收到的命令反馈给LabVIEW。

    硬件部分
    1)某宝网上购买的STM32F103C8T6工控板,价格50¥左右;
    2)某宝网上购买的232转USB数据线(如下图所示),价格15¥左右。
    在这里插入图片描述
    STM32F103C8T6工控板部分原理图
    1)下图是STM32F103C8T6工控板的芯片接线,PA9和PA10对应USART1_TX和USART1_RX,PA9和PA10经SP3232EEN-L/TR芯片至9pin的接口处,如下图所示。
    在这里插入图片描述
    思路
    1)对于STM32F103C8T6,配置并使能USART1,使能USART1更新中断并创建相关中断服务函数;
    2)对于STM32F103C8T6,在接收到从LabVIEW发来的串口数据后,运行中断服务函数,将接收到的数据传回LabVIEW;
    3)对于LabVIEW,配置串口通信,相关参数(如波特率、校验位、停止位等必须与STM32F103C8T6的USART1配置的参数一样!!!
    4)对于LabVIEW,利用事件结构的while循环,每当发送命令的控件发送一次串口数据时,并接收一次串口数据。

    相关代码
    1)针对STM32F103C8T6工控板

    1. 串口初始化配置函数(头文件)
      该头文件只包含一个函数,即针对串口1的初始化配置函数,用于跟电脑进行串口通信:
    /**
     ********************************  STM32F10x  *********************************
     * @文件名称: serial_communication.h
     * @作者名称: 闲人Ne
     * @库版本号: V3.5.0
     * @工程版本: V1.0.0
     * @开发日期: 2021年1月17日
     * @摘要简述: serial_communication头文件
     ******************************************************************************/
    /*----------------------------------------------------------------------------
     * @更新日志:
     * @无
     * ---------------------------------------------------------------------------*/
    #ifndef __SERIAL_COMMUNICATION_H
    #define __SERIAL_COMMUNICATION_H
    /* 函数申明 ------------------------------------------------------------------*/
    void My_USART1_Init(void);
    #endif /* __SERIAL_COMMUNICATION_H */
    /****** Copyright (C)2021 闲人Ne. All Rights Reserved ****** END OF FILE *******/
    
    1. 串口初始化配置函数(源文件)
      串口初始化配置常规操作,大家可作为范例参考:
    /**
     ********************************  STM32F10x  *********************************
     * @文件名称: serial_commuication.c
     * @作者名称: 闲人Ne
     * @库版本号: V3.5.0
     * @工程版本: V1.0.0
     * @开发日期: 2021年1月17日
     * @摘要简述: serial_communication源文件
     ******************************************************************************/
    /*-----------------------------------------------------------------------------
     * @更新日志:
     * @无
     * ---------------------------------------------------------------------------*/
    /* 包含的头文件 ---------------------------------------------------------------*/
    #include "serial_communication.h"
    #include "nvic_configuration.h"
    #include "stm32f10x.h"
    /************************************************
    函数名称:My_USART1_Init()
    函数功能:初始化USART1管脚配置,
    入口参数:无
    返回参数:无
    开发作者:闲人Ne
    *************************************************/
    void My_USART1_Init(void)
    {
     GPIO_InitTypeDef GPIO_InitStruct;
     USART_InitTypeDef  USART_InitStruct;
     // 第一步,使能相关时钟
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);      // 使能GPIOA时钟
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);     // 使能USART1时钟
     // 第二步,串口复位 
     USART_DeInit(USART1);                                      // 将外设 USARTx寄存器重设为缺省值,复位USART1
     // 第三步,GPIO端口模式设置,PA9对应TX,PA10对应RX
     GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;                 // 复用推挽输出
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;                       // 选择GPIO引脚9,作为发送端
     GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;               // 随意设置,不重要
     GPIO_Init(GPIOA,&GPIO_InitStruct);                                          
     GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;           // 浮空输入
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;                      // 选择GPIO引脚10,作为接收端
     GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;               // 随意设置,不重要
     GPIO_Init(GPIOA,&GPIO_InitStruct);  
     // 第四步,串口1参数初始化,在电脑上进行串口通信时,串口调试软件也需按下述参数设置
     USART_InitStruct.USART_BaudRate=115200;                                    // 波特率为115200
     USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 不使用硬件流控制
     USART_InitStruct.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;                 // 收发都使能
     USART_InitStruct.USART_Parity=USART_Parity_No;                             // 不用奇偶校验位                           
     USART_InitStruct.USART_StopBits=USART_StopBits_1;                          // 设置1个停止位
     USART_InitStruct.USART_WordLength=USART_WordLength_8b;                     // 设字长为8,因为不用奇偶校验 
     USART_Init(USART1,&USART_InitStruct);  
     // 第五步,初始化NVIC,开启指定中断   
     NVIC_Configuration();
     USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);  // 使能USART1的USART_IT_RXNE中断,RXNE是状态寄存器USART_SR的第5位,意思是接收中断
     // 第六步,使能串口  
     USART_Cmd(USART1,ENABLE);                     // 使能USART1外设
    }
    /****** Copyright (C)2021 闲人Ne. All Rights Reserved ****** END OF FILE *******/
    
    1. 串口1中断服务函数
      通过上面可知,在串口1初始化配置时,使能了串口1的接收中断,因此需要编写对应的中断服务函数。
    /**********************************************************************************
    函数名称:USART1_IRQHandler()
    函数功能:USART1中断,当STM32F103C8T6通过串口1接收到从电脑发来的串口数据时,将所收到的数据再发回去。
    入口参数:无
    返回参数:无
    开发作者:闲人Ne
    ***********************************************************************************/
    void USART1_IRQHandler(void)      // 函数名称是由startup_stm32f10x_hs.s文件里定义的                                              
    {
     u8 data;
     if(USART_GetITStatus(USART1,USART_IT_RXNE))   // 检查USART1的接受中断USART_IT_RXNE发生与否                             
     {
      data=USART_ReceiveData(USART1);              // 返回USART1最近接收到的数据
      USART_SendData(USART1,data);                 // 通过外设USART1发送单个数据                                           
     }
    }
    
    1. 中断优先级配置
      既然有中断服务函数,那么必须先进行中断优先级配置:
    /************************************************
    函数名称:NVIC_Configuration()
    函数功能:中断优先级配置
    入口参数:无
    返回参数:无
    开发作者:闲人Ne
    *************************************************/
    void NVIC_Configuration(void)
    { 
     NVIC_InitTypeDef NVIC_InitStruct;
     // 串口1中断优先级配置
     NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;           // 选择位于stm32f10x.h文件中STM32F10X_HD中的USART1_IRQn
     NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;             // 使能上述中断通道
     NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;   // 因为没有别的中断,参数可设0~3之间
     NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;          // 因为没有别的中断,参数可设0~3之间
     NVIC_Init(&NVIC_InitStruct);            
    }
    
    1. 主函数
    /**
     ********************************  STM32F10x  *********************************
     * @文件名称: main.c
     * @作者名称: 闲人Ne
     * @库版本号: V3.5.0
     * @工程版本: V1.0.0
     * @开发日期: 2021年1月17日
     * @摘要简述: 主函数
     ******************************************************************************/
    /*-----------------------------------------------------------------------------
     * @更新日志:
     * @无
     * ---------------------------------------------------------------------------*/
    /* 包含的头文件 --------------------------------------------------------------*/
    #include "led.h"
    #include "sys.h"
    #include "delay.h"
    #include "serial_communication.h"
    #include "nvic_configuration.h"
    /*********************************************************************************
    函数名称:int main()
    函数功能:主函数,LED灯每隔500ms改变一次状态,表示系统正常运行,串口数据收发由中断控制
    入口参数:无
    返回参数:int
    开发作者:闲人Ne
    **********************************************************************************/
    int main(void)
    {
     delay_init();
     LED_Init();
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);      // 中断优先级配置                        
     My_USART1_Init();
     D1=1;         // LED1灭
     D2=0;         // LED2亮
     while(1)
     {
        D1=!D1;
        D2=!D2;   
        delay_ms(500);
     }
    }
    /****** Copyright (C)2021 闲人Ne. All Rights Reserved ****** END OF FILE *******/
    

    2)针对LabVIEW上位机
    LabVIEW工程可参考范例:Continuous Serial Write and Read.vi,该范例是最简的连续串口通信范例,在程序框图钟进行简单的修改:即在最后的While循环里添加等待1000ms模块(如下图所示)
    在这里插入图片描述
    回到该范例的前面板,硬件连接好后,首先先选择com端口(如下图所示:COM21),然后按照之前在STM32F103C8T6工控板上的串口配置参数进行配置,如波特率设为115200等,其他参数默认即可。
    在这里插入图片描述
    实验效果
    运行前,将LabVIEW前面板上的Write和Read控件设为真(即激活发送和接收功能),先烧入STM32F103C8T6工控板的程序并运行,然后运行LabVIEW程序,运行结果如下图所示:
    在这里插入图片描述
    当Response显示字符串的控件每隔1000毫秒接收到一次串口数据时,则证明串口通信成功。

    经验分享

    1. 在进行嵌入式开发时,利用仿真器Debug程序是首选方案,当然利用串口调试助手查程序的问题也是工程师比较喜欢的手段;
    2. 可以利用LabVIEW,串口通信为一些嵌入式开发板开发定制化的上位机软件:如开发板的功能是采集一些实验数据,利用LabVIEW为期开发一个上位机软件,通过串口通信获取开发板采集的数据,然后记录,生成报告等。这对于实验室一些非标测试的项目,开发的成本是很亲民的~
    展开全文
  • 程序功能:下位机接收到0x01后,PF9变为高;PD8变为高后,PF10变为高;PD9变为高后,下位机发送一次0xAA给上位机;其中PD8、PD9采用外部中断的方式进行控制。 注:具体子函数的内容可以参考前面的博文 ...
  • 介绍了芯片STM32F103基于通用同步/异步收发器和LabVIEW基于虚拟仪器软件架构的串口配置过程,对设计中的关键程序进行了重点分析,并通过硬件平台验证了...最终实现了基于RS232协议的ARM芯片STM32与LabVIEW的串行通讯
  • labview与stm32

    2018-03-29 15:49:18
    labview与stm32f1进行串口通信,文件里包含了labview的ni文件和stm32的代码
  • 上位机使用LABVIEW显示心跳曲线,采用枚举方式选择串口,单片机采用STM32F103C8,心跳检测芯片采用AD8232,利用单片机自身AD转换。
  • 通过python实现安卓手机与stm32串口通信
  • 包含7个部分 1.labviewstm32串口通讯 2.stm32的编程 3.16进制数据转换为jpg图片 4.labview人脸识别 5.项目报告 6.项目ppt 7.项目路演视频
  • 使用Labview写了一个串口通信的上位机,但是STM32与上位机传输数据时就会卡死,二者之间通信使用的数据线。 解决方法: 由于开发板上有一键下载电路,可能是电路和上位机有什么冲突导致传输数据时卡死,因此不要...
  • STM32 Labview USB通信.rar

    2020-01-17 11:03:29
    STM32 Labview USB通信例子,实现串口通信labview读取数据! 包含STM32工程文件和VI文件
  • Labview与单片机进行串口通信

    万次阅读 多人点赞 2021-05-27 12:36:31
    Labview与单片机进行串口通信 做毕业设计时,遇到需要使用Labview作上位机单片机进行串口通信的情况,在这里大家分享开发的过程。 一、简介 这里使用基于Labview设计的程序作为上位机,基于Keil设计单片机程序作...
  • 需要进行下位机数据上传到上位机,本程序是利用LabVIEW语言编写的可以下载直接利用。
  • 基于STM32单片机和Labview的温湿度波形实时显示串口助手(一)----手把手教学
  • 运用labview读取RE232的串口数据,可以实现单片机等仪器的通讯
  • labview串口通讯
  • labVIEW与单片机实现串口通信的设计过程

    万次阅读 多人点赞 2018-11-17 08:59:25
    1.概述 在现代测控系统中,我们经常会采用上位机和下位机的开发...上位机的实现可以通过各种高级语言,比如VB、Delphi等以及NI公司的图形化虚拟仪器软件开发环境LabVIEW.由于LabVIEW采用的是图形化的编程方法,所以...
  • 利用STM32单片机采集信号,通过串口与SIM900A无线模块进行通信;SIM900A服务器采用TCP/IP建立连接,通过IP地址和端口号将数据发送至服务器,上位机软件基于TCP/IP协议接收服务器所传输的数据,实时显示并将其存储...
  • 基于LABVIEWSTM32USB数据采集。可用串口stm32下位机虚拟串口发送数据到labview显示
  • STM32串口发送数据和接收数据方式总结

    万次阅读 多人点赞 2020-12-24 12:26:20
    关注、星标公众号,直达精彩内容串口发送数据 1、串口发送数据最直接的方式就是标准调用库函数 。voidUSART_SendData(USART_TypeDef*USARTx,uin...
  • 关于STM32 串口二、串口串口调试助手无法显示的...如果要使用串口与外界模块进行通讯的话,是要使用软串口的。而STM32 同样也是这个道理,其所自带的TX,RX只有一个是电脑相连的。 可以看到在红线圈出的位...
  • Labview串口读写.vi

    2019-04-20 16:01:56
    Labview串口读写,实现串口的读写功能,单片机51,stm32串口仿真等实现数据上传。
  • 使用labview自带的“连续串口写入和读取”的VI,在和stm32连接时,通过labview高亮显示,发现在配置串口的时候就导致了stm32死机,也不能说死机,不知道程序跑飞到哪里了。 问题描述:单纯的使用中断从pc下发数据然后...
  • 主要结构: ...3.后台LABVIEW通讯功能,安装一键报警按键,当发生危险后通过一键报警,能够引起后台的注意,并后台取得通讯联络; 4.GPS定位功能,人员的位置在LABVIEW软件上加载百度地图显示出来。
  • 2.安装后重新插入STM32 USB设备,电脑就会显示STM32 MASS STORAGE设备; 3.进入VISA驱动安装指导界面,选择对应的USB设备,进行驱动正常安装即可。 4.打开LABVIEW在下拉框中就会出现对应的设备名称。 ...
  • STM32心跳采集程序加labview实时显示系统,采集心跳的用淘宝普通的心跳模块即可,通讯使用的是串口
  • 电子-LabVIEW串口通讯通信协议.zip,单片机/嵌入式STM32-F3/F4/F7/H7

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 180
精华内容 72
关键字:

labview与stm32串口通信