
KEIL-MDK开发环境
文章平均质量分 70
booksyhay
这个作者很懒,什么都没留下…
展开
-
在C代码中找到栈顶的位置并访问栈空间
在主循环中写一个任务,检查栈是否溢出。原创 2023-10-26 15:09:27 · 515 阅读 · 0 评论 -
KEIL调试正在运行的程序,并且不要破坏现场
有时程序跑着跑着就飞了,但此时却没有接仿真器,不能停下来看运行状态。如果重新启动调试,会破坏现场。有没有办法attach到应用程序上调试呢?答案是肯定的。原创 2022-12-14 15:00:07 · 3208 阅读 · 2 评论 -
STM32F103的RTC模块用作32位计数器
需求背景在使用FreeRTOS时,如果需要统计每个任务的运行时长及百分比,则需要提供一个计时基准。分别实现以下2个函数:void vConfigureTimerForRunTimeStats( void ); /* Prototype of function that initialises the run time counter. */unsigned long ulGetRunTimeCounterValue( void ); /* Prototype of function th...原创 2020-10-23 09:48:40 · 1717 阅读 · 0 评论 -
STM32定时器的定时周期
定时器原理框图计时周期计时周期由以下几个因素决定:1,时钟频率。一般为72MHz。2,预分频系数PSC计数器的时钟频率CK_CNT等于f CK_PSC /(PSC[15:0]+1)。如果想要72分频,则PSC寄存器的值应该为71.3,自动重装载寄存器。这里也要注意:在设置ARR寄存器时,也需要减去一。如果想要定时1000个周期,则寄存器的值应该设置为999.看手册中的例子:当ARR为0x36时,计数器序列为00~36,共37个值。...原创 2020-09-18 11:46:10 · 7038 阅读 · 0 评论 -
《程序员的自我修养》读书笔记3——使用KEIL研究ELF文件的重定位
空间和地址分配仍然采用上一节的代码。看生成的代码段。3个中间目标文件的代码段:fromelf -v a.o========================================================================** Section #1 Name : i.main Type : SHT_PROGBITS (0x00000001) Flags : SHF_ALLOC + SHF_EXEC原创 2020-09-14 11:40:51 · 515 阅读 · 0 评论 -
《程序员的自我修养》读书笔记2——使用KEIL研究ELF文件的符号表
代码参考第4章,使用如下代码:建立工程:编译结果:目标文件分析先看b.o文件:fromelf -v b.o打印结果:========================================================================** ELF Header Information File Name: b.o Machine class: ELFCLASS32 (32-bit) Da...原创 2020-09-12 11:06:18 · 841 阅读 · 0 评论 -
《程序员的自我修养》读书笔记——使用KEIL研究ELF文件
工具KEIL-MDKV5安装目录下(C:\Keil_v5\ARM\ARMCC\bin)有以下工具:主要用到的是fromelf.exe把该路径加入到PATH环境变量中:fromelf用法命令格式:fromelf [options] input_file fromelf -h即可打印出帮助信息。Product: MDK Plus 5.29Component: ARM Compiler 5.06 update 6 (build 750)To...原创 2020-09-11 17:09:16 · 2609 阅读 · 0 评论 -
《MDK的编译过程》读书笔记
程序编译和链接的过程ELF文件格式:分散加载描述文件参考资料:欢迎阅读《MDK的编译过程及文件类型全解》文档-by 秉火https://flash-rtd.readthedocs.io/zh_CN/latest/...原创 2020-09-11 11:31:05 · 231 阅读 · 0 评论 -
KEIL-MDK仿真STM32系列CPU的调试参数设置
默认配置默认配置参数,只能显示SVD文件(System Viewer File)中定义的寄存器信息:进入调试模式后,Peripheral菜单中,可以显示外设寄存器的值:高级配置可以根据CPU的具体型号,配置特定的动态库。STM32系列的为DARMSTM.dll(TARMSTM.dll)然后,进入调试模式后,可以有更直观的对话框来显示外设寄存器,例如:CPU型号及对应的配置参数Peripheral Simulation for STMicroelectro.原创 2020-09-02 14:00:23 · 6837 阅读 · 8 评论 -
KEIL调试出现Access violation : No ‘write‘ permission错误的解决办法
问题现象在使用模拟器调试时,出现以下错误提示,导致不能连续运行:*** Error 65: Access violation at 0x40000004 : No 'write' permission解决措施将以下内容保存为debug_Cortex-M_use_simulator.ini脚本文件,并根据CPU的外设地址更改map指令后面的参数。配置选择为初始化文件:/* Usage: Project ==> Options for Target ==> Debu.原创 2020-09-02 13:33:41 · 6455 阅读 · 0 评论 -
KEIL-MDK在内存中调试程序的启动脚本
将以下内容保存为debug_Cortex-M_in_RAM.ini文件。/* 使用说明 1,使用默认的链接控制文件; 2,工程选项的Debug标签页中,初始化文件(Initialization File)选择:debug_Cortex-M_in_RAM.ini 3,配置代码在内存中的起始地址。 4,【重要】Utilities标签页中,取消选择:Update Target before Debugging 5,不要点击“Flash=>Downlo.原创 2020-09-02 11:42:01 · 1557 阅读 · 0 评论 -
如何在C代码中获取编译后的bin文件的大小
开发环境:KEIL-MDK(RealView)需求说明要在C代码程序中获取编译器最终生成的bin文件大小。思路通过读取编译器中生成的链接符号变量来计算。解决方案比如,测试程序中生成的Code大小为1906个字节,RO-data的大小为486个字节。两者相加1906+486=2392.项目配置:分散加载脚本:; *************************************************************...原创 2020-06-04 19:42:33 · 3708 阅读 · 0 评论 -
在KEIL-MDK中使用 $ Super $ $ 和 $ Sub $ $ 打补丁
问题描述某个工程中使用了一个库,库中包含很多个函数,其中有一个函数是void foo(void);现在,在新的工程中,需要对foo函数的逻辑功能进行修改。由于foo函数是在库里面,直接修改foo函数的代码是不现实的。重新定义一个函数foo2并实现它,也是行不通的。因为库里面很多地方都调用了foo(),不可能让这些地方重新调用foo2()。怎么办?打补丁!解决措施使用以下代码,可以替换 foo() 函数:extern void ExtraFunc(void..原创 2020-06-04 16:00:41 · 1140 阅读 · 1 评论 -
在KEIL中生成bin文件的方法
生成hex文件KEIL中默认生成的是axf文件。如果想要生成hex文件,则只需要简单地勾一下:生成bin文件要生成bin文件,则需要用到fromelf。Keil自带了一个小工具,可以通过执行指令来将AXF文件转换为BIN文件这就需要调用一个外部程序fromelf.exe来将AXF文件转换为BIN格式文件。fromelf.exe文件的位置在安装目录Keil_v5\ARM\ARMCC\bin或者Keil_v5\ARM\ARMCLANG\bin目录下。在Options...原创 2020-06-04 14:52:57 · 6805 阅读 · 0 评论 -
STM32F4xx时钟配置的三种方法
时钟树一图胜千言。照例先上一张时钟树的图。来自:RM0090,STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx参考手册配置时钟流程使能外部高速时钟(HSE) 等待HSE时钟信号稳定 配置锁相环PLL 等待PLL就绪 选择PLL作为主时钟源(配置SW) 等待系统时钟切换完成(检查SWS) 配置外设总线的分频系数...原创 2020-04-29 10:26:09 · 5035 阅读 · 1 评论 -
同时安装KEIL-MDK uVision4和uVision5并分别打开uvproj和uvprojx文件的方法
问题现象旧项目使用KEIL4,新项目需要使用KEIL5.安装完成KEIL5后,旧项目的工程文件(uvproj)默认打开方式也变成了KEIL5.在属性中配置“打开方式”,并强制选择“C:\Keil\UV4\UV4.exe”,结果无效,连图标都没有变,还是会选择KEIL5打开。原因分析奇葩的ARM公司在升级KEILMDK到uVision5的时候,生成的bin文件的文件夹名称...原创 2020-04-24 10:36:04 · 9899 阅读 · 0 评论 -
为什么不包含头文件时fabs()函数返回的结果错得很离谱?为什么一定要先声明后调用?
案例一先来看一个案例:int main(){ int n = 0; float x = -123.456f; float y = fabs(x); while(1) { y = y + 1; n++; }}调试环境:KEIL_MDK V4.72你觉得执行完“float y = fabs(x);”这一行之后,y的值等于多少?是1...原创 2019-11-29 17:01:27 · 2494 阅读 · 2 评论 -
KEIL-MDK的配置向导Configuration Wizard
问题什么是配置向导?它有什么作用?回答配置向导是μVision最近添加的功能。它支持汇编器,C或调试器初始化文件的菜单驱动配置。配置向导使用嵌入到配置文件注释中的控件项来构建这些菜单。MDK-ARM工具广泛使用脚本文件,这些菜单为用户提供了一种显示和修改脚本和初始化文件设置的简便方法。 先看看图片,有个直观的感受:就是在代码里面嵌入一些特定的注释,KEIL-MDK可...原创 2018-09-25 11:28:07 · 4486 阅读 · 0 评论 -
__disable_irq是在哪里定义的
在原代码中见到__disable_irq(),看起来像是原创 2014-11-25 10:21:48 · 17794 阅读 · 2 评论