Keil MDK3.20 在ULINK下调试stm32方法
Keil MDK 3.5 Jlink V8 在STM32中SRAM 调试成功方法成功.pdf
图解Keil MDK 3.5/UV4beta Jlink V7 在STM32中SRAM 调试成功方法成功目的是避免FLASH擦写次数的限制,和避免新手学习很快让MCU结束生命。
以本人STM32F103RBT6为例,128K flash,20K SRAM,借鉴前人ULINK下调试的方法。
把内存分为16K用做FLASH,4K用做内存使用,这里以GPIO点亮LED为例子,项目为GPIO_OUT。
1、copy Keil安装目录下,例如C:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky中的RAM.ini到项目目录,然后双击GPIO_OUT.uvproj,启动Keil。
2、单击启动下图对话框,在Project Targets一项单击New(Insert)按钮,增加一个目标,命名为SRAM,然后OK。
3、然后再Select Target中选择SRAM。
4、左侧项目栏中选择SRAM,单击右键选择Options for Target “SRAM”,打开选项对话框。
5、如上图所示,在target选项中修改IROM1的Start值为:0x20000000,Size:0x4000IRAM1的Start值为:0x20004000,Size:0x1000;即内存分为16K用做FLASH,4K用做内存使用。
6、OutPut选项卡中也选中Create HEX File,如下图所示。
7、在Debug选项中仿真器选择Cortex-M3 J-LINK,Initialization File中点击Edit按钮选择刚才copy过来的RAM.ini文件,取消Load Application at Startup复选框,设置如下:并点击仿真器一栏,Settings按钮,进一步设置,如下图,注意Debug选项中Interface中选择USB,如下图所示,在Flash Download中配置,选中Do not Erase,在RAM for Algorithm中Start设置为0x20004000,Size设置为0x1000,设置STM32F10x Med-density Flash的地址Start:0x20000000,size:0x00004000,点击OK。
STM32 LL 库使用指南说明书
STM32 LL库使用指南---By Fengzi熟悉STM32的都知道ST官方提供了非常方便好用的库函数供用户使用,多数人都使用过STM32标准外设库,STM32Cube库(即HAL库),这个LL库是什么鬼,却从来没听说过。
好吧,我承认这个名字是我自己XJB取的。
目录一、初识LL 库 (1)二、怎么使用LL库 (3)三、新建STM32LL库工程模板 (5)四、第一个程序——点亮LED (8)五、添加其他程序功能 (10)………………………………………………………………………………………………………………………………………………….一、初识LL 库最近论坛发的STM32L476RG Nucleo开发板到手了,准备学习玩耍,当然第一步就是下载资料,于是我下载STM32L4Cube 1.1.0版本,打开逐个查看,好像和以前一样的,没什么特别嘛,于是准备开始开发。
等等,好像还真发现了有点不一样:熟悉HAL库的都知道,该库的文件几乎都是以stm32xxx_hal_xxx.h/.c命名的,为了和以前的标准库有个区分,上图中那些是什么鬼前辈说,遇到问题赶紧查手册,于是我果断打开STM32L4Cube库的说明手册(UM1884):原来这个东西叫做Low Layer APIs,作为英文渣渣表示实在不习惯洋里洋气的高大上名字,于是擅自把他叫做【STM32LL库】了(不服的你咬我啊)。
从这里看好像是说这个东东比HAL库更接近硬件,到底什么鬼,还不清楚。
但是以前好像没见过这个东西啊,就算是STM32L4Cube的1.0.0版本中都没有。
看看Cube发行历史:原来LL库是在1.1.0版本才加上的,大概意思就是:1.LL APIs是寄存器级的编程,嗯,也就是说我们常说的直接操作寄存器吧。
2.LL APIs适用于xxx等一大堆外设3.LL APIs函数全部定义为static inline函数,放在对应的头文件中,用户使用需要包含相关头文件4.参考这两个文档看看LL库文件在Cube库中的位置,有20多个文件,全部以stm32l4xx_ll_xxx.h命名:STM32Cube_FW_L4_V1.1.0\Drivers\STM32L4xx_HAL_Driver\IncSTM32L4是面向低功耗市场的,同时不失高性能,功耗和性能往往是两个矛盾的东西,ST在硬件设计上想了各种办法来实现兼顾低功耗高性能(例如各种低功耗模式,LP外设等),而在软件层面,程序也讲求效率,LL库全是直接操作寄存器,直接操作寄存器往往效率较高,而且函数定义为内联函数,调用函数时不是堆栈调用,而是直接把函数的代码嵌入到调用的地方,利于提高代码相率,我想这也是ST在STM32L4系列中推出这个直接操作寄存器的LL库的原因之一吧。
STM32程序3种下载方式说明
下面介绍U-Link、J-Link和ISP下载STM32程序的配置方法,以MDK3.24为例,也可以使用MDK3.80或者更高版本的MDK,过程类似。
此文档仅供学习和交流使用。
STM32程序U-Link下载说明(1)ULink下载工具如图1所示。
图1 ULink下载工具(2)双击MDK安装文件图标进行安装,在后续出现的窗口中依次点击Next按钮,直到安装完成(默认安装路径是C:\Keil,建议换个路径名,比如C:\Keil MDK324文件目录下,以防止与51单片机开发环境冲突)。
安装好后,未输入License的MDK,在开发时会有代码量的限制。
(3)输入License:选择File菜单下的License Management子菜单,如图2所示。
图2 File菜单下的License Management子菜单(4)将License序列号拷贝到License Management中的New License ID Code(LIC)中,点击ADD LIC完成,如图3所示。
图3 输入License序列号(5)运行序列号生成程序,打开破解补丁:(部分杀毒软件可能会将这个文件误报为病毒文件,这时不必理会杀毒软件的警告,并将这个文件设为信任文件或者直接关掉杀毒软件),运行压缩包中程序,按图4所示配置,将Target下拉选项选中“arm”。
图4 输入CID,获得序列号将Keil软件“License Management”对话框中的Computer CID中的内容:拷贝到此程序的CID中:,然后点击按钮,获得序列号。
(6)将生成的序列号拷贝到“License Management”对话框的LIC区域中:然后,点击“Add LIC”,出现图5所示的内容,点击“Close”关闭对话框。
图5 添加LIC序列号(7)将文件夹Bin目录中的3个文件“UL2ARM_RDI.dll”、“UL2ARM_ULINK1.dll”、“UL2CM3_ULINK1.dll”拷贝到MDK安装目录下的\ARM\Bin目录中。
STM32在keil下使用jlink时产生错误的解决方法
最近一段时间一直在学习STM32和ucos的移植,使用的开发环境是keil u4版本。
仿真器是80元买的jlink。
在学习了STM32固件库和ucos内核与移植相关的程序之后,写了一个流水灯程序,准备下载到板子上看看情况。
哪知程序还没有下进去,在debug时,keil的错误提示到:Error: Flash download failed-"Cortex-M3"感觉这么错误很普遍,也是初学者常常遇到的错误,下面我就将这个错误产生的原因和解决方法赘述一下:错误产生的原因和分析,解决。
首先,我们看到提示信息是有关flash的,那么我们来查看一下STM32F103XB的数据手册关于这部分的描述(我使用的芯片是STM32F103RB,有128kflash。
)知道了原来flash在此芯片中的地址是从0x0800 0000到0x0801 FFFF 这段,也就是说这段存储空间是用来存储程序。
而在STM32芯片方面,它又有一个规则,那就是芯片启动的方式,如果你把程序下载到了flash中,那么在复位芯片之前或者通电之前,要将boot0,boot1两个引脚拉到高电平,这样在启动时,芯片初始化之后,运行程序代码才是从flash地址开始执行的。
于是,我们来查看一下keil中仿真器的设置,是不是正确,设置的选项在keil软件的project-options for target中的Utilities中,先来查看下仿真器是否选对,然后点settings,弹出如下菜单:查看一下programming Algorism 下的flash地址是否正确,如果不正确则会引起开始那个错误的提示信息,如果正确还是出现那个错误,那么按照官方给的解决方法是,删除现有的flash地址,重新配置一下,记得要选对芯片型号和地址空间。
配置好之后点击OK退出。
然后再查看一下Target中的地址,是否跟你重新添加的一致,如果一致,那么点OK退出。
(完整word版)基于KEIL的STM32F103系统的开发与调试
11、调试操作。从左到右:重启、执行、停止、单步、单行、返回、执行到当前行。单步是指按照指令的实际操作一步步执行;单行是指完成该指令所到实现的功能,并不关心该指令所导致的实际操作过程。
单步执行后,执行过的指令前面由深灰变深绿。
-->
调试中经常需要观察存储器,点相应图标
输入地址后即可显示后续的存储空间的内容。
在存储区间点击右键可以选择显示类型,如无符号32位
若修改代码,再按 退出调试界面。
图形界面中有时可以自由摆放所用的工具。
4、运行环境选择。暂不选,按确定。
5、建立了一个空项目。
6、设置OPTION,右键点击TARTGET1
左键点击Options for tartget 'target 1'
7、构建软仿真环境,在Ddbug栏设置。
8、添加汇编文件startup.s
9、添加代码
10、先编译,再链接,最后调试。(底部有编译和链接信息,出错的话会提示)
微处理器系统原理与设计课程实践参考文档之
基于KEIL的STM32F103系统的开发与调试
1、建立工程
2、选择工作目录,输入项目名test1。
3、选择器件,选择STMicroelectronics的STM32F1 Series中的器件后确定。
对于KEIL5来说,若没有该器件,需要装PACKE,选择Pack Installer后选择相应PACK安装即可。
KEIL下使用Jlink调试STM32 核心模块开发板
KEIL下使用Jlink调试STM32 核心模块开发板大家知道,之前在Keil下可以通过RDI方式使用全功能版Jlink来调试LPC2000、STR912等很多芯片的,不过唯独是无法用Jlink 的RDI方式来调试STM32系列,因为在Jlink RDI Configuration 中的Flash设置中没有STM32芯片的选项,如下图所示。
在Keil宣布支持Jlink后的MDK3.22版本中开始直接支持Jlink了,这对大家来说无疑是一个好消息,因为在Keil中可以直接像使用Ulink2一样使用Jlink了。
不过经过测试好像还存在一些bug,测试情况详见:/bbs/viewthread.php?tid=8933&extra=page%3D3最主要的问题就是:添加下载算法不能一一对应,完全是乱的,如下图所示:后来经过awake兄弟的指导和帮助终于搞定了,在这里对awake兄弟表示感谢。
这个问题在Keil的官方网站给出了答案,详见:/support/docs/3410.htm 下面就给出具体解决方法,很简单,只需两步,复制三个文件即可:1、安装Jlink的最新驱动,本文安装的是V3.88版本,最新的驱动可以从segger官方网站下载:/download_jlink.html。
安装完成后,打开C:\Program Files\SEGGER\JLinkARM_V388目录(默认安装目录),如下图所示,复制JLinkARM.dll和JLinkRDI.dll两个文件到Keil的安装目录:\Keil\ARM\Segger下,替换以前的文件,如下所示:2、从keil网站下载JLTAgdi.dll文件也复制到:\Keil\ARM\Segger目录下,添加完成后如下图所示:完成上面两步后,现在我们打开Keil软件来进行一个验证。
任意打开一个STM32的程序,本文打开时Keil自带的USBMem例程,在:\Keil\ARM\Boards\Keil\MCBSTM32\USBMem目录下。
使用Keil MDK以及标准外设库创建STM32工程
使用Keil MDK以及标准外设库创建STM32工程1.1 使用Keil MDK以及标准外设库创建STM32工程通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。
本节就介绍怎样利用Keil MDK 开发环境和标准外设库来搭建自己的工程。
建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。
1.1.1 开发工具与开发环境1. 软件版本本节所使用Keil MDK 为目前的最新版V4.21,具体版本信息如图5-6所示。
其他版本差别不大,读者可以根据自己使用的版本进行操作或者从Keil的官网下载新版本。
使用的标准外设库为目前最新的V3.5版本。
使用的开发调试工具为JLINK-V8,使用的驱动版本为V4.08l。
图5-6 MDK详细版本信息2. 建立工程目录首先先建立一个用于存放工程的文件夹,此处命名为STM32,在文件夹下分别建立LIB、USER、MDK三个文件夹,分别用于存放标准外设库文件、用户程序文件、工程目录。
在MDK 文件夹下建立List、Obj两个文件夹,分别用于存放在编译过程中产生的临时文件和输出文件。
接下来拷贝标准外设库和相应的文件到工程目录中,首先拷贝STM32F10x_StdPeriph_Li b_V3.5.0\Libraries文件夹下的两个文件夹CMSIS和STM32F10x_StdPeriph_Driver到刚刚新建的STM32\LIB目录下,接下来拷贝用户编写程序的程序文件,此文件可以从标准外设库自带的例程中拷贝,这里从STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Exam ples\ADC\3ADCs_DMA目录下拷贝main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it. h四个文件,这四个文件是在编程的时候用户往往需要根据实际需求进行修改的。
IAR下用JLINK调试STM32心得
IAR下用JLINK调试STM32心得IAR开发环境下使用JLINK来调试STM32芯片是一种常见的调试方法。
以下是我在实际使用中总结的一些经验和心得。
首先,在使用JLINK进行调试之前,我们需要按照JLINK提供的说明书正确连接好硬件设备。
通常,我们需要将JLINK与STM32芯片之间连接好,并确保连接的正确性。
此外,我们还需将JTAG/SWD接口正确地连接到STM32的相应引脚上。
接下来,在IAR环境下进行配置。
在打开IAR工程之前,我们需要确保IAR和JLINK驱动软件已经正确地安装到电脑上。
然后,我们可以打开IAR并打开相关的工程文件,然后进入调试模式。
在调试模式下,我们需要在IAR的"Options"菜单中选择"Debugger"选项。
在"Driver"栏中,我们需要选择使用JLINK进行调试。
在"Setup"选项卡下,我们可以进一步配置JLINK的一些参数,比如连接速度和复位方式等。
根据实际需求,我们可以对这些参数进行相应的调整。
在调试过程中,我们可以使用IAR提供的各种调试工具来观察和分析程序的运行状态。
比如,我们可以使用"Watch"窗口来监视变量的值,或者使用"Memory"窗口来查看内存的内容等。
此外,我们还可以使用"Breakpoints"来设置断点,使程序在特定的位置停止执行,方便我们进行代码的调试和分析。
从实践中,我发现在使用JLINK调试STM32时,一些常见的问题可能会出现。
比如,由于硬件连接出错或者参数配置不当,导致与JLINK的连接失败。
此时,我们需要仔细检查硬件连接,并重新配置JLINK的参数。
另外,有时候程序可能会卡死或者出现异常,导致调试失败。
这时,我们可以使用IAR提供的复位工具来重新启动STM32芯片,然后重新开始调试。
Keil 下配置stm32库开发环境
Keil MDK下配置stm32库开发环境(包括J-Link调试环境设置)准备:1.stm32官方固件库2.Keil MDK一、建立stm32工程当出现提示是否要添加启动文件时,选择否(因为在官方固件库中包含有启动文件)工程建立完成!二、添加官方固件库右键工程目录,选择Manage Components..第一栏表示工程名称,第二栏表示工程包含的文件夹,第三栏表示各个文件夹中包含的文件通过Add Files将固件库中的文件添加进工程中,添加过后如下这么整理是为了让工程开起来层次清晰,对于工程编译没有影响,也就是说即使工程里文件不是按照目录这么整理的,也可以正常编译,只是习惯上如此整理。
三、工程设置右键工程,选择Options for Target…需要设置的有C/C++标签页中的Include Paths,如下:点击最右边的三个点按钮,这里设置的意思是把整个工程中所有.h文件所在的目录添加进来,只有这样,编译器在编译程序时才会从这些路径中寻找头文件。
点击这个方框按钮,添加目录,本例中将./sys ./inc ./src ./usr都添加进来四、J-Link调试器在keil中的设置接着第三步,在Debug标签中选择J-Link调试器选择完成后,点击右侧Setting按钮,如下:提示:必须正确连接J-Link后才会显示这样选择Flash Downlade标签页,点击Add按钮,将对应CPU型号的flash点击ok在Utilities标签页中,选择J-Link后点击ok即完成所有工程设置在main.c中写入main函数后编译未提示错误可以直接使用下图中红色标记按钮直接下载程序,不用再打开J-Flash下载程序了。
用KEIL-uvsion-3软件调试程序的流程和方法
用KEIL uvsion 3软件调试程序的流程和方法(1)用汇编语言或C语言创建源程序使用菜单“File->New”或点击工具栏的新建文件按扭,即可在项目窗口的右侧打开一个新的文本编辑窗口。
编辑完文件后,保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm或a51为扩展名)。
(2)创建一个项目,从器件库中选择目标器件,配置工具设置点击“Project->New Project…”菜单,出现一个对话框,要求给将要建立的工程起一个名字(默认保存类型为uv3/uv2)下一步,选择目标CPU(即你所用芯片的型号),(先选择生产该CPU的公司,然后点“+”,从下拉列表中即可看到具体的CPU),然后点击“确定”按钮回到主界面。
此时在工程窗口的文件页中,出现了“Target 1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程是一个空的工程。
(3)向项目中添加源文件。
右击界面左边项目窗口中的“Source Group1”,选择“Add file to Group” Source Group1“,出现” Add file to Group” Source Group1“对话框。
在对话框下面的”文件类型“改为”*.*“,找到需加入的.asm文件,双击该文件名,即可把该文件加入项目。
(4)设置工程项目点击左边Project窗口中的Target1,然后使用菜单”Project->Options for target “target1”“即出现对工程设置的对话框。
共八个页面,大多数取默认值即可。
选几个比较重要的做下说明:Target页Xtal:晶振频率值,默认值是所选目标CPU的最高可用频率值,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。
正确设置该数值可使用显示时间与实际所使用时间一致,一般将其设置成与你的硬件所用晶振频率相同。
STM32调试方法
STM32调试方法STM32是一款非常受欢迎的单片机系列,广泛应用于各种嵌入式系统中。
在开发STM32项目时,调试是一个非常重要的环节,它能帮助开发者检测和解决程序中的问题。
本文将介绍STM32的调试方法,包括硬件调试和软件调试。
一、硬件调试硬件调试是通过硬件工具来实现的,通常使用的工具有JTAG、SWD和UART等。
下面将详细介绍这些调试工具的使用方法。
1.JTAG调试JTAG是一种用于测试和调试电子系统的接口标准,它能够提供对目标设备的非侵入式访问。
在STM32项目中,JTAG接口一般用于调试目的,下面是使用JTAG调试STM32的步骤:步骤1:连接JTAG调试器和目标设备。
将JTAG调试器的TCK、TMS、TDI、TDO和GND引脚分别连接到目标设备的相应引脚上。
步骤2:配置STM32的调试模式。
在STM32的配置文件中,将调试模式设置为JTAG模式。
步骤3:使用调试工具进行调试。
使用JTAG调试工具,如OpenOCD或J-Link等,连接到JTAG调试器,然后启动调试器进行调试。
调试工具会与STM32建立连接,并允许开发者对程序进行单步调试、断点设置等操作。
2.SWD调试SWD(Serial Wire Debug)是一种单线(加地线)调试接口,它是ARM公司推出的一种调试接口标准。
SWD相比JTAG接口更简洁、更省引脚,因此在STM32项目中被广泛应用。
下面是使用SWD调试STM32的步骤:步骤1:连接SWD调试器和目标设备。
将SWD调试器的SWCLK、SWDIO和GND引脚分别连接到目标设备的相应引脚上。
步骤2:配置STM32的调试模式。
在STM32的配置文件中,将调试模式设置为SWD模式。
步骤3:使用调试工具进行调试。
使用SWD调试工具,如ST-Link或J-Link等,连接到SWD调试器,然后启动调试器进行调试。
调试工具会与STM32建立连接,并允许开发者对程序进行单步调试、断点设置等操作。
用于keil的stm32驱动安装说明
1、驱动安装
1、先找到“开发板驱动程序”,安装过程很简单,依次点击下一步即可完成安装。
2、用usb线连接开发板和电脑。
会出现如下问题。
双击可以发现,FT232被识别成了未知设备,连设备类型标签都丢失了
别担心,一会就能解决:首先,点击更新驱动程序,选择手动查找并安装驱动程序
从列表中选取
选择通用串行总线控制器
选择厂商“FTDI”,型号“USB,Serial Converter”,
下一步,选择继续安装驱动
然后,你可以看到。
还要更新一次驱动,虽然是只有一个设备,却要更新两次才能正常,再双击这个设备这次选择的不是通用串行总线控制器,二是是端口(COM和LPT)
厂商和版本,和之前的一样
至此驱动安装完毕
2、STMISP安装
1、找到“STM32 ISP程序下载器”,选择安装路径,依次点击下一步完成安装。
2、此软件由于年代久远,缺乏更新,在新的一代系统中缺少相应的组件mesa.dll,打开软件时会出现缺少组件等问题。
解决办法:找到把已经下载好的“mesa.dll”文件拷到如下系统路径。
C:\Windows\SysWOW64或者C:\Windows\System32
3、程序烧写步骤
1、用跳线帽短路boot0,选择单片机启动方式为下载模式。
拔掉跳线帽则为正常运行模式
2、打开STM32ISP程序下载器,根据下图次序选择操作
1)其中端口的选择要在在设备管理器中进行查看
2)连接设备成功之后,会显示操作信息。
3)装载。
找到MDK工程生成的hex文件。
4)选择自动烧写。
5)拔掉跳线帽,复位单片机,程序可正常运行。
在Keil MDK环境下使用STM32固件库
在Keil MDK环境下使用STM32固件库简介写这篇教程主要是和大家分享使用STM32的基本方法,也是给自己学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。
我现在也是刚开始接触学习STM32,我是在STM32的固件库V3基础上进行学习。
在这里我和大家分享一下使用V3.x库的方法,希望大家喜欢,如有错误请指出。
这篇教程分以下几个方面,一:建立工程,设置工程属性。
二:建立条理清晰的GROUP;三:使用JLINK仿真调试。
下面就分别逐个说明。
一、新建MDK工程1、首先,打开MDK软件,再点击Project->New uVision Project…,如下图所示:弹出如下对话框:新建一个文件夹MDK工程,然后把工程名字设为test,点击保存。
弹出选择器件的对话框,我们使用的是stm32单片机,所以选择STMicroelectronics下面的器件,如STM32F107VCT6,如图所示:点击OK,MDK会弹出一个对话框,如图所示:问是否加载启动代码到当前工程下面,如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和这个不同,需要自己添加。
在这里我们使用的是新版本的库,所以点击否,自己添加启动代码。
启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何工作,感兴趣可以研究一下,现在可以不必关心它。
2、接下来我们需要对工程进行一些设置。
在工程区,右键点击Target1,选择Options for Target…Target1‟ 如图所示:弹出如下窗口,选择Output标签,设置目标文件的生成路径及其他相关参数。
如图点击Select Folder for Objects 在弹出的窗口中点空白处新建“Obj”文件夹,然后双击“Obj”文件夹,如图中所示的Path后,点击OK.点击Listing标签,新建“list”文件夹,设置链接文件的生成路径,及相关参数。
使用keil进行stm32单片机开发的流程
使用Keil进行STM32单片机开发的流程一、准备工作1. 选择合适的STM32开发板在进行STM32单片机开发之前,首先需要选择一块合适的开发板。
根据项目需求以及个人偏好,可以选择不同性能和功能的STM32开发板,例如STM32F1、STM32F4等系列。
2. 安装Keil软件Keil是一款专业的嵌入式开发工具,提供了丰富的开发功能和工具链。
在进行STM32单片机开发时,需要下载并安装Keil软件,并且根据所选择的STM32系列,安装相应的芯片支持包。
3. 准备连接线和外设在进行开发之前,还需要准备好USB连接线、串口线、电源线等,并根据具体的开发需求准备各类外设模块或传感器。
二、新建工程1. 打开Keil软件安装完成Keil软件后,打开软件并选择“Project”菜单下的“New uVision Project”,在弹出的对话框中选择保存的路径和工程名。
2. 添加源文件和头文件在新建的工程中,右键点击“Target”文件夹,选择“Manage Project Items”,在弹出的对话框中点击“Add Existing Files to Group”,将需要的源文件和头文件添加到工程中。
3. 配置目标芯片在新建工程中,找到“Target”文件夹下的“Options for Target”的菜单,选择“Device”选项卡,选择所使用的目标芯片型号,点击“OK”保存配置。
三、编写代码1. 新建C文件在新建的工程中,右键点击“Source”文件夹,选择“Add new item to Group 'Source'”,在弹出的对话框中选择类型为C文件,并输入文件名。
2. 编写程序在新建的C文件中,编写STM32单片机的程序代码,使用C语言对各种外设进行操作和控制,实现所需的功能。
3. 调试程序在编写程序完成后,可以连接STM32开发板,并使用Keil软件提供的调试功能,对程序进行单步调试、断点调试等,确保程序能够正确运行。
STM32的调试方式更新程序仿真以及补救措施
STM32的调试方式更新程序仿真以及补救措施STM32是一款常见的嵌入式微控制器系列,具有强大的性能和丰富的外设接口。
在使用STM32进行开发时,常常需要进行调试、更新程序和仿真操作,并且可能会遇到一些问题。
下面将介绍STM32的调试方式、更新程序、仿真以及补救措施。
一、调试方式:1. JTAG/SWD调试:STM32微控制器通常配备了JTAG/SWD接口,可以通过调试器连接到计算机上,通过调试器与IDE(如Keil、IAR)或开源工具(如OpenOCD)进行连调,实现程序的调试、单步执行等功能。
常见的调试器有ST-LINK、JLINK等,可以通过USB接口与计算机连接。
这种调试方式可以方便地查看寄存器的值、查看和修改内存中的数据等,非常适合对程序进行低层次的调试和优化。
2. printf输出调试:在没有调试器的情况下,我们可以通过串口打印调试信息。
STM32通常具有多个串口,可以通过配置串口参数,并使用库函数printf将调试信息发送到串口进行观察。
这种调试方式适用于获取程序中一些阶段的状态信息,但并不能进行实时的断点调试和单步执行。
二、更新程序:1.串口更新程序:将更新程序(一般是BIN或HEX格式)通过串口发送到STM32,然后利用STM32的串口接收中断或DMA功能,将接收到的数据存储到内存中,再执行程序更新的过程。
这种方式操作简单,适用于在现有系统中更新程序,但更新速度相对较慢。
2. USB DFU更新程序:STM32支持通过USB接口进行固件升级(DFU)。
通过配置USB接口参数,将更新程序发送到STM32中的内存。
然后通过执行Firmware Upgrade(固件升级)的指令,将更新程序写入到FLASH中并执行更新。
使用USBDFU更新程序可以快速方便地进行程序的更新,适用于大批量的固件升级。
三、仿真:在进行STM32程序开发的过程中,常常需要进行仿真操作,以验证程序的正确性和功能的实现。
使用keil进行stm32单片机开发的流程 -回复
使用keil进行stm32单片机开发的流程-回复使用Keil进行STM32单片机开发的流程Keil是一种常用的集成开发环境(Integrated Development Environment,IDE),它被广泛用于嵌入式系统的开发。
在STM32单片机开发过程中,Keil可以提供开发者所需的一切工具和资源,以提高开发效率和质量。
本文将按照以下步骤来介绍使用Keil进行STM32单片机开发的流程。
1. 环境搭建在开始使用Keil进行开发之前,我们需要先搭建好开发环境。
首先,需要下载并安装Keil开发环境,可以从官方网站进行下载。
接着,我们还需要下载STM32的支持软件包(STM32CubeMX),该软件可以自动生成STM32的初始化代码和底层驱动库。
安装完成后,打开Keil IDE并创建一个新的工程。
2. 工程配置在Keil中创建新工程后,需要进行一些基本的配置。
首先选择适配你的STM32芯片的芯片系列和型号,并指定一个工作目录来存放工程文件。
然后,选择适当的编译器和调试器,以及生成的工程类型(C/C++)。
接下来,选择合适的启动文件和系统文件作为工程的基础。
在这一步还可以设置其他的一些编译选项和调试选项,根据需要进行调整。
3. STM32CubeMX的使用STM32CubeMX是一个可视化工具,可以帮助我们快速、高效地配置和生成STM32单片机的初始化代码。
打开STM32CubeMX后,选择合适的芯片型号,并设置各种外设、时钟和引脚配置。
通过可视化界面的操作,可以快速生成初始化代码。
4. 生成代码通过STM32CubeMX生成的初始化代码可以包括各种驱动库和设备配置。
在Keil IDE中,我们可以导入生成的代码,将其添加到工程中。
这些代码将为我们提供底层驱动库和配置文件,方便我们进行硬件的访问和控制。
导入代码后,可以在工程中进行一些必要的调整和修改,以满足项目的需求。
5. 编写应用程序一旦生成了初始的代码框架,我们就可以开始编写自己的应用程序了。
keil的调试步骤与方法
keil的调试步骤与方法Keil调试步骤与方法Keil是一款常用的嵌入式开发环境,用于编写和调试嵌入式系统的程序。
在进行嵌入式开发过程中,调试是一个非常重要的环节,它可以帮助开发人员找出程序中存在的问题并进行修复。
本文将介绍Keil的调试步骤与方法,帮助读者更好地进行嵌入式开发与调试。
一、准备工作在使用Keil进行调试之前,我们需要先进行一些准备工作。
首先,我们需要安装Keil软件,并配置好开发板的硬件环境。
其次,我们需要将待调试的程序下载到开发板中,并连接上调试器。
最后,我们需要在Keil中打开待调试的项目文件,以便进行后续的调试操作。
二、设置断点在进行程序调试时,我们常常需要在程序中设置断点,以便在指定位置停下来观察程序的执行情况。
在Keil中,我们可以通过单击代码行号的方式来设置断点。
当程序执行到设置的断点位置时,会自动停下来,以便我们观察相关的变量值和程序执行流程。
三、单步执行单步执行是调试过程中常用的操作之一,它可以使程序以单步的方式执行,以便我们逐行观察程序的执行情况。
在Keil中,我们可以通过点击工具栏上的“单步执行”按钮来进行单步执行操作。
在单步执行过程中,我们可以观察变量的值的变化,以及程序的执行流程,帮助我们找出程序中的问题。
四、观察变量值在调试过程中,我们经常需要观察程序中的变量值,以便判断程序的执行是否符合预期。
在Keil中,我们可以通过“观察窗口”来观察变量的值。
在观察窗口中,我们可以添加需要观察的变量,并在程序执行过程中实时查看其数值的变化。
五、查看寄存器值在嵌入式系统中,寄存器是非常重要的硬件资源,它们直接影响着程序的执行。
在Keil中,我们可以通过“寄存器窗口”来查看寄存器的值。
在寄存器窗口中,我们可以查看各个寄存器的当前值,以便判断程序的执行是否符合预期。
六、调试输出除了观察变量和寄存器的值外,我们还可以通过调试输出来观察程序的执行情况。
在Keil中,我们可以使用printf函数来进行调试输出。
Keil MDK在STM32中SRAM 调试
图解Keil MDK 3.5/UV4beta Jlink V7 在STM32中SRAM 调试成功方法成功目的是避免FLASH擦写次数的限制,和避免新手学习很快让MCU结束生命。
以本人STM32F103RBT6为例,128K flash,20K SRAM,借鉴前人ULINK下调试的方法。
把内存分为16K用做FLASH,4K用做内存使用,这里以GPIO点亮LED为例子,项目为GPIO_OUT。
1、copy Keil安装目录下,例如C:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky中的RAM.ini到项目目录,然后双击GPIO_OUT.uvproj,启动Keil。
2、单击启动下图对话框,在Project Targets一项单击New(Insert)按钮,增加一个目标,命名为SRAM,然后OK。
3、然后再Select Target中选择SRAM。
4、左侧项目栏中选择SRAM,单击右键选择Options for Target “SRAM”,打开选项对话框。
5、如上图所示,在target选项中修改IROM1的Start值为:0x20000000,Size:0x4000IRAM1的Start值为:0x20004000,Size:0x1000;即内存分为16K用做FLASH,4K用做内存使用。
6、OutPut选项卡中也选中Create HEX File,如下图所示。
7、在Debug选项中仿真器选择Cortex-M3 J-LINK,Initialization File中点击Edit按钮选择刚才copy过来的RAM.ini文件,取消Load Application at Startup复选框,设置如下:并点击仿真器一栏,Settings按钮,进一步设置,如下图,注意Debug选项中Interface中选择USB,如下图所示,在Flash Download中配置,选中Do not Erase,在RAM for Algorithm中Start设置为0x20004000,Size设置为0x1000,设置STM32F10x Med-density Flash的地址Start:0x20000000,size:0x00004000,点击OK。
安富莱STM32例程调试方法(KEIL)
安富莱S T M32例程调试方法(K E I L)V1.0 2010-01-01 1.调试前的准备工作(1)安装好KEIL MDK集成环境(光盘上收录了mdk3.70.rar,安装完后需要用注册机进行注册。
注册方法在另外的文档说明)(2)安装J-LINK仿真器驱动。
(3)接好J-Link仿真器,给开发板上电。
(4)将开发板的COM1口通过串口线连接到计算机。
(5)启动windows的超级终端程序(大部分例程都通过串口打印信息)。
最小调试环境如下:2.开始调试例程(1)首先从网站下载或者从安富莱开发板配套的光盘上复制例程的压缩包至PC机硬盘。
(2)解压文件 : Ex001-串口printf和scanf(20xx-xx-xx).rar(3)进入Project\RVMDK目录(4)双击project.Uv2图标,即可自动启动KEIL MDK开发环境。
MDK主界面如下:单击“Select Target”下拉列表框,会出现3个Target选项:这个工程包含3个Target配置,可以生成在3种目标程序(使用相同的源代码),分别在CPU内部Flash、CPU内部RAM和外部SRAM中运行。
我调试时,大多数选择在CpuRAM 进行,因为这样下载要快很多。
下面介绍几个常用的按钮:图标 功能说明编译当前文件。
可以编译当前打开的单个源文件。
编译并连接所有文件。
会编译当前更新了的文件。
重新编译并连接所有文件。
下载程序到目标板。
可以直接点开始调试按钮进行调试,因为它会自动决定是否需要下载程序到目标板。
开始调试。
我们发布的源代码在打包时去掉了所有的目标文件,因此你在第1次调试时,必须重新编译所有的文件,也就是说点击 按钮。
编译成功后,可以在MDK下面的输出窗口看到编译结果:编译成功后,我们就可以开始调试了。
点击 后,会自动下载程序到Flash或者内部RAM,稍等片刻会出现调试界面:黄色的箭头表示当前程序停在main()函数入口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keil MDK3.20 在ULINK下调试stm32方法
1. 程序在RAM中运行
要点:(1)程序的下载地址改到RAM空间中
(2)程序的debug之前要设定SP,PC指针到Ram空间
新建工程,选择STM32 的具体型号,我买的万利的开发板,选择
stm32f103Vb。
?
设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。
?
空间大小如何分配取决于自己的需求。
本款处理器内部ram大小为20K,分配16K给只读区,4K给可读可写区。
这样IROM设定的大小为0x4000,IRAM1的起始就变为0X20004000,大小只剩下0X1000。
Debug标签选择ULINK1 Cortex Debugger(软件采用yjgyiysbcc兄crack 方法)。
不选Load Application at Start,在Initialization中加入启动脚本RAM.ini。
?
RAM.ini中具体内容如下:
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset
Register
}
LOAD XXX.axf INCREMENTAL // Download,红色代表工程文件名.axf
Setup(); // Setup for Running
g, main
Utilities下Update Target before Debugging不选
这样添加后就可以在RAM中调试了。
>>>>>>我们需要在代码中设置正确的中断向量表位置。
中断向量表通常被放置在用户程序的开始,所以flash中运行时,向量表位于0x08000000处,而当代码被放置在SRAM中运行时,他的位置就成了
0x20000000。
在初始化NVIC时,我们可以放置如下代码,定义向量表的位置
NVIC_SetVectorTable(0x20000000 , 0x0);
或
NVIC_SetVectorTable(0x08000000 , 0x0); >>>>>工程选项中Debug项,Download选项卡中,去掉所有钩子,不下载代码到flash,这样就可以在RAM中调试程序了!
2. Flash中调试
新建工程后系统默认设定好IROM1为FLASH的地址和空间大小。
只需要两步:
1)设定调试工具为ULINK1 CORTEX DEBUGGER,如下图所示,不需要设定起始脚本。
?
2)在Utility中设定选择ULINK1 cortex debugger,并设定编程算法。
如下图所示。
?
? 之后就可以FLASH调试了。
硬件:万利的 EK-STM32F开发板,硬件去掉RS3,RS4 排阻,断开开发板本身的仿真器。
软件:KEIL MDK3.20+ULINK驱动替换文件。
仿真器:ULINK。