娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月18日(星期一)

正在發(fā)生

2019年11月18日 | STM32 數(shù)據(jù)類型定義

發(fā)布者:Xiaoxue666 來源: eefocus關(guān)鍵字:STM32  數(shù)據(jù)類型定義  Keil  MDK 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

在 Keil MDK 開發(fā)環(huán)境中,經(jīng)常會(huì)遇到類似于unsigned int 8、uint8_t 、u8等數(shù)據(jù)變量定義,對于初學(xué)者來講確實(shí)是有點(diǎn)痛苦,后來查詢發(fā)現(xiàn)以上三種方式均表示——無符號的8位整形數(shù)據(jù)。


由于C語言類型的長度完全由編譯器決定,char 通常被定義成 8 位寬;int 通常被定義成 16 位或 32 位寬(或更高),它取決于平臺(tái)(編譯器將在這兩者間選擇最合適的字寬);short 通常被定義成 16 位寬;long 通常被定義成 32 或 64位寬。

所以 C99 中引進(jìn)了一個(gè)標(biāo)準(zhǔn)C庫頭文件 stdint.h ,方便精確確定整數(shù)類型的寬度


定義標(biāo)準(zhǔn)的擴(kuò)展整數(shù)類型_stdint.h文件(部分)

/* Signed. */  

/* There is some amount of overlap with as known by inet code */  

#ifndef __int8_t_defined  

# define __int8_t_defined  

typedef signed char     int8_t;  //標(biāo)準(zhǔn)表達(dá)方式 signed char 被等同于 int8_t;

typedef short int       int16_t;  

typedef int         int32_t;  

# if __WORDSIZE == 64  

typedef long int        int64_t;  

# else  

__extension__  

typedef long long int       int64_t;  

# endif  

#endif  

/***************************************/ 

/* Unsigned. */  

typedef unsigned char       uint8_t;  

typedef unsigned short int uint16_t;  

#ifndef __uint32_t_defined  

typedef unsigned int        uint32_t;  

# define __uint32_t_defined  

#endif  

#if __WORDSIZE == 64  

typedef unsigned long int   uint64_t;  

#else  

__extension__  

typedef unsigned long long int uint64_t;  

#endif  

 /***************************************/ 

/* Small types. */   

/* Signed. */  

typedef signed char     int_least8_t;  

typedef short int       int_least16_t;  

typedef int         int_least32_t;  

#if __WORDSIZE == 64  

typedef long int        int_least64_t;  

#else  

__extension__  

typedef long long int       int_least64_t;  

#endif  

/***************************************/ 

/* Unsigned. */  

typedef unsigned char       uint_least8_t;  

typedef unsigned short int uint_least16_t;  

typedef unsigned int        uint_least32_t;  

#if __WORDSIZE == 64  

typedef unsigned long int   uint_least64_t;  

#else  

__extension__  

typedef unsigned long long int uint_least64_t;  

#endif  


/***************************************/   

/* Fast types. */  

/* Signed. */  

typedef signed char     int_fast8_t;  

#if __WORDSIZE == 64  

typedef long int        int_fast16_t;  

typedef long int        int_fast32_t;  

typedef long int        int_fast64_t;  

#else  

typedef int         int_fast16_t;  

typedef int         int_fast32_t;  

__extension__  

typedef long long int       int_fast64_t;  

#endif  

/***************************************/  

/* Unsigned. */  

typedef unsigned char       uint_fast8_t;  

#if __WORDSIZE == 64  

typedef unsigned long int   uint_fast16_t;  

typedef unsigned long int   uint_fast32_t;  

typedef unsigned long int   uint_fast64_t;  

#else  

typedef unsigned int        uint_fast16_t;  

typedef unsigned int        uint_fast32_t;  

__extension__  

typedef unsigned long long int uint_fast64_t;  

#endif  


/***************************************/  

/* Types for `void *' pointers. */  

#if __WORDSIZE == 64  

# ifndef __intptr_t_defined  

typedef long int        intptr_t;  

# define __intptr_t_defined  

# endif  

typedef unsigned long int   uintptr_t;  

#else  

# ifndef __intptr_t_defined  

typedef int         intptr_t;  

# define __intptr_t_defined  

# endif  

typedef unsigned int        uintptr_t;  

#endif  


/***************************************/   

/* Largest integral types. */  

