STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形

软件下载安装
FreeMster可以在NXP的官网直接下载,免费!当然下载前需要登录/注册账号。我现在用的是2.5版本的FreeMASTER,软件大约30M,传送门:FreeMster2.5下载(其他版本自行在官网找)。

KEIL5的安装和J-LINK的安装这里就不展开了,大家网上搜索教程自行安装即可。

cubemax配置测试程序
这里使用cubemax简单配置一个软件工程模板,芯片选择STM32F103C9T6,配置外部高速时钟HSE,使用SW模式,主频选择72MHz:

选择外部高速时钟HSE

接着进行输出配置。自定义输出文件名和路径,这里要注意的是:文件的保存路径/命名不要带有小数点,否则KEIL编译后将无法输出.axf文件,如下图,可以看到在输出文件搜索中是没有显示.axf文件

使用KEIL5作为IDE,选择合适的版本,输出单独的.c和.h文件,最后点击右上角GENERATE CODE生成代码:

选择MDK-ARM作为IDE

代码生成后,在KEIL中打开工程,可以先编译一遍程序,确保无错误无警告:

在对应的文件路径中可以看到.axf文件:

接着写一个简单的测试程序,如题图:定义一个全局变量作为计数值,在while(1)里写一个简陋的for循环让计数值从0开始每秒递增,到达10后再后归0:

uint8_t cnt;int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){for(cnt = 0; cnt < 10; cnt++){if(cnt == 10){cnt = 0;}HAL_Delay(1000);}}
}

编译程序后,接着点击魔法棒(options for target),在debug窗口de Use中选择J-LINK作为烧录程序方式,然后点击settings,在弹出的界面中把Port口选择SW模式,CLK自定义,最后在Flash Download中把Reset and Run 勾选上,使下载后芯片复位并运行;最后点击确定,完成程序烧录设置;此时可通过J-LINK把程序烧录进单片机中:

FreeMaster设置
程序下载后,接着对FreeMaster进行配置(这时候JLINK和烧录程序的板子不用拔掉,保持连接)。打开软件后,可以先把工程保存,接着点击Project,选择Options,进入工程设置:

在options的页面中可以看到FreeMaster提供RS232和插件两种方式与目标设备进行连接,因为手头上没有RS232转USB的模块,这里选择第二种插件的方式。在Plug-in Module中点击下拉按钮,可以看到插件中有JLINK这一选项,选择该项作为连接方式:

接着在Connect string中点击右侧Configure,进入该界面:

这里可以看到安装的JLINK的DLL路径(忘记是不是要手动添加的了,如果确定能使用KEIL5+JLINK烧录程序,但这里没有显示.dll文件,则手动添加),core type这里可以选择芯片的内核,如F103C8的M3的内核,但是这里没有M3的选项,我们选择默认即可:

点击OK后,可以看到Connect String中有包含JLINK的相关信息:

接着点击AMP Files,导入.axf文件:

点击View,可以查看到程序中定义的全局变量cnt:

接下来创建变量检测窗口。在主界面下方Variable Watch窗口中的空白处单击右键,在弹出的窗口中选择Create New Watched Variable,进入添加变量窗口

在添加变量窗口中进行相关的设置如变量地址、类型、长度、采样周期等,测试程序中定义的全局变量cnt是uint8_t类型,占1个byte,至于采样时间和显示方式自行设置,如下:

接着点击确定,可以看到变量cnt已经成功添加进监视窗口了:

然后在左侧的Project tree下右键单击new project,选择Create Oscilloscope,创建示波器,如上图绿色框。

进入后,可以看到有Main 和Setup两个界面,Main界面是设置示波器的显示窗口大小、坐标等内容,根据需求设置即可;进入Setup窗口,添加变量cnt,把Graph vars中cnt前面的方框勾选,最后点击确定,完成示波器设置:

输出显示
下图是完成上述设置后的界面:

点击左上角Go!按钮,如果出现下图提示则是因为前面步骤中配置core type时没有对应M3选项的原因,我们点击OK,进入里面选择M3即可,最后点击OK:

可以看到输出波形如下,可以看到波形从0到9循环递增,下方cnt也会输出当前值:

这几天在调试PID,看到正点原子刚好出了个电机的教程,本想着移植他家的上位机程序到程序里调试参数,然后突然想起了以前用过的FreeMaster,看了一下教程果然有相关功能(如果你不想移植别的调参上位机程序或者频繁download,可以试一下这个方法);这里把方法记录一下。

先修改测试程序,给它加一个限幅,即把(cnt == 10)改为(cnt >= max_lim),这里的max_lim是一个全局变量,其值设置为20,编译后更新.axf文件到FreeMaster,效果如下图:

现在我想修改max_lim的值,可以通过以下步骤实现:

右键点击主界面下方的variable watch区域,点击watch properties:

在弹出的界面按顺序执行1、2、3操作:

在弹出的界面执行以下操作:

设置完成,然后试着把max_lim的值改成50,然后按下键盘的Enter键:

可以看到max_lim变成了50(要注意的是,Freemaster中改变的变量值是修改了程序的.axf中对应的值,程序不同步修改的)。

STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形相关推荐

  1. STM32的0.96寸OLED显示屏显示数据

    目录 一.SPI 1.简介 2.工作模式 3.通讯引脚 二.用0.96OLED显示数据 1.OLED原理简介 三.OLED显示实验 (1).实验目的 (2).实验实现 1.显示学号和姓名 2.显示AH ...

  2. 基于STM32的0.96寸OLED显示屏显示数据和滚动显示

    文章目录 一.SPI 二.OLED显示屏显示数据 2.1 代码实现 2.2 结果展示 三.0.96寸OLED滚动显示数据 3.1 滚动方式 3.2 对显示文字进行取模 3.3 代码实现 3.4 结果展 ...

  3. 图形化显示变量波形 代替串口你知道如何操作么?

    ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦.最近比较闲,带做毕设,带学生参加省级或以上比赛 ...

  4. 基于STM32F103C8T6的0.96寸OLED显示屏显示数据

    一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...

  5. .axf文件_干货!STM32晶振的更改,BIN文件的生成

    STM32因为硬件设计的不同,要根据实际安装晶振修改程序参数, 一般使用的晶振是8M,如果遇到使用24M晶振的时候程序配置要怎么去修改呢? 一共有两处需要修改,如果是24M就把这个修改为24,同理8M ...

  6. 解决IDEA.java文件显示不正常,左下角显示J问题(项目路径导入错误!)

    一般我们在导入一个项目的时候,需要重新配置好多东西!有时候我们会发现导入的项目java文件显示不正常,左下角显示J的问题,如下解决办法! 出现这种情况的原因分析: 肯定是因为粗心在导入项目的时候把存放 ...

  7. Android Studio ---- Cannot resolve symbol 'XXX',java文件 显示蓝色J的图标

    问题: 现象1. 我在MsgReceiver.java中 使用Msg2.java , 但是报红,引用失败,无法找到.(之前是好的,不知什么原因导致) Cannot resolve symbol 'XX ...

  8. Keil关于.axf文件报错

    项目场景: 熟悉Keil C51的同学在使用Keil MDK编译STM32系列单片机时会更容易上手. Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与 ...

  9. Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)

    场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...

最新文章

  1. linux 位置参数数组,JavaScript数组详解
  2. 口罩巨头挑战“量子霸权”,3个月造出的『最强量子计算机』靠谱不?
  3. iOS - Flutter混合开发
  4. java location_JAVA setlocation()方法并不能定义组件的位置,setBounds()方法无法改变组件的大小。小白一枚...
  5. [HNOI2009]最小圈 (二分答案+负环)
  6. 解析XML的4种方式及优缺点比较
  7. linux 打开网页 用curl_linux终端模拟浏览器访问(curl)
  8. 系统“烂”怎么办?请看资深专家拆分改造实践
  9. AndroidStudio更改默认编码(不用每次新建项目再更改编码了)
  10. [转载] python3.6版本生成的python脚本如何打包为可独立执行的exe程序
  11. Julia : 在编程中的Unicode 字符
  12. Express框架学习笔记-app.locals对象
  13. 美国服务器查询网站查询网站查询网站查询网站查询,全球DNS节点查询网
  14. 实测:熊猫烧香考验五大杀毒软件
  15. 转:查理·芒格:让打击和麻烦成为成长的契机
  16. 腾讯音乐2020年报:懒人听书收购完成,谢振宇、太盟投资减持
  17. python自动录音程序
  18. Hbase(一)入门
  19. c语言远控,远控鼠标!C语言简单编程:整舍友必备+附送实例源码!
  20. Java笔记14-Java高级编程部分-第八章-多线程

热门文章

  1. 【视频编码学习】——SAD和SATD
  2. 4键电子手表说明书_4键电子手表怎么调时间的方法
  3. python四级考试_Python统计四六级考试的词频
  4. 2022.09.22调研(半导体激光器之发光原理)
  5. 计算机辅助设计简单作品,计算机辅助设计(范文).pdf
  6. 7nm工艺指的是什么?
  7. 强化学习系列之Policy Gradient算法
  8. MATLAB是一个强大的数值计算软件,常用于数值分析的实现
  9. Tomcat6优化汇总–让R61本本也能跑上两千
  10. APP源码 教程 网页转APP 安卓Andriod应用开发 手机APP 移动网站