找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 8961|回復: 0
打印 上一主題 下一主題
收起左側(cè)

error: __use_no_semihosting_swi was requested, but _sys_open was referenced

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-11 05:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
                        想使用malloc()函數(shù)但會報錯

錯誤信息如下:
.\at91sam9260-sdram\at91sam9260-sdram.axf: Error: L6915E:Library reports error: __use_no_semihosting_swi was requested, but_sys_open was referenced

可以用的,想不報錯的話,
在usart.c里#pragma import(__use_no_semihosting) 下加了
void _ttywrch(int ch)
{
while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
USART1->DR = (u8) ch;
}
不推薦用微庫,代碼瘦身的代價往往是程序變慢,用微庫還限制的一部分功能,申請堆的大小在頭文件里有限制
就是startup_stm32f10x_hd.s第45行Heap_Size EQU 0x00001000
這個就是設(shè)置堆的大小,不過后來沒用malloc,這個函數(shù)用多了,就會有太多碎片,萬一申請不了,會出事,用malloc一定要測試函數(shù)返回值,
不然用空指針訪問內(nèi)存,程序會崩潰的,最好自己寫個內(nèi)存分配方案,分配固定的內(nèi)存給堆用,原子哥的方案比較好,不會有碎片,我因為用到系統(tǒng),
自帶內(nèi)存管理,就沒用,不過沒用過,一用一大堆錯誤,就先用數(shù)組代替了,等系統(tǒng)玩熟了,在換。。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表