基于stm32与串口通信的freeMaster使用

这篇具有很好参考价值的文章主要介绍了基于stm32与串口通信的freeMaster使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 驱动安装与源码移植

        从安装驱动程序FMASTERSCIDRV.exe的安装路径上获取源码,如图1所示。其中src_common文件夹里放着串行通信通用的驱动源码,将其全部复制到自己项目的文件中。src_platforms文件夹里放着与硬件平台相关的示例源代码,如图3、4所示,我们选择基于Arm® Cortex®-A、Cortex-R和Cortex-M内核为硬件开发平台的S32xx文件,将其文件夹内容也复制项目文件中,以.c、.h文件格式添加进MDK工程。

移植freemaster,学习记录,stm32

图1.1

移植freemaster,学习记录,stm32

图1.2

移植freemaster,学习记录,stm32

图1.3

 2. 修改源码配置

2.1 修改freemaster_cfg.h文件配置

2.1.1 选择中断或轮询驱动的通信模式 移植freemaster,学习记录,stm32

 图2.1.1

        有三种方式只能选择其中一种,长中断和短中断模式的区别在于,如果选择长中断模式,则串行通信和FreeMASTER协议解码和执行都是在FMSTR_Isr()中断服务程序中完成的;而短中断模式则是原始串行通信由FMSTR_Isr()中断服务例程处理,而协议解码和执行则分解到轮询里,由FMSTR_Poll()例程处理。在我们的例子中,我们将使用短中断模式,中断处理尽量省时。

2.1.2 选择通信接口(方式)并使能

移植freemaster,学习记录,stm32

 图2.1.2.1 G4芯片项目 

移植freemaster,学习记录,stm32

 图2.1.2.2 F4芯片项目 

        可选多种通信方式实现底层与PC之前的通信,常用的有SCI、CAN、USB,在本例中,我们将使用串口通信,因此将FMSTR_USE_SCI设置为1,并且将其他清除为0。同时将SCI基地址映射到USART1外设基地址上,即配置FMSTR_SCI_BASE,最后将FMSTR_DISABLE清零,使能FreeMASTER。

2.1.3 根据需求选择Recorder的缓冲区大小

        如果在PC中设置了Recorder记录仪观测量的数量为n(打勾选择显示),同时设置了PC每显示一次的采样数量为Record samples,如观测量数量为1,记录仪显示的采样点为1000,则FMSTR_REC_BUFF_SIZE > (n * record_samples),本例中我们设置FMSTR_REC_BUFF_SIZE为8KBytes,当然了还要考虑所用芯片本身RAM的大小来合理设置,如图10所示,因此在使用PC时设置记录仪的属性时需要注意这层关系。

移植freemaster,学习记录,stm32

图2.1.3.1 Recorder主要配置

移植freemaster,学习记录,stm32

图2.1.3.2 Recorder缓冲区大小配置

 2.2 修改freeMaster硬件依赖文件(freemaster_XXXxx.h)中的宏定义

        因为移植过程中使用的例子是硬件为S32xx系列的,而我们用的是ST32G4系列,因此需要修改文件freemaster_S32xx.h文件中寄存器相关的宏定义。

2.2.1 根据芯片手册修改需要的寄存器偏移地址宏定义

移植freemaster,学习记录,stm32

移植freemaster,学习记录,stm32 图2.2.1.1 G4项目

移植freemaster,学习记录,stm32

  图2.2.1.2 F4项目

2.2.2 修改寄存器访问操作的宏定义(由操作可知上面需要修改哪些地址)

        SCI访问寄存器的宏定义也需要修改,我们使用的是SCI而不是LPUART,因此在预编译#if FMSTR_USE_LPUART........#else........中只需修改#else后面的内容,这里最初定义的一些位名称与项目所用芯片的位名称对不上但也相近,检查手册找到对应功能即可对上,修改为如下列图所示。

移植freemaster,学习记录,stm32

移植freemaster,学习记录,stm32图2.2.2.1 G4项目 

