日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] __use_no_semihosting_swi,即不使用半主機(jī)模式,防止程序進(jìn)入軟件中斷。1.在嵌入式程序編譯時如果出現(xiàn)printf、fopen、fclose等文件操作,因程序中并沒有對這些函數(shù)的底層實現(xiàn),使得設(shè)備運(yùn)行時會進(jìn)入軟

 

__use_no_semihosting_swi,即不使用半主機(jī)模式,防止程序進(jìn)入軟件中斷。

 

1.在嵌入式程序編譯時如果出現(xiàn)printf、fopen、fclose等文件操作,因程序中并沒有對這些函數(shù)的底層實現(xiàn),使得設(shè)備運(yùn)行時會進(jìn)入軟件中斷BAEB處,這時就需要__use_no_semihosting_swi這 個聲明,使程序遇到這些文件操作函數(shù)時不停在此中斷處,具體操作如下,將下列程序加入你的工程中:

 

//不使用半主機(jī)模式
#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, 增加如下函數(shù), 方法2
_ttywrch(int ch)
{
ch = ch;
}
#endif

 

 

 

若出現(xiàn)如下編譯錯誤:Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _ttywrch was referenced,此時你只需重寫_ttywrch 函數(shù)即可

void _ttywrch(int ch){}。

2.__use_no_semihosting_swi也常用于對printf的重定向,通常是重定向到串口輸出,這時只需在1中的重寫函數(shù)中加入:

int fputc(int ch, FILE *f)
{
uart_send_char(ch);//你的串口發(fā)送字符函數(shù)
return ch;
}

這樣即可。

 

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