基于MATLAB App搭建STM32用户交互界面(1)——MATLAB与STM32串口通讯的实现

这篇具有很好参考价值的文章主要介绍了基于MATLAB App搭建STM32用户交互界面(1)——MATLAB与STM32串口通讯的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近几个月,DIY了块板子,选用的芯片是STM32F407,该板子与上位机(也就是电脑)的通讯方式有两种,一是用串口发送程序进程数据,二是用网口发送原始数据。在调试时,需要用XCOM接收串口信息、用XNET接收网口信息。由于这块板子是用来学术研究的,数据每次都要拷到MATLAB中分析,非常的不方便。于是想一步到位,使用 MATLAB App 制作一个GUI实现与单片机的交互。

        本系列文档将记录该用户界面的搭建过程,本人才疏学浅,如有错误,还请指正,废话不多说,直接上本人的移植记录。

一、 MATLAB App设计

        首先打开MATLAB软件,在命令行窗口输入“appdesigner” 打开MATLAB App,该界面还是很友好的,如下图所示,用“文本区域”、“下拉框”、“按钮”组件简单搭建了一个界面。

matlab 串口通讯程序,STM32学习,stm32,嵌入式硬件,单片机

         网上有不少关于MATLAB与单片机的串口通讯介绍资料,讲的也很详细。MATLAB :【11】一文带你读懂serialport串口收发原理与实现_Alex-YiWang的博客-CSDN博客https://blog.csdn.net/Alex497259/article/details/125922427

         但有一个很奇怪的Bug,在 MATLAB App 中,不管是用 serial 还是 serialport 函数,串口始终跳不进回调函数,同样的代码在.m文件却可以正常运行。本人能力有限,哪位大佬知道原因还请告知。

        不断调试,最终选择了用 serial 函数加上轮询实现与单片机的交互,所设计的串口函数代码如下:

properties (Access = public)
        USART_SerialObj      % 串口结构体
end 


