首页 > 其他分享 >Keil的一点使用技巧

Keil的一点使用技巧

时间:2024-01-14 11:07:23浏览次数:30  
标签:SAVE 技巧 Keil DSP 编译器 V6 一点 ARM Target


在开发中Keil的一点使用技巧:使用ARM V6编译器和gun11标准;查找导致进入HardFault_Handler的函数;SAVE命令将数据导出到文件;开启FPU硬件浮点数和添加DSP库

使用ARM V6编译器和gun11标准

ARM V5编译器已经停止开发了,是时候换到V6编译器了。

  • 工具栏 Options for Target - Target - Code Generation - ARM Compiler这里可以选择指定版本的V6编译器,或是Use default compiler version 6
  • 在切换至ARM V6编译器后,Options for Target设置栏里面的C/C++会变成C/C++(AC6)。这时切换至C/C++(AC6)选项卡即可在Language C处选根据需要择使用c11 / gun11
  • Optimization可以调整优化等级。如果不想要编译器优化可以设置成Level0 (-O0)
  • 另外注意一下CUBEMX默认生成FreeRTOS函数使用的是V5编译器的标准(至少在我当前使用的版本STM32F4 Package 1.26.2是这样的)切换成V6后编译会报错。解决方法只需要替换一下CUBEMX包的文件就好。
    进入芯片软件包的安装目录...\STM32Cube_FW_F4_V1.26.2\Middlewares\Third_Party\FreeRTOS\Source\portable 将RVDS文件夹里的ARM_CM4F文件夹,替换为GCC里的ARM_CM4F文件夹即可。再重新用CUBEMX生成工程,FreeRTOS就可以通过ARMV6编译了。另外软件包升级之后也要重新替换一下。

查找导致进入HardFault_Handler的函数

致使程序进入HardFault_Handler硬件错误中断函数的原因有很多。可以调试打断点然后跳转到出问题的函数

首先在HardFault_Handler的while(1)前打调试断点

当程序执行到断点后,在Keil菜单栏点击 View - Call Stack Window ,会弹出 Call Stack + Locals 对话框

右键单机HardFault_Handler,然后选择 Show Caller Code

之后就会跳转到出错之前的函数处。 Disassembly 窗口也会用黄色高亮显示来源。

之后就是改Bug了 多查一查这部分函数调用情况,另外多注意下数组是否可能会出问题

SAVE命令将数据导出到文件

调试时,打开Command窗口(如果没有的话就在系统菜单 View - Command Window 启用)

在窗口的下方有一个输入框,在其中输入SAVE命令,回车执行

SAVE D:\test.txt  0x20000100,0x2000200

参数的涵义也不难理解:

D:\test.txt 是文件路径和文件名;

0x20000100 是待存储的起始地址;

0x20000200 是待存储的终止地址 ;

,accSize 为可选项,代表读取目标内存的字节大小。

不过最终输出的是txt文件和HEX格式的数据,后期处理和使用起来也确实稍有些麻烦。

官方SAVE命令文档 https://www.keil.com/support/man/docs/uv4/uv4_cm_save.htm

https://developer.arm.com/documentation/ka002842/latest

开启FPU硬件浮点数和添加DSP库

工具栏 Manage Run - Time Environment - CMSIS - DSP 勾选,即可完成添加DSP。不过建议用CubeMX软件包的方式添加

详细的写在另一篇博客了 https://ittuann.github.io/2021/12/25/DSP

杂项

不太好归类但是也想要说一下。

  • 修改ROM起始地址
    Options for Target - Target - IROM1 下修改


标签:SAVE,技巧,Keil,DSP,编译器,V6,一点,ARM,Target
From: https://blog.51cto.com/u_16461249/9238954

