<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > arm串口實(shí)現(xiàn) printf 和scanf函數(shù)

          arm串口實(shí)現(xiàn) printf 和scanf函數(shù)

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          問(wèn)題描述:arm串口實(shí)現(xiàn)scanf和printf函數(shù)實(shí)現(xiàn)輸入一串十進(jìn)制數(shù)字換成十六進(jìn)制輸出功能,但是我的板子測(cè)試就是出不來(lái),于是乎我要徹底搞定它,隨有紀(jì)。
          1.首先代碼分析:用sourceinsight建立一個(gè)工程:
          第一個(gè)文件Ctype.h,注意不會(huì)處理EOF,即end of file。其中的宏定義定義了_U _L_D_C_P_S_X_SP,分別代表的數(shù)字標(biāo)識(shí),這個(gè)數(shù)字標(biāo)識(shí)在Ctype.c中用到。extern unsigned char _ctype[]作用是把_ctype[]聲明為外部的全局變量,不但包含這個(gè)頭文件的多個(gè)文件可以使用,也避免了重復(fù)包含這個(gè)變量的作用。
          #define __ismask(x) (_ctype[(int)(unsigned char)(x)]) 作用是_ismask這個(gè)函數(shù)對(duì)輸入的參數(shù)進(jìn)行一個(gè)unsigned char轉(zhuǎn)化到int類型的。
          #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) 作用看名字應(yīng)該是判斷是是否是一個(gè)數(shù)字,不過(guò)我看了ascII表看了1 2 4 位發(fā)現(xiàn)沒(méi)什么特別。
          第二個(gè)文件Ctype.c,里面的_ctype里面存的全是八位的獨(dú)熱碼,一共256個(gè)
          第三個(gè)文件Div64.h,The semantics of do_div() are,意思是這個(gè)函數(shù)的語(yǔ)義是。
          #ifdef __ARMEB__
          #define __xh "r0"
          #define __xl "r1"
          #else
          #define __xl "r0"
          #define __xh "r1"
          #endif
          這段代碼的意思是如果定義了arm的endbig則用32位的r0寄存器保存x的高位,同樣的道理else應(yīng)該清楚了。
          再往下:#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endifnt"表示如果x y 不相等,則會(huì)執(zhí)行.err,而后結(jié)束這個(gè)if分支。
          直接看printf這個(gè)函數(shù)的實(shí)現(xiàn),其中參數(shù)列表中有省略號(hào),這是c語(yǔ)言中表示參數(shù)不確定的意思。


          關(guān)鍵詞: arm串口printfscanf函

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();