版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM微控制器與嵌入式系統(tǒng)
6C語(yǔ)言基礎(chǔ)復(fù)習(xí)主講人:景妮琴北京電子科技職業(yè)學(xué)院C語(yǔ)言基礎(chǔ)復(fù)習(xí)位操作define宏定義ifdef條件編譯extern變量申明typedef變量別名結(jié)構(gòu)體符號(hào)
描述
運(yùn)算規(guī)則&
按位與兩個(gè)位都為1時(shí),結(jié)果才為1|
按位或
兩個(gè)位都為0時(shí),結(jié)果才為0^
按位異或兩個(gè)位相同為0,相異為1~
取反0變1,1變0<<
左移各二進(jìn)位全部左移若干位,高位丟棄,低位補(bǔ)0>>
右移各二進(jìn)位全部右移若干位,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0位操作位操作:就是對(duì)類型變量可以在位級(jí)別進(jìn)行操作C語(yǔ)言支持下面6種位操作:位操作1.不改變其他位的情況下,對(duì)某幾位進(jìn)行設(shè)值方法:對(duì)需要設(shè)置的位用“&”操作符進(jìn)行清零操作,然后用“|”操作符設(shè)值。例:要改變GPIOA->BSRRL的狀態(tài),可以先對(duì)寄存器的值進(jìn)行“&”清零操作,然后進(jìn)行“|”或運(yùn)算。GPIOA->BSRRL&=0xFF0F;//這是將第4-7位清0GPIOA->BSRRL|=0x0040;//設(shè)置相應(yīng)位的值,不改變其他位的值位操作2.移位操作提高代碼的可讀性GPIOx->ODR=(((uint32_t)0x01)<<pinpos);這個(gè)操作就是將ODR寄存器的第pinpos位設(shè)置為1使用左移比設(shè)定一個(gè)固定的值要好看,并且重用性高。如:GPIOx->ODR=(((uint32_t)0x03)<<4);GPIOx->ODR=0x0030;這兩個(gè)代碼當(dāng)然是前一句的重用性高一些。位操作3.取反操作技巧取反操作經(jīng)常與“&”操作一起使用,把變量的某位清零如:GPIOx->ODR&=~(((uint32_t)0x01)<<4);這個(gè)代碼就是把bit4位清零10011111000000010000010011111011位操作4.位操作實(shí)例
(1)把變量的某位清零:此處我們以變量a代表寄存器,并假設(shè)寄存器中本來(lái)已有數(shù)值,此時(shí)我們需要把變量a的某一位清零,且其它位不變。如下代碼清單:1//定義一個(gè)變量a=10011111b(二進(jìn)制數(shù))2unsignedchara=0x9f;3//對(duì)bit2清零4a&=~(1<<2);
5//括號(hào)中的1左移兩位,(1<<2)得二進(jìn)制數(shù):00000100b6//按位取反,~(1<<2)得11111011b7//假如a中原來(lái)的值為二進(jìn)制數(shù):a=10011111b8//所得的數(shù)與a作”位與&”運(yùn)算,a=(10011111b)&(11111011b),9//經(jīng)過(guò)運(yùn)算后,a的值a=10011011b&10//a的bit2位被被零,而其它位不變。10011011
100000110000000100000100100000110000010010000111位操作4.位操作實(shí)例(2)對(duì)變量的某位進(jìn)行賦值寄存器位通過(guò)“|=”可以對(duì)某位進(jìn)行賦值。1//a=10000011b2a|=(1<<2);3//a=10000111b位操作4.位操作實(shí)例(3)對(duì)變量的某位取反我們需要對(duì)寄存器的某個(gè)位進(jìn)行取反操作,即1變0,0變1,這可以直接用如下操作,其它位不變,見(jiàn)代碼清單。1//a=10010011b2//把bit6取反,其它位不變34a^=(1<<6);5//a=11010011bdefine宏定義define是C語(yǔ)言中的預(yù)處理命令,用于宏定義,可以提高源代碼的可讀性,方便編程。常見(jiàn)的格式:#define標(biāo)識(shí)符字符串其中“標(biāo)識(shí)符”是指:宏定義的宏名“字符串”可以是常數(shù)、表達(dá)式、格式串等例:#definePLL_M8定義PLL_M的值為8ifdef條件編譯單片機(jī)程序開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到一些情況:當(dāng)滿足某條件時(shí)對(duì)一組語(yǔ)句進(jìn)行編譯,而當(dāng)條件不滿足時(shí)則編譯另一組語(yǔ)句。條件編譯命令的常見(jiàn)形式:#ifdef標(biāo)識(shí)符程序段1#else程序段2#endif作用:當(dāng)標(biāo)識(shí)符已經(jīng)被定義過(guò)(一般使用#define命令定義),則對(duì)程序段1進(jìn)行編譯,否則編譯程序段2。extern變量聲明C語(yǔ)言中extern可以置于變量或函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。注意,對(duì)于extern聲明變量可以多次,但定義只有一次。例:如果看到externu16USART_RX_STA,那么一定就有一個(gè)地方定義了u16USART_RX_STA還要注意:extern只能引用,不能賦值。typedef類型別名typedef用于為現(xiàn)有類型創(chuàng)建一個(gè)新的名字,或稱為類型別名,用來(lái)簡(jiǎn)化變量的定義。typedefstruct{uint32_tGPIO_Pin;GPIOMode_TypeDefGPIO_ModeGPIOSpeed_TypeDefGPIO_SpeedGPIOOType_TypeDefGPIO_OType;GPIOPuPd_TypeDefGPIO_PuPd}GPIO_InitTypeDef;這個(gè)意思就是為結(jié)構(gòu)體定義了一個(gè)類型別名GPIO_InitTypeDef這樣就可以通過(guò)這個(gè)類型定義變量了:GPIO_InitTypeDefmy_GPIO;結(jié)構(gòu)體聲明結(jié)構(gòu)體類型:Struct結(jié)構(gòu)體名{成員列表;}變量名列表;StructU_T
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:教育現(xiàn)代化視域下我國(guó)學(xué)校體育數(shù)字化評(píng)估監(jiān)測(cè)體系構(gòu)建研究
- 2025版放射性物質(zhì)運(yùn)輸安全責(zé)任書(shū)3篇
- 《鄉(xiāng)村廁所建設(shè)技術(shù)標(biāo)準(zhǔn)》
- 二零二五年快遞行業(yè)包裝回收利用合同范本3篇
- 2025版教育培訓(xùn)外協(xié)合同協(xié)議書(shū)3篇
- 二零二五不銹鋼罐體生產(chǎn)質(zhì)量管理體系認(rèn)證合同3篇
- 2024版汽車(chē)修理工勞動(dòng)合同模板格式
- 2025年度特色民宿租賃運(yùn)營(yíng)管理合同3篇
- 2025年度個(gè)人收入證明專業(yè)審核與制作合同3篇
- 二零二五年度醫(yī)院門(mén)衛(wèi)醫(yī)療服務(wù)合同
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 人教版初中語(yǔ)文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩(shī)詞名篇名句默寫(xiě)
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 2024光伏發(fā)電工程交流匯流箱技術(shù)規(guī)范
- 旅游活動(dòng)碳排放管理評(píng)價(jià)指標(biāo)體系構(gòu)建及實(shí)證研究
- 2022年全國(guó)職業(yè)院校技能大賽-電氣安裝與維修賽項(xiàng)規(guī)程
- 小學(xué)德育養(yǎng)成教育工作分層實(shí)施方案
評(píng)論
0/150
提交評(píng)論