相关文章

  • Maven常见问题与原理技巧
     背景目前项目中主流的都是使用maven等构建工具,当然在使用过程中也会遇到各种各样的疑惑或问题,比如:maven生命周期到底有啥用jar包下载不了怎么办不知道配置怎么配,下载jar包的顺序是什么jar包冲突又是怎么解决问的人多了,也就形成了大家的共性问题,这里基于这些问题,本文......
  • GitHub常用搜索技巧
    普通关键词搜索搜索关键词为javascript的所有项目,可以搜索到数量为2百万的项目,数量庞大,不利于筛选。高级搜索(添加限定词)搜索写法含义in:nameXXX按照项目(仓库)名称搜索in:descriptionXXX按照项目(仓库)描述搜索in:readmeXXX按照README文件搜索languag......
  • 获得利润和成长,应采取什么步骤, 澳福认为只需坚持一点
    大多数交易者通常会考虑在外汇交易中获取利润,但只有少数人会思考这样一个问题:为了获得利润和专业成长,应该采取什么步骤。像“外汇交易怎么赢利”这样的文章很受市场欢迎,但是很少有人在交易中使用这些文章中给出的建议,因为在生活中很难引入新的东西;我们都喜欢遵循旧习惯。所以澳福......
  • 铺先生:转店人需要掌握什么技巧?这三点比较有效
    转店人需要掌握什么技巧?作为一个经营者,遇到了无法解决的事情的时候,都会选择将店铺转让出去以此减少损失。但是如今转店失败的人不计其数,大部分原因都是在技巧上出了问题。下面小编就来跟大家说三个技巧吧。1. 端正态度你作为转店人,其实算得上是有求于人了,而在转店的过程中,对接手方......
  • UCB Data100:数据科学的原理和技巧:第十一章到第十五章
    十一、恒定模型、损失和转换原文:ConstantModel,Loss,andTransformations译者:飞龙协议:CCBY-NC-SA4.0学习成果推导出在MSE和MAE成本函数下恒定模型的最佳模型参数。评估MSE和MAE风险之间的差异。理解变量线性化的必要性,并应用图基-莫斯特勒凸图进行转......
  • UCB Data100:数据科学的原理和技巧:第十六章到第二十章
    十六、交叉验证和正则化CrossValidationandRegularization译者:飞龙协议:CCBY-NC-SA4.0学习成果认识到需要验证和测试集来预览模型在未知数据上的表现应用交叉验证来选择模型超参数了解L1和L2正则化的概念基础在特征工程讲座结束时(第14讲),我们提出了调......
  • 掌握 Postman发送 POST 请求技巧
    Postman是一个实用的开发工具,它让发送各类POST请求成为了可能,包括文本、JSON、XML以及文件等。开发者利用此工具不仅能够检验API的功能性,还能仿真客户端的请求行为,进而深入了解客户端如何与API进行互动。HTTP协议中的POST请求通常用于提交数据,如用户提交在线表单时,数据就通......
  • 少见但非常好用的js写法技巧。
    1.使用flatMap数组方法 flatMap() 本质上是 map()和 flat() 的组合,区别在于 flatMap 只能扁平1级,flat可以指定需要扁平的级数,flatmap比分别调用这两个方法稍微高效一些。constarr=[1,2,[4,5],6,7,[8]];console.log(arr.flatMap((element)=>element));......
  • 工程从keil移植到cube ide 无法进入stop mode的问题
    我们公司不准再使用keil了,得换成cubeide,于是我要把之前的工程移植到cubeide上。这次移植的工程里,有一个进入stopmode低功耗的功能。我在keil中使用的标准库实现:当没有触发外部中断(外部中断脚接了一个传感器的中断脚,通过传感器的中断来唤醒停止模式)的时候进入停止模式:if(it_f......
  • streamlit使用技巧
    实现上传PDF并显示##上传并预览(1M以内才可预览)defupload_Pre():file=st.file_uploader("选择待上传的PDF文件",type=['pdf'])ifst.button("点击"):iffileisnotNone:withtempfile.NamedTemporaryFile(delete=False)astmp_f......