#if __WORDSIZE == 64  

typedef long int        intmax_t;  

typedef unsigned long int   uintmax_t;  

#else  

__extension__  

typedef long long int       intmax_t;  

__extension__  

typedef unsigned long long int uintmax_t;  

#endif  


*_t結(jié)尾的類型,可以理解為type/typedef的縮寫,就是一個(gè)結(jié)構(gòu)標(biāo)注,表示是通過typedef定義的,而不是其它數(shù)據(jù)類型。(程序的可擴(kuò)展性)


無符號類型 可表示

unsigned char u8

unsigned short u16

unsigned int u32


這樣定義的好處在于使用時(shí)不會(huì)感覺太混亂,從而能有效的維護(hù)代碼。


類 型 說 明 typedef

準(zhǔn)確長度類型 intN_t(N為類型寬度)

最小長度類型 int_leastN_t

快速長度類型 int_fastN_t

指針長度類型 intptr_t

最大長度類型 intmax_t


類型說明 

int_least16_t : 指獲得一個(gè)當(dāng)前平臺(tái)所支持的至少有 16 位寬的最短整數(shù)類型。

int_fast32_t : 指獲得當(dāng)前平臺(tái)下需要處理速度最快的至少為 32 位的整數(shù)類型。

intmax_t : 指獲得當(dāng)前平臺(tái)所支持的最大寬度的整數(shù)類型。


intptr_t (無符號uintptr_t): 為安全跨平臺(tái)編程的保證,對于寫跨 64 位平臺(tái)的程序非常重要,是指針和整數(shù)之間的轉(zhuǎn)換經(jīng)常用到(多用于需要精確控制數(shù)據(jù)在內(nèi)存中的精確布局時(shí))。換句話說,當(dāng)需要把指針作為一個(gè)整數(shù)來運(yùn)算時(shí),轉(zhuǎn)換成intptr_t才是安全的,然后在運(yùn)算完畢后再安全的轉(zhuǎn)回指針類型。


無符號整形對應(yīng)的*_t類型 字 寬

uint8_t 1字節(jié)

uint16_t 2字節(jié)

uint32_t 4字節(jié)

uint64_t 16字節(jié)

int64_t uint64_t 大數(shù)輸出 格式

int64_t %lld

uint64_t %llu

