久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5498|回復(fù): 2
收起左側(cè)

keil4調(diào)試時UART#1頁面無顯示

[復(fù)制鏈接]
ID:632608 發(fā)表于 2019-10-30 12:26 來自觸屏版 | 顯示全部樓層 |閱讀模式
求助啊
Screenshot_2019-10-30-12-25-53-960_com.tencent.mobileqq.png
回復(fù)

使用道具 舉報

ID:606366 發(fā)表于 2019-10-30 16:05 | 顯示全部樓層
親,首先檢查一下RX與TX是不是交叉相連,如果不是請把代碼先發(fā)出來,看一下有沒有寫錯,最后,搜索半主機(jī)調(diào)試。
半主機(jī)是這么一種機(jī)制,它使得在ARM目標(biāo)上跑的代碼,如果主機(jī)電腦運行了調(diào)試器,那么該代碼可以使用該主機(jī)電腦的輸入輸出設(shè)備。 
  這點非常重要,因為開發(fā)初期,可能開發(fā)者根本不知道該 ARM 器件上有什么輸入輸出設(shè)備,而半主基機(jī)制使得你不用知道ARM器件的外設(shè),利用主機(jī)電腦的外設(shè)就可以實現(xiàn)輸入輸出調(diào)試。 
  所以要利用目標(biāo) ARM器件的輸入輸出設(shè)備,首先要關(guān)掉半主機(jī)機(jī)制。然后再將輸入輸出重定向到 ARM 器件上,如 printf 和 scanf,你需要重寫 fputc和 fgetc 函數(shù)。下面就是將 scanf 和 printf 重定向到 uart 的代碼。 
 

int fputc(int ch, FILE *f)  

    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
    { 
    } 
    USART_SendData(USART1, (uint8_t) ch); 
    return ch; 


int fgetc(FILE *f)  

    int ch; 
    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) 
    { 
    } 
    ch = USART_ReceiveData(USART1); 
     
    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
    { 
    } 
    USART_SendData(USART1, (uint8_t) ch); 
    return ch; 
}
printf() 之類的函數(shù),使用了半主機(jī)模式。使用標(biāo)準(zhǔn)庫會導(dǎo)致程序無法運行 ,以下是解決方法 :
方法 1.使用微庫 ,因為使用微庫的話 ,不會使用半主機(jī)模式 .
如果使用的是 MDK,請在工程屬性的 “Target “- 》”Code Generation “中勾選 ”Use MicroLIB “這樣以后就可以
使用 printf ,sprintf 函數(shù)了
方法 2.仍然使用標(biāo)準(zhǔn)庫 ,在主程序添加下面代碼 :
/*為確保沒有從 C 庫鏈接使用半主機(jī)的函數(shù),因為不使用半主機(jī),標(biāo)準(zhǔn) C 庫 stdio.h 中有些使用半主機(jī)的
函數(shù)要重新寫 ,您必須為這些函數(shù)提供自己的實現(xiàn) */

#pragma import(__use_no_semihosting)  // 確保沒有從 C 庫鏈接使用半主機(jī)的函數(shù)
_sys_exit(int  x) //定義 _sys_exit() 以避免使用半主機(jī)模式
{
x = x;
}
struct __FILE  // 標(biāo)準(zhǔn)庫需要的支持函數(shù)
{
int handle;
};
/* FILE is typedef ’ d in stdio.h. */
FILE __stdout;

在獨立應(yīng)用程序中,您不太可能支持半主機(jī)操作。 因此,必須確保您的應(yīng)用程序中沒有鏈接 C 庫半主機(jī)函數(shù)。
為確保沒有從 C 庫鏈接使用半主機(jī)的函數(shù), 必須導(dǎo)入符號 __use_no_semihosting 。可在您工程的任何 C 或匯編語言源文件中執(zhí)行此操作,如下所示:
在 C 模塊中,使用 #pragma 指令:
#pragma import(__use_no_semihosting)
在匯編語言模塊中,使用 IMPORT 指令:
IMPORT __use_no_semihosting
如果仍然鏈接了使用半主機(jī)的函數(shù),則鏈接器會報告錯誤。
————————————————
版權(quán)聲明:本文為CSDN博主「Robben.Han」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hxlawf/article/details/89491088
回復(fù)

使用道具 舉報

ID:71883 發(fā)表于 2019-10-30 16:10 | 顯示全部樓層
我的根本不能進(jìn)入調(diào)試界面
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 丝袜 亚洲 欧美 日韩 综合 | 国产精品久久 | av大片在线观看 | 国产日韩精品一区二区三区 | 一区二区精品 | 国产精品久久久久久久久久久久午夜片 | 精品一区二区三区四区 | 亚洲精品久久久久avwww潮水 | 亚洲视频在线观看一区二区三区 | 久婷婷| 一级做a| 欧美精品在线观看 | 欧美精品一区二区三区视频 | 日韩欧美操| 不卡在线一区 | 亚洲视频在线播放 | 91国产精品 | 中文字幕一区二区三区乱码在线 | 免费一级黄| 麻豆久久久久久 | 一区二区三区在线播放 | 免费久久精品 | 中国av在线免费观看 | 91视频a| 中国91av | 日韩欧美一区二区三区四区 | 久久久激情 | 亚洲欧美日韩电影 | 久操亚洲 | 中文字幕一区在线 | 福利视频网站 | 日本成人毛片 | 狠狠插狠狠操 | 国产午夜影院 | 欧美久久综合 | 久操亚洲 | 久久精品小短片 | 中文字幕视频免费 | 色必久久| 6080亚洲精品一区二区 | 日本黄色片免费在线观看 |