成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

STC-同時(shí)外掛擴(kuò)展RAM和12864時(shí),C庫(kù)函數(shù)失效的問(wèn)題-創(chuàng)新互聯(lián)

文章目錄
    • STC - 同時(shí)外掛擴(kuò)展RAM和12864時(shí), C庫(kù)函數(shù)失效的問(wèn)題
    • 概述
    • 筆記
    • 原理圖 - 外掛XRAM
    • 原理圖 - 12864
    • 錯(cuò)誤現(xiàn)象
    • 總結(jié)
    • END

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,公司以網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、系統(tǒng)開(kāi)發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶成百上千家,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開(kāi)發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。STC - 同時(shí)外掛擴(kuò)展RAM和12864時(shí), C庫(kù)函數(shù)失效的問(wèn)題 概述

在寫STC15實(shí)驗(yàn)箱4的出廠測(cè)試程序.
發(fā)現(xiàn)memset(buf, 0, 256)一片256字節(jié)的xdata內(nèi)存時(shí), 無(wú)法將這片內(nèi)存全部清0, 只清了不到0x20個(gè)字節(jié).
其他標(biāo)準(zhǔn)C庫(kù)函數(shù)e.g. sprintf, strlen 也不好使. 這咋玩啊?

后來(lái)通過(guò)換件法得知, 是外掛的32KXRAM和外掛的ST7920-12864都在使用P0和P2口引起的問(wèn)題.
STC官方整出這樣的原理圖, 真是敗筆.
怪不得我買的其他STC官方板子, 都沒(méi)有焊接外掛RAM的芯片…

嘗試分析和折中解決這個(gè)問(wèn)題.

筆記

看看官方原理圖關(guān)于外掛XRAM和ST7920-12864這塊.

原理圖 - 外掛XRAM

在這里插入圖片描述
XRAM用到了P0, P2, P4.2, P4.4, P4.5,

原理圖 - 12864

在這里插入圖片描述
可以看到按照官方原有連接, 用到了P0, P2
如果是并口通訊, 就用到P0, P2
如果是串行通訊, 就用到P2

那理論上, 訪問(wèn)xdata時(shí), 就會(huì)動(dòng)到P0, P2.
那保不準(zhǔn)12864的上的P0, P2就會(huì)不是高阻狀態(tài), 如果12864給了P0, P2新的值, 就會(huì)對(duì)xdata的訪問(wèn)造成錯(cuò)誤.

錯(cuò)誤現(xiàn)象

初始化外部RAM時(shí), 開(kāi)始用了 ExternalRAM_enable();
只使用外部RAM, 內(nèi)部擴(kuò)展RAM范圍(0 ~ 0x6ff)不用.
當(dāng)初始化buf時(shí), 從memset可以看到, 只清了不到0x20個(gè)字節(jié).

#define TMP_BUFFER_LEN 256
// ...
u8 xdata g_tmp_buf[TMP_BUFFER_LEN];
// ...
	BUS_SPEED_1T();	//1T  2T  4T  8T	3V@22MHZ用1T會(huì)訪問(wèn)錯(cuò)誤
	
	ExternalRAM_enable(); // 只使用外部RAM, 不使用內(nèi)部擴(kuò)展RAM(0x0 ~ 0x6ff)
	
	EA = 1;
	
	my_memset(g_tmp_buf, 0, sizeof(g_tmp_buf));

在這里插入圖片描述
現(xiàn)在只允許了外部RAM操作, 還沒(méi)執(zhí)行memest
將g_tmp_buf放到memory窗口中, 查看到的內(nèi)容是隨機(jī)的亂碼.

單步進(jìn)入my_memset, 觀察清buf前后, g_tmp_buf在memory窗口中的內(nèi)容差別.
在這里插入圖片描述
步過(guò)C庫(kù)函數(shù) memset, 本來(lái)要清0x100個(gè)字節(jié), 但是只清了不到0x20個(gè)字節(jié).
將LCD-12864硬件摘掉, 再執(zhí)行這個(gè)測(cè)試, 可以看到清掉了0x100個(gè)字節(jié), memset是正常的.
這說(shuō)明, 12864連接到P0, P2口時(shí), 對(duì)xdata的訪問(wèn)是有影響的.

STC的資料上有說(shuō)到, 如果使能內(nèi)部擴(kuò)展RAM:
當(dāng)xdata地址小于0x6ff, 會(huì)使用內(nèi)部擴(kuò)展RAM.
當(dāng)xdata地址大于0x6ff時(shí), 會(huì)自動(dòng)使用片外口擴(kuò)展RAM.

嘗試使能片內(nèi)擴(kuò)展RAM, 再試試memset操作.
在這里插入圖片描述
可以看到, 是可以正常清掉xdata中定義的buf.

總結(jié)

如果外掛的12864和外擴(kuò)的XRAM都使用P0, P2, 那一定是有沖突的.
如果是自己畫的新板子, 可以考慮將12864用串行通訊, 將串口通訊用到的幾個(gè)引腳用閑散的GPIO來(lái)代替, 然后使用SPI的方式來(lái)通訊.

如果是使用已有的板子(e.g. 買的或自己做的STC15實(shí)驗(yàn)箱4), 硬件沒(méi)辦法改. 此時(shí)只能是嘗試使能內(nèi)部擴(kuò)展RAM.
當(dāng)然, 如果xdata的地址超過(guò)0x6ff時(shí), 還是會(huì)引起xdata操作失敗.
如果非要使用32KB的外掛XRAM, 必須要摘掉12864.
如果非要使用12864, 那么XRAM就只能使用內(nèi)部的擴(kuò)展XRAM地址范圍(0x0~0x6ff), 外部掛的32KBXRAM就沒(méi)法用了.
因?yàn)镾TC使能內(nèi)部擴(kuò)展RAM后, 如果地址超出0x6ff, 就會(huì)自動(dòng)使用外接的32KB的XRAM, 所以不需要特意執(zhí)行ExternalRAM_enable().
ExternalRAM_enable()這個(gè)函數(shù)就是廢的, 沒(méi)有需求調(diào)用這個(gè)函數(shù).

END

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:STC-同時(shí)外掛擴(kuò)展RAM和12864時(shí),C庫(kù)函數(shù)失效的問(wèn)題-創(chuàng)新互聯(lián)
瀏覽地址:http://jinyejixie.com/article2/dpcpic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站內(nèi)鏈App開(kāi)發(fā)、ChatGPT、企業(yè)建站營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
旅游| 潮州市| 米林县| 响水县| 鹤岗市| 略阳县| 临湘市| 千阳县| 武隆县| 济南市| 固阳县| 西安市| 汤阴县| 西宁市| 天水市| 基隆市| 尤溪县| 武功县| 丰县| 丽江市| 土默特左旗| 嘉荫县| 桑日县| 抚宁县| 孙吴县| 蕉岭县| 新丰县| 谢通门县| 张家港市| 辽阳县| 洞头县| 沁源县| 交城县| 拉孜县| 合山市| 平顶山市| 永胜县| 衡山县| 安达市| 承德市| 巴青县|