uint64_t %llx(十六進(jìn)制

uint64_t %llo (八進(jìn)制)

volatile


作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。


俗稱禁止程序優(yōu)化,一般在進(jìn)行多線程程序設(shè)計(jì)時(shí)加,就是在有中斷的程序中常見,并且是中斷程序所用變量一般用這個(gè)加以修飾。


簡單的說,就是不讓編譯器進(jìn)行優(yōu)化,即每次讀取或者修改值的時(shí)候,都必須重新從內(nèi)存或者寄存器中讀取或者修改。


volatile一般用在以下三個(gè)方面:


中斷標(biāo)志位


多線程共享的變量


狀態(tài)寄存器


const


是一個(gè)C語言的關(guān)鍵字,它限定一個(gè)變量不允許被改變


只讀變量,即變量保存在只讀靜態(tài)存儲(chǔ)區(qū)。編譯時(shí),如何嘗試修改只讀變量,則編譯器提示出錯(cuò),就能防止誤修改。


const與define


兩者都可以用來定義常量,但是const定義時(shí),定義了常量的類型,所以更精確一些(其實(shí)const定義的是只讀變量,而不是常量)。

#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數(shù),有點(diǎn)類似內(nèi)置函數(shù)。

const和define定義的常量可以放在頭文件里面。(小注:可以多次聲明,但只能定義一次)

const與指針


int flag;   

const int * p1=&flag;       //p1可變,*p1不可變             const 修飾的是 *p1,即*p1不可變

int * const p2=&flag;       //p2不可變,*p2可變             const 修飾的是 p2,即p2不可變

const int *const p3=&flag;  //p3不可變,*p3也不可變          前一個(gè)const 修飾的是 *p3,后一個(gè)const 修飾的是p3,兩者都不可變

關(guān)鍵字:STM32  數(shù)據(jù)類型定義  Keil  MDK 引用地址:STM32 數(shù)據(jù)類型定義

上一篇:stm32f4xx 加密
下一篇:STM32中常用的數(shù)據(jù)類型

推薦閱讀

  近日,神州控股旗下科捷物流在北京發(fā)布了“人機(jī)共舞2.0”立體高密度機(jī)器人智能倉,該技術(shù)采用“貨到人”模式,將技術(shù)與現(xiàn)有物流業(yè)務(wù)流程充分融合,屬國內(nèi)首例。   神州控股科捷物流常務(wù)副總裁陳滔滔介紹,相較于業(yè)內(nèi)傳統(tǒng)地面機(jī)器人“貨到人”系統(tǒng),該機(jī)器人揀選系統(tǒng)運(yùn)用天地軌運(yùn)行自動(dòng)控制技術(shù),采取空中懸掛機(jī)器人模式,突破了傳統(tǒng)機(jī)器人僅能在...
功能如下:1、24VDC供電,輸入端可識(shí)別4-20mA信號輸入,可以根據(jù)用戶任意設(shè)定電流值,進(jìn)行繼電器報(bào)警輸出,輸出形式常開+常閉;2、用來實(shí)現(xiàn)高于某電流值繼電器斷開,當(dāng)?shù)陀谠O(shè)定電流值繼電器閉合,進(jìn)而導(dǎo)通回路。//#include<reg52.h>#include<STC12C2052AD.h> //庫文件#include<intrins.h>#define uchar unsigned char //宏定...
在保護(hù)人員、抗噪以及處理子系統(tǒng)之間的接地電位差等領(lǐng)域中,我們都需要一個(gè)“它”。你可以在以下應(yīng)用中對“它”進(jìn)行設(shè)計(jì),如電機(jī)驅(qū)動(dòng)器、太陽能逆變器、DC充電(樁)站、工業(yè)機(jī)器人、不間斷電源、牽引逆變器、車載充電器和 DC/DC轉(zhuǎn)換器。 我說的“它”指的就是電流隔離。 包括我上述提及的系統(tǒng)在內(nèi),許多系統(tǒng)需要通過隔離勢壘將電流和電壓信息從一個(gè)電源域...
隨著未來軟件將越來越多地決定車輛的特性,大眾汽車(Volkswagen)將開發(fā)下一代軟件控制的底盤,并計(jì)劃在未來使用新的線控轉(zhuǎn)向系統(tǒng)。(圖片來源:大眾)上述計(jì)劃也是大眾“加速(Accelerate)”戰(zhàn)略的一部分,以轉(zhuǎn)型為以軟件為導(dǎo)向的移動(dòng)出行服務(wù)供應(yīng)商。數(shù)字化不僅限于底盤和轉(zhuǎn)向系統(tǒng)等經(jīng)典機(jī)械車輛部件。雖然軟件控制的控制系統(tǒng)已被整合到這些組件的早期...

史海拾趣

問答坊 | AI 解惑

創(chuàng)業(yè)的七大必備條件--你具備了么

對于投身商海的人來說,創(chuàng)業(yè)是一個(gè)夢想。但創(chuàng)業(yè)又談何容易?有關(guān)專家總結(jié)出創(chuàng)業(yè)的七大必備條件,可以與讀者分享:   1、充分的資源(Resources),包括人力和財(cái)力,創(chuàng)業(yè)者要具備充足的經(jīng)驗(yàn)、學(xué)歷、流動(dòng)資金、時(shí)間、精神和毅力;   2、可行 ...…

查看全部問答∨

學(xué)Verilog的進(jìn)來看看

小弟剛開始學(xué)Verilog,希望各位大蝦多多指點(diǎn),有好的資料一起分享哦…

查看全部問答∨

無線移動(dòng)式多參數(shù)生理監(jiān)護(hù)儀的硬件結(jié)構(gòu)設(shè)計(jì)

摘 要]本文介紹的無線移動(dòng)式多參數(shù)生理監(jiān)護(hù)儀具有體積小、功耗低和硬件開銷少等明顯的優(yōu)勢。它能同時(shí)監(jiān)護(hù)多個(gè)床位病人的心電、呼吸、體溫等重要生理參數(shù),并對多種心律失常進(jìn)行報(bào)警提示。本文系統(tǒng)介紹了無線移動(dòng)式多參數(shù)生理 監(jiān)護(hù)儀的硬件基本結(jié)構(gòu) ...…

查看全部問答∨

2440+7113,攝像頭問題

