找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9008|回復: 0
收起左側

error: __use_no_semihosting_swi was requested, but _sys_open was referenced

[復制鏈接]
ID:102668 發(fā)表于 2016-1-11 05:01 | 顯示全部樓層 |閱讀模式
                        想使用malloc()函數但會報錯

錯誤信息如下:
.\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
這個就是設置堆的大小,不過后來沒用malloc,這個函數用多了,就會有太多碎片,萬一申請不了,會出事,用malloc一定要測試函數返回值,
不然用空指針訪問內存,程序會崩潰的,最好自己寫個內存分配方案,分配固定的內存給堆用,原子哥的方案比較好,不會有碎片,我因為用到系統(tǒng),
自帶內存管理,就沒用,不過沒用過,一用一大堆錯誤,就先用數組代替了,等系統(tǒng)玩熟了,在換。。


回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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