Keil编译STM32时不使用MicroLib并取消semihost模式

不使用MicroLib,在keil的Debug选项中取消选择即可,取消选择MicroLib后,再Debug运行时会进入semihost模式,要点多次F5后程序才进入main函数,在烧写完成后,重新上电启动STM32时,程序运行不了。这时需要添加一个C文件,对其中一些函数进行重定向。重定向代码如下

#include "stdio.h"

#pragma import(__use_no_semihosting_swi) //取消semihost模式
#pragma import(__use_no_semihosting) //取消semihost模式

//该函数可以防止报_sys_exit is referenced错误
void _sys_exit(int x) { 
    x = x; 
} 

struct __FILE  { 
    int handle; 
}; 

FILE __stdout;
FILE __stdin;

//fputc,fgetc,ferror是为了防止报sys_open is referenced错误
int fputc(int ch, FILE *f) {
  return 0;
}

int fgetc(FILE *f) {
  return 0;
}


int ferror(FILE *f) {
  /* Your implementation of ferror */
  return EOF;
}
//为了防止报_ttywrch is referenced错误
void _ttywrch(int ch)
{
;
}

将上述文件添加到Keil工程中编译,然后就可以在取消MicroLib情况下运行STM32程序了。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值