MDK4.71A新版中调试STM32F103等问题解决方法
- 格式:pdf
- 大小:107.79 KB
- 文档页数:3
在KeiluVision4MDK下配置开发STM32F103Z完整教程环境搭建:1、安装 Keil uVision4 MDK略2、安装 J-Link安装 Setup_JLinkARM_V4501.exe 驱动时,会弹出【SEGGER J-Link DLL Updater V4.501 】对话框,不要选择 Keil 直接点击OK即可,因为Keil对⽀持M3内核SW接⼝采⽤了JL2CM3.dll 这个⽂件,该⽂件的版本号是和该⽬录下Jlink驱动版本号配套的,不要擅⾃改变他们,否则不能使⽤。
建⽴⼯程:1、在桌⾯上建⽴⼀个⽂件夹【MyStm32】⽂件夹2、在【MyStm32】⽂件夹下建⽴【USER】、【FWlib】、【CMSIS】、【Output】、【Listing】⽂件夹。
【USER】:存放⽤户⾃定义的应⽤程序【FWlib】:存放库⽂件【CMSIS】:存放M3系列单⽚机通⽤的⽂件【Output】:存放编译器编译后输出的⽂件【Listing】:编译器编译过程中产⽣的⽂件3、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 的【inc】跟【src】这两个⽂件夹拷贝到【FWlib】。
【inc】、【src】⽚上外设驱动的源⽂件和头⽂件。
4、\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c 拷贝到【USER】stm32f10x_conf.h:配置⽂件stm32f10x_it.h、stm32f10x_it.c:中断函数⽂件。
system_stm32f10x.c:ARM公司提供的符合CMSIS标准的库⽂件5、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup的【arm】⽂件夹的拷贝到 MyStm32\CMSIS\startup。
STM32 单片机常见的工作异常现象分析及解决方案贴了两块样板,烧写同样的固件。
其中一块工作正常,但是另外一块出现了很奇怪的现象:在线调试正常;每次烧写完后工作正常;重新上电有时候工作正常,有时候工作不正常;工作不正常时,按下复位按键,恢复正常。
工作异常现象:main 函数中的系统运行指示灯不闪烁,但是初始化过程中点的一个灯是亮的!说明程序运行一段时间后,不工作了。
由于在线调试模式,板子工作正常,无法通过在线调试的方式判断程序运行的异常状态。
分析可能的原因:1、初始化过程中,程序陷入死循环。
但程序初始化过程中,没有while (1)死循环的代码。
2、板子上电后不断复位,导致无法进入main 函数中的while(1)循环。
问题查找:硬件:1、确认BOOT0 管脚接10kΩ欧电阻下拉到地;2、RC 上电延时复位电路中,R 为10kΩ,C 由0.1uF 改为10uF,现象依旧;3、MCU 3.3V 电源纹波很小,排除电源问题。
好像从硬件上查不出什幺问题。
只能从板子上唯一点亮的灯下手了。
软件:1、好像跟硬件复位没什幺关系,为了确认板子是不是在不停复位,在点亮的那个灯前加了100ms 延时,如果是在复位,那灯就应该不停闪烁。
但那个灯还一直是亮的,说明是程序运行出错,不运行了。
2.不断修改led 灯在初始化代码中的位置,最终定位到导致运行出错的代码:配置一个GPIO 为外部中断,跳变沿触发,上拉。
把上拉改为NOPULL,工作一切正常。
问题定位:配置为外部中断的GPIO 悬空导致。
之前工作正常的样板是一直有连接到那个IO 脚的外接模块,这个工作不正常的没有接,导致IO 管脚电平不确定。
由于电平的不确定,在初始化的瞬间有一个跳变沿,导致程序进入外部中断服务函数。
在中断服务函数中,要读取一个定时器的寄存器的值,但是要读取的定时器可能还没有完成初始化,导致读取失败,程序运行异常。
解决办法:1、PULL 模式有PULLRISING 改为NOPULL;2、timer 在这个外部中断之前进行初始化。
STM32 在Keil MDK 环境下RAM 上代码调试
自从51 后就没碰过了Keil 了~从昨天下午又开始再次使用Keil MDK~不过
这次是for ARM 的~前几天的STM32W108 调试统统是在IAR 上进行的~刚在STM32F103ZE-EK 上进行了一个例程的调试~就发现原来更有方法在RAM 中
进行代码调试的配置~以前在IAR 中知道有个iar- cfg.icf 文件是关于存储分配的~貌似也可以如此~不过没实际操作过不敢下结论~索性就在Keil 下来了个尝
试~比较坎坷~也学到不少东西~
废话少说,进入正题~(Keil4 下的画面~这个配置的方法跟是3 一样~)
步骤与图示:
1.先给个CPU 的数据,需要注意的是三个红圈的地方,架构,型号,Flash
和SRAM 大小~如图1
图1
2.Target 的设置
1)勾上可以用微库,减小生成代码的大小
2,3)分别定义ROM 区位置及大小和RAM 区位置和大小。
在这里需要说
明的是,Cortex-M3 的架构有4G 的寻址空间,而Flash 的起始地址在
0x08000000,RAM 地址在0x20000000,在这里进行了第一次相关地址的更改~ 如图2
0x1000 为4K~这里的0xc000 则为48K 的ROM 分配~RAM 的为16K~基本上移植个uCOS-II 都够用了~。
STM32F103_使用心得IO端口输入输出模式设置:...........;Delay延时函数:..............;IO端口使用总结:...............;IO口时钟配置:................;初始化IO口参数:...............;注意:时钟使能之后操作IO口才有效!......;IO端口输出高低电平函数:...........;IO的输入IO端口输入输出模式设置: (1)Delay延时函数: (2)IO端口使用总结: (2)IO口时钟配置: (2)初始化IO口参数: (2)注意:时钟使能之后操作IO口才有效! (2)IO端口输出高低电平函数: (2)IO的输入和输出宏定义方式: (3)读取某个IO的电平函数: (3)IO口方向切换成双向 (3)IO 口外部中断的一般步骤: (3)内部ADC使用总结: (4)LCDTFT函数使用大全 (5)TFTLCD使用注意点: (5)IO端口宏定义和使用方法: (6)Keil使用心得: (6)ucGUI移植 (6)DDS AD9850测试程序: (6)ADC 使用小结: (7)ADC测试程序: (9)DAC—tlv5638测试程序 (9)红外测试程序: (9)DMA使用心得: (9)通用定时器使用: (9)BUG发现: (10)编程总结: (10)时钟总结: (10)汉字显示(外部SD卡字库): (11)字符、汉字显示(内部FLASH) (12)图片显示: (16)触摸屏: (17)引脚连接: (19)IO端口输入输出模式设置:Delay延时函数:delay_ms(u16 nms);delay_us(u32 nus);IO端口使用总结:1)使能IO 口时钟。
调用函数为RCC_APB2PeriphClockCmd()。
2)初始化IO 参数。
调用函数GPIO_Init();3)操作IO。
IO口时钟配置:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);初始化IO口参数:注意:时钟使能之后操作IO口才有效!GPIO_InitTypeDefGPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); //上拉输入GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); //LED0-->PA.8 端口配置 //推挽输出技巧:如果为同一端口的不同引脚,可以使用或运算,如GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13|GPIO_Pin_15;IO端口输出高低电平函数:GPIO_SetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_9); //PA.8 输出高GPIO_ResetBits(GPIOA,GPIO_Pin_8);GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitActionBitVal);//可以输出1,也可以输出0GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//整体输出一个值IO的输入和输出宏定义方式:#define DATAOUT(x) GPIOB->ODR=x; //数据输出#define DATAIN GPIOB->IDR; //数据输入#define DATAOUT(DataValue){GPIO_Write(GPIOB,(GPIO_ReadOutputData(GPIOB)&0xff00)|(DataValu e&0x00FF));} //PB0~7,作为数据线读取某个IO的电平函数:(一) 读出一个IO口电平GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)#define KEY0 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13) //PA13#define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) //PA15#define KEY2 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)(二) 读出某个IO口的全部电平GPIO_ReadInputData(GPIOC)IO口方向切换成双向IIC里面的一个实例#define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;} //PC12#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}IO 口外部中断的一般步骤:1)初始化IO 口为输入。
一、在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.”解决办法:Keil MDK默认使用ULINK仿真器下载程序,在“Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。
二、编译工程时提示如下信息:main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10 x_nvic.o).main.axf: Error: L6218E: Undefined symbol __GetBASEPRI (referred from stm32f10x_nvi c.o).main.axf: Error: L6218E: Undefined symbol __RESETFAULTMASK (referred from stm32f 10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __RESETPRIMASK (referred from stm32f10x _nvic.o).main.axf: Error: L6218E: Undefined symbol __SETFAULTMASK (referred from stm32f10x _nvic.o).main.axf: Error: L6218E: Undefined symbol __SETPRIMASK (referred from stm32f10x_n vic.o).解决办法:工程缺少“cortexm3_macro.s”文件,把cortexm3_macro.s和STM3210x.s全部添加到工程即可。
三、调试器不能连接到STM32的问题与解决办法很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link。
如何使用Keil创建STM32F103的工程下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。
本篇推文是继续上一篇推文的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。
创建工程创建一个Keil工程,芯片依旧选择STM32F103C8T6,然后在Manage Run-Time Environment对话框中选择需要用的的软件组件,与上文不同的是,我们需要把RTT一起勾上。
如下图:上图中,红线框中即为RTT操作系统的组件,分别为设备驱动,系统内核以及shell。
蓝线框中为Keil的RTX操作系统。
我们现在要用的是RTT,所以勾选RTT的组件即可,其中Kernel为必选项,device drivers依赖kernel,shell又依赖device drivers。
shell也提一下,shell强翻成中文就是命令行外壳,如同linux操作系统一样,RTT也提供了一套共用户在命令行操作的操作接口。
RTT 提供的这套接口叫做finsh,主要用于调试、查看系统信息。
finsh支持两种模式:1. C语言解释器模式, 为行文方便称之为c-style;2. 传统命令行模式,此模式又称为msh(module shell)。
在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf 日志打印,在有些情况下,这两种方式并不是那么好用。
比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中的线程运行状态、手动控制系统状态。
如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为。
这无疑会非常方便。
finsh就是基于此而设计,它运行于开发板,可以使用串口/以太网/USB等与PC机进行通信。
创建工程后,相对上一篇推文创建的工程,项目中会多出了RTT,如下图。
最近一段时间一直在学习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退出。
1.启动KEIL,创建工程以后,先用创建文件,然后什么也不干,直接点击保存,保存到你的工程文件夹下面,命名为main.c(其他也可以,命名为main.c是为了方便你同其他的C文件快速区分开来)。
然后输入以下几行代码:#include "stm32f10x.h"void main(void){}然后点击Build,会有以下报错信息:C:\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h(96): error: #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"这是说stm32f10x.h中要求工程在预编译时通过一个字符串,来识别所用的芯片FLASH大小,然后确定头文件中哪些语句有效。
ST把STM32按FLASH大小尺寸来归类的,具体在STM32参考手册里面有。
解决办法:请点击中的打开的界面中选到选项,然后Define里面输入STM32F10X_MD(因为这个实验板上用的STM32F103C8T6对应这个“中等容量的FLASH”,换做其他芯片不一定是这个字符串),如图:然后点击OK。
再,然后会出第二个错误:C:\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h(8297): error: #5: cannot open source input file "stm32f10x_conf.h": No such file or directory这说明文件包含的路径没有设置好。
解决办法:按上面所述选到选项。
然后在下选择,再点击,然后打开目录找到固件库里面的这个文件(最好能把这个文件夹复制出来保存到一个纯英文路径的目录下),然后选择中里面的inc文件夹,然后再如法炮制选中里面的src文件夹。
STM32调试过程中常见的问题及解决方法一、在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.”解决办法:Keil MDK默认使用ULINK仿真器下载程序,在“Project --->Option for Target 'xxx' --->Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。
二、编译工程时提示如下信息:main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __GetBASEPRI (referred from stm32f10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __RESETFAULTMASK (referred from stm32f10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __RESETPRIMASK (referred from stm32f10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __SETFAULTMASK (referred from stm32f10x_nvic.o).main.axf: Error: L6218E: Undefined symbol __SETPRIMASK (referred from stm32f10x_nvic.o).解决办法:工程缺少“cortexm3_macro.s”文件,把cortexm3_macro.s和STM3210x.s 全部添加到工程即可。
MDK常见错误解决第一篇:MDK常见错误解决分类:软件C语言2012-01-04 11:03 49人阅读评论(0)收藏举报工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性上真是无法比较.后来渐渐知道keil已经被arm公司收购,现在keil MDK 成为了arm官方编译器,所以决定重新投奔keil,利用平时的时间,将原程序重新用mdk编译.mdk的优点就没必要说了,在这里把平时遇到的编译器给出的警告和错误信息给出详解,希望给初学者一点帮助,发现错误,需要补充的欢迎留言.1.warning: #550-D: variable “d” was set but never used描述:变量'd'定义但从未使用,或者是,虽然这个变量你使用了,但编译器认为变量d所在的语句没有意义,编译器把它优化了.解决:仔细衡量所定义的变量d是否有用,若是认定变量d所在语句有意义,那么尝试用volatile关键字修饰变量d,若是真的没有用,那么删除掉以释放可能的内存.2.warning: #1-D: last line of file ends without a newline 描述:文件最后一行不是新的一行.编译器要求程序文件的最后一行必须是空行,想了半天没想通为什么要这样.解决:可以不理会.若是觉得出现警告不爽,那么在出现警告的文件的最后一行敲个回车,空出一行.3.warning: #111-D: statement is unreachable描述:声明不可能到达.多出现在这种场合:int main(void){...while(1)//无限循环,这在不使用操作系统的程序中最常见{...}return 0;//这句声明在正常情况下不可能执行到,编译器发出警告}解决:不理会.4.warning: C3017W: data may be used before being set描述:变量'data'在使用前没有明确的赋值.如:uint8 i,data;//定义变量i和data,二者都没有明确赋值for(i = 0;i < 8;i++)//变量'i'在语句中被赋值0{if(IO1PIN & SO_CC2420)data |= 0x01;//变量'data'在使用前没有明确赋值,编译器发出警告elsedata &= ~0x01;}解决:应仔细衡量该变量的初始值是否为0,若是,可以不理会这个警告,因为MDK编译器在程序执行前,会将使用到的数据区初始化为0,但若是该变量的初始值不应该是0,忽略这个警告可能会引起致命错误.这个警告应引起足够重视.应养成变量赋初值的习惯,好在有编译器给把关.5.warning: #177-D: variable “temp” was declared but never referenced描述:变量'temp'进行了声明但没有引用.多出现在声明了一个变量,但却没有使用它,它和warning: #550-D: variable “temp” was set but never used不同之处在于temp从没有使用过.解决:若是定义的变量确实没有用,删除掉;若是有用,则在程序中使用.与该警告类似的还有warning: #177-D: function “MACProcessBeacon” was declared but never referenced6.warning: #940-D: missing return statement at end of non-void function“DealwithInspect2”描述:返回非空的函数“DealwithInspect2”的最后缺少返回值声明.如:int DealwithInspect2(uint32 test){.........//此处应该是return x;返回一个int型数据,若是没有返回值,编译器产生警告}7.1.error: #65: expected a “;”描述:缺少分号.大多是漏忘';'.解决:双击错误行,在定位到错误点的附近找到没加';'号的语句,加上分号.并不一定在定位到的错误行才却分号,可能是这行的上一行,也可能是下一行.2.error: #65: expected a “;”和error: #20: identifier “xxxx” is undefined一块出现,而且后面的error: #20错误可能一大堆描述:这个错误对于第一次遇上的人来说绝对是个噩梦,当错误出现,满怀希望的双击错误提示,来到错误行时却愕然发现,错误行绝对没有错,于是找找错误行的上一行,下一行,没有错误,再找上上行,下下行...让人无比郁闷的事情出现了:编译提示的所有错误行都不可能有错误出现.其实这最可能是你在.h文件声明外部变量或者函数时,没有在声明语句的最后加分号!如果你有很多模块,如main.c,lcd.c,key.c...有很多头文件,如lcd.h,key.h,若是在lcd.h文件声明函数时没有加分号,那么这种错误可能定为到main.c中,所以要检查所有头文件.解决:仔细检查.h文件,将分号补上.3.Error: L6200E: Symbol flagu multiply defined(by uart0.o and main.o).描述:变量(也是一种符号)flagu多处定义(在uart0.c中和main.c都定义了).通常错在全局变量定义重复.比如:在main.c中定义全局变量flagu:uint8 flagu=0;在uart0.c中也用到该变量,于是声明此变量,我通常都是先复制定义的变量再在变量前面加关键字extern修饰:extern uint8 flagu=0;然后编译,就会出现上面的连接错误,原因在于,我在uart0.c中是又定义了一个变量,而不是声明变量,因为我给变量赋了初值“flagu=0”,这样就重复定义了变量flag.正确的声明方法是去掉赋值部分:extern uint8 flagu;解决办法:找到重复定义的变量,看情况修改一处.4.error: #159: declaration is incompatible with previous “wr_lcd”(declared at line 40)描述:在wr_lcd函数还没有声明之前就已经使用了.多出现在两种情况:第一种,wr_lcd函数体还没有写,就已经用到了它,这种情况多出现在写一个程序的大体结构中,只是简单写一下框架.第二种情况比较常见,函数a调用函数b,但函数b的函数体在函数a的下面:void a(void)//函数a的实体{b();//调用函数b}void b(void)//函数b的实体{...}这样如果点编译,就会产生error: #159的错误,因为当函数a调用函数b时,发现在这之前都没有函数b的任何声明.解决方法:在函数a调用函数b之前,对函数b进行声明,如:void b(void);//对函数b进行声明void a(void)//函数a的实体{b();//调用函数b}void b(void)//函数b的实体{...}第二篇:虚拟主机常见错误和解决网站程序常见有 400,和500 之类的错误.其中以 400-410 之间的错误是客户端错误(和动态程序无关).例如404 表示用户访问了一个不存在的网页等.500错误是服务器端错误,也就是用户程序(Asp,,Php等)错误或者网站配置错误.需要程序员根据错误检查程序.以下是常见错误解决方法:现在总结用户在使用虚拟主机时常见的错误和相应的故障排除方法1.缺少默认首页.错误信息如下Directory Listing DeniedThis Virtual Directory does not allow contents to be listed.原因:用户删除了网站默认首页(index.htm,index.asp,index.php 等),导致网页无法显示.解决:重新上传默认首页,您也可以在用户中心设定默认首页.2.404错误: 访问网站显示,无法找到网页:无法找到该页您正在搜索的页面可能已经删除、更名或暂时不可用。
MDK4.71A新版中调试STM32F103等问题解决方法
在使用新版MDK环境,用3.5库来编写程序,在进行软件仿真或调试STM32F103部分型号时候,可能会出现错误,而直接卡死在SystemInit()中,MDK报如下图类似的错误:access violation at 0x4002100: no ‘read’ permission 等类似的错误…
经观察发现,可能是由于在Debug页面配置的DLL等参数不匹配所致。
现将Debug页面中的仿真DLL参数作如下修改:
我使用的Device型号是:STM32F103VE,请大家根据自己的使用的型号修改。
看了一下Device栏中的型号,发现STM32F100、STM32F102系列、STM32F103中部分(除C/R/T6、C/R/T/V8、C/R/VB、Z系列外)均不能根据Device型号自动匹配正确的DLL参数。
需要我们自己把它手动修改一下就可以正常的仿真调试了。
foxpro2005
2013-7-3。