不使用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程序了。