移植freemaster,学习记录,stm32

 图2.2.2.2 F4项目 

 3. 将freeMaster源码中API添加到项目代码中

        freeMater通信连通的三个关键API——分别是初始化函数FMSTR_Init(),轮询调度函数FMSTR_Poll(),中断服务函数FMSTR_Isr()。如果使用Recorder记录仪功能还需要添加FMSTR_Recorder()和FMSTR_TriggerRec()。

3.1 初始化函数FMSTR_Init()

        初始化函数FMSTR_Init()是初始化FreeMASTER驱动程序的内部变量,并启用通信接口(SCI、JTAG或CAN),此功能不改变所选通信模块的配置,必须置于通信模块配置(如MX_USART1_UART_Init())之后。

移植freemaster,学习记录,stm32

  图3.1 于外设之后初始化

 3.2 轮询函数FMSTR_Poll()

        轮询函数FMSTR_Poll()是在轮询驱动或短中断模式下,负责处理协议解码和执行,选择这两种模式时要在主应用程序中循环调用该API。

移植freemaster,学习记录,stm32

 图3.2 于while(1)轮询简单例程

3.3 中断服务函数FMSTR_Isr()

        中断服务函数FMSTR_Isr()是在长中断或短中断模式下使用,需要在所选通信模块的中断服务函数中调用,本例用的通信模块为USART,因此在其中断Handler里调用了FMSTR_Isr(),如下图所示。

移植freemaster,学习记录,stm32

图3.3 于外设Handler中

3.4 Recorder记录函数FMSTR_Recorder()

        记录函数FMSTR_Recorder()是在使用FreeMASTER记录仪时对被记录的变量进行采样,如果记录器在FMSTR_Recorder被调用的那一刻没有活动,函数将立即返回,不进行采样;当记录器初始化并激活时,被记录的变量的值将复制到记录器缓冲区,并计算触发器条件。

移植freemaster,学习记录,stm32

 文章来源地址https://www.toymoban.com/news/detail-706603.html

3.5 Recorder触发函数FMSTR_TriggerRec()

        当记录器满足PC工具设定的触发条件时就将数据一次性上传至PC工具,也可以在代码中调用FMSTR_TriggerRec()函数,强制触发条件发生,将数据上传至PC工具。

static void freeMaster_recorder(void)
{
    static u8 threshold_FMSTR = 0;

    FMSTR_Recorder();
    if(++threshold_FMSTR > PRE_TRIGGER_SAMPLES)
    {
        FMSTR_TriggerRec();
        threshold_FMSTR = 0;
    }
}

4. freeMaster PC应用配置

4.1 通信配置

        可以选择RS232串口通信,也可以选择CAN、USB通信、调试接口JTAG(用Plug-in module?),选择JTAG方式可以不需要移植freemaster源码,直接使用,但是只能使用扫描仪,无法使用记录仪。我们使用的是USART外设作为通信接口,因此我们直接选择RS232。

移植freemaster,学习记录,stm32

 4.2 选择Map File路径(用的是.axf文件)

        选择MDK编译生成的*.afx文件路径,PC应用根据该文件可以解析各变量的名称、类型、地址等信息,注意选择“File format”,然后会生成freeMaster的symbol list file,可以在上面View查看该freeMaster应用工程读到了哪些变量。

移植freemaster,学习记录,stm32

 4.3 其他

其他如Oscilloscope示波器、Variable Watch有版本差异且个性化,各自摸索即可。

移植freemaster,学习记录,stm32

移植freemaster,学习记录,stm32

 

 

