当前位置:首页 > 单片机 > 单片机
[导读] __use_no_semihosting_swi,即不使用半主机模式,防止程序进入软件中断。1.在嵌入式程序编译时如果出现printf、fopen、fclose等文件操作,因程序中并没有对这些函数的底层实现,使得设备运行时会进入软

 

__use_no_semihosting_swi,即不使用半主机模式,防止程序进入软件中断。

 

1.在嵌入式程序编译时如果出现printf、fopen、fclose等文件操作,因程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中:

 

//不使用半主机模式
#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB
#pragma import(__use_no_semihosting) //注释本行, 方法1
struct __FILE {
int handle;
};
FILE __stdout;

_sys_exit(int x)
{
x = x;
}

//__use_no_semihosting was requested, but _ttywrch was referenced, 增加如下函数, 方法2
_ttywrch(int ch)
{
ch = ch;
}
#endif

 

 

 

若出现如下编译错误:Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _ttywrch was referenced,此时你只需重写_ttywrch 函数即可

void _ttywrch(int ch){}。

2.__use_no_semihosting_swi也常用于对printf的重定向,通常是重定向到串口输出,这时只需在1中的重写函数中加入:

int fputc(int ch, FILE *f)
{
uart_send_char(ch);//你的串口发送字符函数
return ch;
}

这样即可。

 

 

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

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

之后新建新的工程,添加.a文件就可以使用了,当然也可以使用keil来添加,但是keil默认的是用.lab,需要自己配置一下文件属性,改为lib文件即可。一半release sdk的时候用这种方式很关键的,毕竟自己的核心代...

关键字: keil 文件属性 lib文件

DSP28335与AD7606通过SPI的串行数据交互

关键字: keil C

AD7606的并行采集

关键字: ad7606 数据 C keil

为帮助大家更好使用单片机编程软件,本文将对keil单片机编程软件仿真、调剂技巧予以讲解,并对该单片机编程软件的常见错误提示予以阐述。

关键字: 单片机编程软件 指数 keil

本文对于单片机编程软件的介绍将基于如何采用keil单片机编程软件调试stm32,如果你对单片机编程软件抑或本文内容具有兴趣,不妨继续往下阅读哦。

关键字: 单片机编程软件 指数 keil

本文对于单片机编程软件的介绍基于两点:1.keil单片机编程软件编译环境优化等级说明,2.keil单片机编程软件中两大概念名词解析。

关键字: 单片机编程软件 指数 keil

为增加大家对单片机编程软件的了解,本文将对keil单片机编程软件予以介绍,主要在于介绍该单片机编程软件的模式设置和一些编程事项。

关键字: keil 单片机编程软件 指数

为帮助大家更快学会单片机编程软件的使用,本文将对keil单片机编程软件的使用方法加以介绍。如果你对本文内容具有兴趣,不妨继续往下阅读哦。

关键字: keil 单片机编程软件 指数

本文对单片机编程软件的介绍基于Keil,主要在于介绍keil单片机编程软件如何将hex下载进STM32,如何烧写hex文件以及如何直接使用二进制数。

关键字: keil 单片机编程软件 指数
关闭
关闭