methods (Access = private)
        
        %=========================串口初始化函数==========================
        function USART_startSerial(app, ~)
            delete(instrfindall);                               %删除串口
            app.USART_SerialObj = serial('COM4','BaudRate',115200,'StopBits',1,'Parity','none');       %新建串口
            fopen(app.USART_SerialObj);                         %打开串口
            fprintf(app.USART_SerialObj, '%s', 'USART_OK');     %发送握手信息
        end

        %======================串口接收回调函数轮询=======================
        function USART_readSerial(app,~)
            while app.USART_SerialObj.BytesAvailable == 0                   % 循环检查串口是否有新数据
                pause(0.1);
            end    
            data = fread(app.USART_SerialObj, app.USART_SerialObj.BytesAvailable, 'char');                  % 读取串口接收到的数据
            app.USART_Rev_Data.Value = [app.USART_Rev_Data.Value;convertCharsToStrings(char(data'))];       % 显示接收到的数据 读者根据自身代码修改
            app.USART_readSerial();                                                                         % 继续循环读取数据
        end
end

二、单片机程序设计

        单片机上的串口按正常流程调用串口初始化函数,这里我添加的了一个握手信号,握手程序的代码如下:

u8 USART_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节.
//接收状态
//bit15,	接收完成标志
//bit14,	接收到0x0d
//bit13~0,	接收到的有效字节数目
u16 USART_RX_STA = 0;       //接收状态标记	

#define PHY_USART_PC_HANDSHAKE  "USART_OK"             //定义上位机握手信号

//串口上位机握手
unsigned char PhyUart_PC_handshake(void)
{
    u8 len,t;
    char data_Rev[16];

    if(USART_RX_STA&0x8000)
    {					   
        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
            
        for(t = 0;t<len;t++)
            data_Rev[t] = USART_RX_BUF[t];
        for(t = len;t<16;t++)   
            data_Rev[len] = '\0';
            
        if(strcmp(data_Rev,PHY_USART_PC_HANDSHAKE) == 0)    //与上手机握手验证
        {
            USART_RX_STA=0;
            return 1;
        }
        else
        {
            USART_RX_STA=0;
            return 0;
        }
    }
}

三、程序运行效果

        板子连接上电脑,选择好串口和波特率,点击连接,串口成功接收到了板子发送来的信息。

matlab 串口通讯程序,STM32学习,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-696764.html

到了这里,关于基于MATLAB App搭建STM32用户交互界面(1)——MATLAB与STM32串口通讯的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32连接OV2640摄像头串口方式在PyQt5界面上展示视频界面 以及使用MQTT方式进行展示

    STM32连接OV2640 视频源接入到PyQt5界面中 作为AI模型的输入,视频流是非常重要的。在本文中,我们将介绍如何将STM32连接到OV2640摄像头,并将视频流接入到PyQt5界面中。 硬件连接 首先,我们需要将OV2640摄像头连接到STM32上。我们可以使用以下连接方式: OV2640 | STM32 ------|------

    2024年02月06日
    浏览(59)
  • 【基于STM32的串口通信----用软件模拟】

    注: 这是我上班第一次学习串口通信,此文章基于STM32F4系列单片机。 1、平常所用串口通信都是用的单片机外设,是单片机内部自带的模块,只需要配置好初始化就可以使用,在这里老师为了更好的让我们理解其原理所以让我们模拟串口通信; 2、软件模拟串口通信就是用普

    2024年02月05日
    浏览(39)
  • 基于stm32与串口通信的freeMaster使用

            从安装驱动程序FMASTERSCIDRV.exe的安装路径上获取源码,如图1所示。其中src_common文件夹里放着串行通信通用的驱动源码,将其全部复制到自己项目的文件中。src_platforms文件夹里放着与硬件平台相关的示例源代码,如图3、4所示,我们选择基于Arm® Cortex®-A、Cortex-R和

    2024年02月09日
    浏览(97)
  • 【STM32开发环境搭建】 - st-link驱动安装和串口驱动安装

    下载地址:https://download.csdn.net/download/weixin_39035140/86248921 包含软件如下: 1、下载线我们使用了st-link,为了能够下载程序到开发板,需要先安装st-link驱动。打开设备管理器,可以通过热插拔法确认是哪一个设备(STM32 STLink显示感叹号就是缺少驱动),右击更新驱动,选择浏览

    2024年02月12日
    浏览(48)
  • stm32基于UART串口实现modbusRTU(软件方式)

     此程序中, 串口通信方式: 115200-n-8-1, modbus协议要求帧与帧之间的间隔必须大于3.5个字符时间间隙作为帧与帧之间的分割.  字符时间计算公式: interval_time = character_interval * 8 / baud_speed * 10 ^ 6 (微秒) 1.1 设置定时器, 超时时间为interval_time. 1.2 设置stm32的uart串口接收数据中断, 每

    2024年02月15日
    浏览(35)
  • 【单片机】基于STM32的UART串口通信

    简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作。实验内容基于 正点原子精英板 开发板,单片机芯片为 STM32F103ZET6 。 在后面我会以我使用的STM32F429开发板来举例讲解(其他STM32系列芯片大多数都可以按照这些步骤来操作

    2024年01月17日
    浏览(78)
  • 【STM32】-串口开发经验分享-基于RTOS+空闲中断

    目录 1. 概述     2.串口介绍 2.1 原理框图 2.2 RS-232C 2.3 RS-422 2.4 RS-485 2.5 UART 3. STM32 USART介绍 4. CubeMx生成Uart初始化代码 4.1 NewProject选择单片机型号 4.2 设置rcc时钟  4.3 设置Usart 4.4 初始化代码 4.5 注意 5 工程源码解析 5.1 程序架构 5.2 源码 fml_ring_buffer.c fml_usart.c app_usart_task.c stm3

    2023年04月16日
    浏览(51)
  • STM32F4 基于USART串口的蓝牙通信

    目录 一、硬件资源 连接方案 其他配置 二、实验原理 基本定义 USART介绍 USART工作原理 数据发送 数据接收 蓝牙HM-10配置 三、代码部分 usart.c usart.h Serial.c Serial.h main.c 结语 STM32F401,OLED,蓝牙hm10 连接方案 设备1的TX与设备2的RX连接,这样设备1发送的数据可以被设备2接收到。

    2024年01月17日
    浏览(48)
  • 基于STM32F1以及STM32CubeMx实现串口中断通讯(字符串发送与接收)

    首先选好自己的板子并打开软件设置,本实验基于STM32F103ZET6实现,打开软件后如图: 打开外部高速晶振,然后接着配置时钟: 将时钟频率修改为72MHz,接着设置接线方式为SW 接下来需要使用串口中断通讯,打开我们的串口设置并打开中断 这里波特率设置为115200,数据位为

    2024年02月09日
    浏览(47)
  • STM32基于HAL库的串口接受中断和空闲中断

    在通信方面。UART由于全双工通信,可以同时接受数据和发送数据而被广泛使用。 而接受数据则又有很多种方法 比如: 1根据结束符判断,数据是字符串形式,所以一般串口接受的接受符就是 \\\"rn\\\"  换成16进制ascil码显示就是 0X0D   0X0A (对应rn)  2定时器中断,设计\\\"喂狗信号量

    2023年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包