我用2440+7113,ce系統(tǒng),本來7113的iic讀寫地址應(yīng)該是4a/4b,但我用這兩個(gè)端口操作7113失敗,7113的手冊上說如果RTS0用3.3k電阻接地,則地址就變成48/49,我修改我的程序讀寫48/49后,結(jié)果是得到的圖像很不穩(wěn)定,有時(shí)能得到有時(shí)得不到,得到的圖像 ...…

查看全部問答∨

easyarm9862以太網(wǎng)口實(shí)驗(yàn)的問題

我打算用easyarm8962這個(gè)單片機(jī)做一個(gè)簡單的實(shí)驗(yàn)。沒有操作系統(tǒng),就是想通過網(wǎng)線連接電腦網(wǎng)卡和arm板的以太網(wǎng)口,實(shí)現(xiàn)通訊。有一個(gè)設(shè)備驅(qū)動(dòng)庫Stellaris,這里面封裝好了很多函數(shù)。比如EthernetPacketPut(ETH_BASE, pucMyTxPacket, ulMyTxPacketLen ...…

查看全部問答∨

虛心求教王愛英的《計(jì)算機(jī)組成與結(jié)構(gòu)》中的問題

王愛英的《計(jì)算機(jī)組成與結(jié)構(gòu)》第二章習(xí)題第二題: 全加器可由異或門及進(jìn)位邏輯電路組成,根據(jù)A異或B=否A異或否B,于是可以設(shè)計(jì)利用原變量或反變量進(jìn)行運(yùn)算的加法器,進(jìn)而可以推測,對已設(shè)計(jì)好的加法器,用原變量運(yùn)算和反變量運(yùn)算都是一樣的。 ...…

查看全部問答∨

使用RTC(STM32)制作萬年歷

1.上電后初始化系統(tǒng)時(shí)鐘 2.配置RTC   2.1 使能PWR和BKP模塊的時(shí)鐘   2.2使能對備份區(qū)域的訪問 3.檢查預(yù)定義的標(biāo)記判斷RTC是否曾經(jīng)設(shè)置過   3.1 預(yù)定義的標(biāo)記設(shè)置在備份區(qū)域的備份寄存器,不受系統(tǒng)掉電的影 ...…

查看全部問答∨

quartusII 中定制fifo如何使用

         quartusII 中定制fifo如何使用,第一次使用,不知道full,almost_full,empty,empty_full,prog_full,prog_empty如何控制   及它們有效時(shí)的電平,請高手賜教,謝謝啦…

查看全部問答∨

ARM-Linux驅(qū)動(dòng)--DM9000網(wǎng)卡驅(qū)動(dòng)分析(三)

ARM-Linux驅(qū)動(dòng)--DM9000網(wǎng)卡驅(qū)動(dòng)分析(三) 硬件平臺(tái):FL2440(s3c2440) 內(nèi)核版本:2.6.35 主機(jī)平臺(tái):Ubuntu11.04 內(nèi)核版本:2.6.39 交叉編譯器:arm-linuc-gcc4.3.2 原創(chuàng)作品,轉(zhuǎn)載請標(biāo)明出處http://blog.csdn.net/yming0221/article/deta ...…

查看全部問答∨

大家一起學(xué)習(xí)PIC單片機(jī)之四(獨(dú)立鍵盤控制繼電器開關(guān))

大家好,本人是PIC單片機(jī)新手,但是我很勤奮,我買的ND118-877APIC實(shí)驗(yàn)開發(fā)板,里面有實(shí)例,但是沒有源代碼,本人自己寫代碼大家一起交流,希望能陸續(xù)寫下去,本人QQ476857290 希望大家學(xué)習(xí)指導(dǎo)?!?

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 财经| 韶关市| 阜新市| 松溪县| 汉阴县| 常宁市| 舞钢市| 通州市| 内乡县| 喜德县| 乌审旗| 长垣县| 阳西县| 前郭尔| 宁都县| 资阳市| 锡林郭勒盟| 时尚| 军事| 甘泉县| 乡城县| 师宗县| 永顺县| 甘孜县| 房产| 师宗县| 新密市| 进贤县| 大石桥市| 侯马市| 独山县| 茌平县| 读书| 巨野县| 元江| 工布江达县| 遂宁市| 溧水县| 白玉县| 商南县| 股票|