到了这里,关于基于stm32与串口通信的freeMaster使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32使用中断及串口通信

    采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。单片机除了基本的连线外,我们另外只接一只LED灯。 使用外部中断的基本步骤如下: 1.设置对应时钟 2.设置中断 3.初始化IO 4. 把特定IO口设置为中断线路进行初始化 5. 在中断通道的响应函数中中断函数

    2024年02月04日
    浏览(50)
  • 基于树莓派4B与STM32的UART串口通信实验(代码开源)

    前言: 本文为手把手教学 树莓派4B与 STM32 的 UART 通讯 ,本次项目采用 树莓派4B 与  STM32  进行串口通讯,将彼此的数据进行互相传输。本篇博客同时提供了基于 YOLOv5-Lite 的目标检测数据联动,即将 树莓派4B 检测到的信息发送至 STM32 ,后续可以通过这些信息进行各种需求上

    2024年02月16日
    浏览(38)
  • STM32串口通信——DMA中断 (简单配置即可直接使用)

    目录 各函数的功能及使用方法 1.串口调试输出 2. 串口调试输出 接口设置    3. 串口格式化输出 4.用户串口DMA中断初始化函数 使用方法 1.找到系统的串口初始化函数 2.在结束位置添加我们的串口初始化函数  5.用户中断回调函数 使用方法 1.找到系统的中断服务.c文件 打开  

    2024年02月09日
    浏览(39)
  • STM32 串口通信USART1的配置和使用

    UART:universal asynchronous receiver and transmitter通用异步收发器 USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器 上图是利用寄存器配置的步骤,下面我用官方库函数配置USART1 1、要配置串口usart1,先查看数据手册以及开发板原理图的芯片管脚 根据上图可以看

    2024年02月05日
    浏览(46)
  • 使用jetson nano的串口与stm32进行通信

    首先, jetson nano可以跑python, 那就简单了: 端口就是: GND, 8, 10, 分别接到我STM32F4最小系统板子的UART2: 板子为了方便观察, 就用uart2接收, 用uart1发送, 为啥不用同一个串口呢? 嗯…我乐意… STM32的代码就如上面的, 随便写写就好了. 把UART1的TX接到usb串口上, 然后在jetson上用python运行上

    2024年02月12日
    浏览(75)
  • STM32 UART串口通信IDLE空闲中断的使用步骤

    参考了各路大神的资料,蒙蔽了半天,终于学会了,记录一下,以后忘了可以回来复习参考。 一、首先在stm32cube中配置打开对应uart串口的中断 二、工程main函数调用 __HAL_UART_ENABLE_IT(huart1,UART_IT_IDLE);//hal库宏定义,使能串口空闲中断     HAL_UART_Receive_DMA(huart1,data,sizeof(data));//使

    2024年02月12日
    浏览(40)
  • 江科协STM32教程——STM32 使用串口助手进行LED灯的点亮熄灭灭控制全代码过程(USART串口通信的简单应用)

            使用USART串口通信,通过上位机串口助手发送符串给STM32执行LED灯点亮熄灭操作的流程。         基本的配置如下所示,GPIO口配置的为PA9推挽输出,用于LED灯的操作。其余注意USART_ITConfig和USART_Cmd开启USART接收中断和使能USART运行。         接下来要进行发送字

    2024年03月21日
    浏览(58)
  • stm32---在keil 5中使用printf函数输出到串口USART(printf函数的移植方法)以及补充窗口printf函数输出汉字

    在串口函数初始化的c文件中加上#include stdio.h 重写fputc函数 (fputc是printf函数的底层,printf就是不断调用fputc函数一个个打印,把fputc函数重定向到串口,这样子printf自然就输出到串口) 在主函数main.c编写如下代码后直接运行. 引入#include stdarg.h  对sprintf进行可变参数的函数封装 在主

    2024年02月05日
    浏览(45)
  • 【正点原子STM32连载】第十三章 串口通信实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章将介绍使用串口进行数据的收发操作,具体实现APM32E103与上位机软件的数据通信,APM32E103将接受

    2024年02月21日
    浏览(51)
  • uC-OS2 V2.93 STM32L476 移植:串口打印篇

    前几篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程,下载了 uC-OS2 V2.93 的源码,并把 uC-OS2 的源文件加入 Keil MDK5 工程,通过适配 Systick 系统定时器与 PendSV 实现任务调度,初步让 uC-OS2 运行起来 本篇适配 uC-OS2 的 串口驱动,实现 类似于 printf 的打印功能,让

    2024年02月13日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包