1.位操作
(1)位設(shè)值
?清零:GPIOA->BSRRL &=0XFF0F; //將第 4-7 位清 0
?設(shè)值:GPIOA->BSRRL |=0X0040;//設(shè)置相應(yīng)位的值,不改變其他位的值
(2)移位提高代碼的可讀性
將 ODR 寄存器的第 pinpos 位設(shè)置為 1
?GPIOx->ODR = (((uint32_t)0x01)<< pinpos);
(3)~取反操作使用技巧
設(shè)置某一位的值為 0,同時 其他位都保留為 1。
??TIMx->SR = (uint16_t)~TIM_FLAG;
2.define 宏定義
define 是 C 語言中的預(yù)處理命令,它用于宏定義,可以提高源代碼的可讀性,為編程提供 方便。常見的格式:
#define 標(biāo)識符 字符串
定義標(biāo)識符 PLL_M 的值為 8。
#define PLL_M 8
3.ifdef 條件編譯
單片機(jī)程序開發(fā)過程中,經(jīng)常會遇到一種情況,當(dāng)滿足某條件時對一組語句進(jìn)行編譯,而 當(dāng)條件不滿足時則編譯另一組語句。條件編譯命令最常見的形式為:
#ifdef?????????標(biāo)識符
程序段 1
#else
程序段 2
#endif
它的作用是:當(dāng)標(biāo)識符已經(jīng)被定義過(一般是用#define 命令定義),則對程序段 1 進(jìn)行編譯, 否則編譯程序段 2。 其中#else 部分也可以沒有,即:
4.extern 變量申明
C 語言中 extern 可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編 譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。
extern? u16? USART_RX_STA;
這個語句是申明 USART_RX_STA 變量在其他文件中已經(jīng)定義了,在這里要使用到。所以,你肯定 可以找到在某個地方有變量定義的語句:
u16? USART_RX_STA;
我們希望在main.c的 changeId(void)函數(shù)中使用變量id,這個時候我們就需要在main.c 里面去申明變量 id 是外部定義的了,因為如果不申明,變量 id 的作用域是到不了 main.c 文件 中。
5.typedef 類型別名
typedef 用于為現(xiàn)有類型創(chuàng)建一個新的名字,或稱為類型別名,用來簡化變量的定義。 typedef 在 MDK 用得最多的就是定義結(jié)構(gòu)體的類型別名和枚舉類型了。
typedef struct?
{
__IO uint32_t MODER;
__IO uint32_t OTYPER;
? ......
}GPIO_TypeDef;
Typedef 為結(jié)構(gòu)體定義一個別名 GPIO_TypeDef,這樣我們可以通過 GPIO_TypeDef 來定義結(jié)構(gòu)體 變量:
GPIO_TypeDef _GPIOA,_GPIOB;
6. 結(jié)構(gòu)體
(1)結(jié)構(gòu)體定義
??結(jié)構(gòu)體就是將多個變量組合為一個有機(jī)的整體。
typedef? struct
{
uint32_t USART_BaudRate;
uint16_t USART_WordLength;
? 。。。
}USART_InitTypeDef;
(2)結(jié)構(gòu)體使用
我們在初始化串口的時候入口參數(shù)就可以是 USART_InitTypeDef 類型的變量或者指針變 量了,MDK 中是這樣做的:
?void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
使用結(jié)構(gòu)體組合參數(shù),可以提高代碼的可讀性,不會覺得變量定義混亂。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前名稱:嵌入式C語言基礎(chǔ)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article36/csgpsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站策劃、Google、App開發(fā)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容