当前位置:首页 > 单片机 > 单片机
[导读] 昨天调试STM32程序,以前使用的是MDK3.40的版本,把版本升了下级,升到了MDK4.10,装好后,一运行,哈哈,新版本给人的感觉就是不一样啊,很爽,较之前有很多改进,把自己以前的程序打开,编译运行发现程序调试时无法进入Main函

 昨天调试STM32程序,以前使用的是MDK3.40的版本,把版本升了下级,升到了MDK4.10,装好后,一运行,哈哈,新版本给人的感觉就是不一样啊,很爽,较之前有很多改进,把自己以前的程序打开,编译运行发现程序调试时无法进入Main函数,弄了很久,很是郁闷啊,最后还是在ourdev的坛子里,找到了同样问题的解决方法,多谢ourdev,以下是坛子里面的帖子,我把他贴出来了.

sdc666 :

请问高手,我在调试我的STM32F101c8t6时,遇到一个问题,因为我要调试串口,我在main.c中添加了#include ,编译可以通过,但是当我用jlink硬件调试时,一开始就停在了 " 0x08001460 BEAB BKPT 0xAB";并且无法向下运行. 请问高手,这个问题的原因是什么?怎么解决? 谢谢!

_sys_open:

0x08001450 B50E PUSH {r1-r3,lr}

0x08001452 E9CD0100 STRD r0,r1,[sp,#0]

0x08001456 F000FAF9 BL.W strlen (0x08001A4C)

0x0800145A 9002 STR r0,[sp,#0x08]

0x0800145C 4669 MOV r1,sp

0x0800145E 2001 MOVS r0,#0x01

0x08001460 BEAB BKPT 0xAB

0x08001462 BD0E POP {r1-r3,pc}

pldjn :

应该是项目设置的问题,检查一下你的设置.

sdc666:

pldjn 你好,能详细指点以下么?应该怎样设置? 这个程序是我该的,本来是没有#include ,我添加串口后因为需要标准库函数,所以才加上的. 是不是还要设置编译环境? 谢谢.

pldjn :

你用J-Flash打开你的HEX文件看看编译的是否是对的.不用自动下载使用J-flash烧进去调一下试试.

dragonwww:

我也遇到同样问题,我是调用printf时出现的这个错误,我已经把putchar重定位了,不知道为何还是出错,求解,THX!

yugen:

那是因为你使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。照你的提示看,也许是_sys_open()没写。_sys_xxx之类的的只要写个空函数就行了。

dragonwww:

to yugen:

能否说的再仔细些,如果自己编写个空函数应该放在哪里?函数定义格式是什么样的呢?

纳闷的是以前也用过printf,没出现这个提示啊。

PZLPDY:

5楼的应该不是这样吧?

应该是你没有选中微库造成的。这个问题昨天我遇到过。在工程的设置选项里把微库勾上就OK了

dragonwww:

to PZLPDY:

苍天啊,果然如你所说,把微库勾上就OK了,奇怪了为什么以前用的的时候没报错呢?以前也没选微库啊!

yugen:

因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。

添加下面代码,就可以使用标准库了:

#pragma import(__use_no_semihosting)

_sys_exit(int x)

{

x = x;

}

struct __FILE

{

int handle;

/* Whatever you require here. If the only file you are using is */

/* standard output using printf() for debugging, no file handling */

/* is required. */

};

/* FILE is typedef’ d in stdio.h. */

FILE __stdout;

dragonwww:

yugen是高手啊,再请教一下:

1.何为“半主机模式”?与 非半主机模式有何区别?

2.你的这段代码需要放在那个文件里?自己的main函数所在的文件吗?

3.看到代码实现了_sys_exit,那我提示错误的_sys_open()不用实现吗?

请指教,多谢!

yugen:

你说的问题都可以在"RealView® 编译工具库和浮点支持指南"书中找到,网上有下,我就不复制了。书有中文的。realview编译器有好几本书,都有中文。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