![KEILMDK和STM32的數(shù)據(jù)類型之入門篇_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/27/82e8f85c-46a3-40a9-8cdb-db579793eb97/82e8f85c-46a3-40a9-8cdb-db579793eb971.gif)
![KEILMDK和STM32的數(shù)據(jù)類型之入門篇_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/27/82e8f85c-46a3-40a9-8cdb-db579793eb97/82e8f85c-46a3-40a9-8cdb-db579793eb972.gif)
![KEILMDK和STM32的數(shù)據(jù)類型之入門篇_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/27/82e8f85c-46a3-40a9-8cdb-db579793eb97/82e8f85c-46a3-40a9-8cdb-db579793eb973.gif)
![KEILMDK和STM32的數(shù)據(jù)類型之入門篇_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/27/82e8f85c-46a3-40a9-8cdb-db579793eb97/82e8f85c-46a3-40a9-8cdb-db579793eb974.gif)
![KEILMDK和STM32的數(shù)據(jù)類型之入門篇_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/27/82e8f85c-46a3-40a9-8cdb-db579793eb97/82e8f85c-46a3-40a9-8cdb-db579793eb975.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、stm32 數(shù)據(jù)類型入門篇keil mdk和 stm32 的數(shù)據(jù)類型之入門篇編程過(guò)程中,不同的mcu 或編不譯器,其數(shù)據(jù)類型的意義各不相同,所以一定要注意相應(yīng)變量數(shù)據(jù)類型的定義和轉(zhuǎn)換,否則在程序編譯時(shí)候會(huì)出錯(cuò)。在 keli mdk數(shù)據(jù)類型中進(jìn)了如下定義char 占用 1 個(gè)字節(jié)short int占用 2 字節(jié)int占用 4 字節(jié)long 占用 4 字節(jié)long int占用 4 字節(jié)float占用 4 字節(jié)double 占用 8 字節(jié)即有如下宏定義typedef unsigned char uint8; / 無(wú)符號(hào) 8 位字符型變量typedef signed char int8; / 有符號(hào)
2、8 位字符型變量typedef unsigned short uint16; / 無(wú)符號(hào) 16 位短整型變量typedef signed short int16; / 有符號(hào) 16 位短整型變量typedef unsigned int uint32; / 無(wú)符號(hào) 32 位整型變量typedef signed int int32; / 有符號(hào) 32 位整型變量typedef float fp32; / 單精度浮點(diǎn)數(shù)( 32 位長(zhǎng)度)typedef double fp64; / 雙精度浮點(diǎn)數(shù)( 64 位長(zhǎng)度)注: c語(yǔ)言中的種類數(shù)據(jù):整型:int short long 實(shí)型: float, dou
3、ble 。其中, unsigned 為無(wú)符號(hào), signed 有符號(hào)。stm32 數(shù)據(jù)類型入門篇 stm32的數(shù)據(jù)類型的宏定義stm32 采用了大量的固件庫(kù),其中在2.0 庫(kù)中有 24 個(gè)數(shù)據(jù)類型如下typedef unsigned char u8;/*無(wú)符號(hào) 8 位變量 */0255一字節(jié)typedef signed char s8;/*有符號(hào) 8 位變量 */-128127typedef volatile unsigned char vu8;/* 易變的 8 位無(wú)符號(hào)變量 */typedef volatile signed char vs8;/* 易變的 8 位有符號(hào)變量 */typede
4、f unsigned char const uc8; /* 只讀的 8 位無(wú)符號(hào)變量 */typedef signed char const sc8; /* 只讀的 8 位有符號(hào)變量 */typedef volatile unsigned char const vuc8; /* 易變只讀的8 位無(wú)符變量 */typedef volatile signed char const vsc8; /* 易變只讀8 位有符號(hào)變量 */typedef unsigned short u16; /*16位短整型無(wú)符號(hào)變量*/065535兩字節(jié)typedef signed short s16; /*16位短整型
5、有符號(hào)變量*/-3276832767兩字節(jié)typedef volatile unsigned short vu16;typedef volatile signed short vs16; typedef unsigned short const uc16; /* read only */typedef signed short const sc16; /* read only */typedef signed short const sc16; /* read only */typedef volatile unsigned short const vuc16; /* read only */
6、 typedef volatile signed short const vsc16; /* read only */ typedef unsigned long u32; /*32位長(zhǎng)整型無(wú)符號(hào)變量*/0(232-1)四字節(jié)typedef signed long s32; /*(-232)/2 (-232)/2-1四字節(jié)typedef volatile unsigned long vu32; typedef volatile signed long vs32; typedef unsigned long const uc32; /* read only */typedef signed lo
7、ng const sc32; /* read only */typedef volatile unsigned long const vuc32; /* read only */typedef volatile signed long const vsc32; /* read only */ 對(duì)部分?jǐn)?shù)據(jù)類型后面作了注釋,其它類型類推。對(duì)于float int編譯器中不能看到其定義(估計(jì)已編譯了)。stm32 數(shù)據(jù)類型入門篇 不同類型數(shù)據(jù)的混合運(yùn)算在c語(yǔ)言中,不同類型的數(shù)據(jù)間是可以混合運(yùn)算的。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則如下:注意:箭頭的方向只表示數(shù)據(jù)類
8、型級(jí)別的高低,由低向高轉(zhuǎn)換,這個(gè)轉(zhuǎn)換過(guò)程是一步到位的。 數(shù)據(jù)類型轉(zhuǎn)換規(guī)則各類數(shù)據(jù)類型的轉(zhuǎn)換,分為兩種方式:隱式(編譯軟件自動(dòng)完成),顯式(程序強(qiáng)制轉(zhuǎn)換) 隱式轉(zhuǎn)換規(guī)則:字符必須先轉(zhuǎn)換為整數(shù) (c 語(yǔ)言規(guī)定字符類型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用) short 型轉(zhuǎn)換為 int型( 同屬于整型 ) float型數(shù)據(jù)在運(yùn)算時(shí)一律轉(zhuǎn)換為雙精度(double) 型,以提高運(yùn)算精度 ( 同屬于實(shí)型 ) 賦值時(shí),一律是右部值轉(zhuǎn)換為左部類型注:當(dāng)整型數(shù)據(jù)和雙精度數(shù)據(jù)進(jìn)行運(yùn)算時(shí),c先將整型數(shù)據(jù)轉(zhuǎn)換成雙精度型數(shù)據(jù),再進(jìn)行運(yùn)算,結(jié)果為雙精度類型數(shù)據(jù)當(dāng)字符型數(shù)據(jù)和實(shí)型數(shù)據(jù)進(jìn)行運(yùn)算時(shí),c先將字符型數(shù)據(jù)轉(zhuǎn)換成實(shí)型數(shù)據(jù),然后進(jìn)
9、行計(jì)算,結(jié)果為實(shí)型數(shù)據(jù) 顯式轉(zhuǎn)換規(guī)則:例: (int)(x+y); 注:強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需要的中間變量,原來(lái)變量的類型未發(fā)生變化stm32 數(shù)據(jù)類型入門篇關(guān)于兩個(gè)關(guān)鍵詞說(shuō)明 volatile const(1)volatile :這個(gè)關(guān)鍵字,很多人只知道用,不知道其含義,有介紹解釋是不易被編譯器優(yōu)化的。在 stm32 資料中解釋加了易揮發(fā)的變量。這些解釋都是含糊不清的。為此筆者專門查了下這個(gè)修飾關(guān)鍵字含義通俗的解釋:隨時(shí)會(huì)改變,并被多函數(shù)調(diào)用可以加volatile修飾。簡(jiǎn)稱易變變量或易揮發(fā)變量。表示這個(gè)變量的真的很容易變。進(jìn)階解釋 :加了這個(gè) volatile意義就是在每次取這個(gè)變量值
10、的時(shí)候,要求不是取它上次在某個(gè)時(shí)候取的臨時(shí)緩存變量(比如說(shuō)暫存在某個(gè)寄存器中),而是直接到內(nèi)存中取。個(gè)人經(jīng)驗(yàn):告訴編譯器 ,volatile定義的變量必須 ram 變量. 不能是寄存器變量 . 尤其是中斷中用全局變量。(2)const: 在定義變量時(shí)候,如果加上關(guān)鍵詞const ,則變量的值在程序運(yùn)行期間不能改變,當(dāng)然不能再賦值了。 這種變量稱為常變量(constant variable) 或是只讀變量(read-only-variable,這樣覺(jué)得更恰當(dāng))。stm32 數(shù)據(jù)類型入門篇stm32f10 x_stdperiph_driver 3.0 以后的版本中使用了cmsis數(shù)據(jù)類型3.0 以
11、后版本與之前版本變量的定義有所不同,但是出于兼容舊版本的目的,以上的數(shù)據(jù)類型仍然兼容。cmsis的 io 類型限定詞如表 3 所示, cmsis和 stm32固件庫(kù)的數(shù)據(jù)類型對(duì)比如表 5 所示。這些數(shù)據(jù)類型可以在stm32f10 x_stdperiph_lib_v3.4.0librariescmsiscm3devicesupportststm32f10 x stm32f10 x.h中找到具體的定義。數(shù)據(jù)類型和 io類型限定詞cortex-mx hal使用標(biāo)準(zhǔn) ansi c 頭文件 定義的標(biāo)準(zhǔn)類型。特別用類型限定詞io來(lái)訪問(wèn)外設(shè)的變量。表3 數(shù)據(jù)類型限定詞io。io類型限定詞#define 描述
12、_i volatile const 只讀訪問(wèn)_o volatile 只寫訪問(wèn)_io volatile 讀和寫訪問(wèn)st從庫(kù)包中移除了文件”stm32f10 x_type.h ”,新的庫(kù)使用cmsis 和 定義的數(shù)據(jù)類型。表5展示了 stm32f10 xxx和 之間數(shù)據(jù)類型的一一對(duì)應(yīng)關(guān)系。表5 stm32f10 xxx固件庫(kù) v2.0.3 與 cmsis 數(shù)據(jù)類型對(duì)比stm32f10 xxx固件庫(kù)類型cmsis 類型描述s32 int32_t 有符號(hào) 32位數(shù)據(jù)s16 int16_t 有符號(hào) 16位數(shù)據(jù)s8 int8_t 有符號(hào) 8位數(shù)據(jù)sc32 const int32_t 只讀有符號(hào) 32位數(shù)據(jù)
13、sc16 const int16_t 只讀有符號(hào) 16位數(shù)據(jù)sc8 const int8_t 只讀有符號(hào) 8位數(shù)據(jù)vs32 _io int32_t 易揮發(fā)讀寫訪問(wèn)有符號(hào)32位數(shù)據(jù)vs16 _io int16_t 易揮發(fā)讀寫訪問(wèn)有符號(hào)16位數(shù)據(jù)vs8 _io int8_t 易揮發(fā)讀寫訪問(wèn)有符號(hào)8位數(shù)據(jù)vsc32 _i int32_t 易揮發(fā)只讀有符號(hào)32位數(shù)據(jù)vsc16 _i int16_t 易揮發(fā)只讀有符號(hào)16位數(shù)據(jù)vsc8 _i int8_t 易揮發(fā)只讀有符號(hào)8位數(shù)據(jù)u32 uint32_t 無(wú)符號(hào) 32位數(shù)據(jù)u16 uint16_t 無(wú)符號(hào) 16位數(shù)據(jù)u8 uint8_t 無(wú)符號(hào) 8位數(shù)據(jù)
14、stm32 數(shù)據(jù)類型入門篇uc32 const uint32_t 只讀無(wú)符號(hào) 32位數(shù)據(jù)uc16 const uint16_t 只讀無(wú)符號(hào) 16位數(shù)據(jù)uc8 const uint8_t 只讀無(wú)符號(hào) 8位數(shù)據(jù)vu32 _io uint32_t 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)32位數(shù)據(jù)vu16 _io uint16_t 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)16位數(shù)據(jù)vu8 _io uint8_t 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)8位數(shù)據(jù)vuc32 _i uint32_t 易揮發(fā)只讀無(wú)符號(hào)32位數(shù)據(jù)vuc16 _i uint16_t 易揮發(fā)只讀無(wú)符號(hào)16位數(shù)據(jù)vuc8 _i uint8_t 易揮發(fā)只讀無(wú)符號(hào)8位數(shù)據(jù)注意出于兼容舊版本的目的文件”stm32f10 x.h ”中仍然定義了 stm32f10 xxx 固件庫(kù)原有數(shù)據(jù)類型。文件”stm32f10 x.h ”中也定義了 stm32f10 xxx 固件庫(kù)專用類型 . 它們是 :typedef enum false = 0, true = !false bool; typedef enum reset
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北職業(yè)技術(shù)學(xué)院《面向?qū)ο蟪绦蛟O(shè)計(jì)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 防災(zāi)科技學(xué)院《西醫(yī)內(nèi)科臨床能力訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 延邊職業(yè)技術(shù)學(xué)院《人力資源開發(fā)與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京航空航天大學(xué)金城學(xué)院《中學(xué)化學(xué)教學(xué)設(shè)計(jì)與實(shí)踐MOOC》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥共達(dá)職業(yè)技術(shù)學(xué)院《工程財(cái)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 駐馬店幼兒師范高等??茖W(xué)?!秴^(qū)塊鏈理論與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2030年中國(guó)熏制調(diào)味料數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)多級(jí)高壓離心泵數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)塑鋼閉口鏈數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 湖北2025年湖北美術(shù)學(xué)院專項(xiàng)招聘專任教師40人筆試歷年參考題庫(kù)附帶答案詳解
- 烹飪實(shí)訓(xùn)室安全隱患分析報(bào)告
- 《金屬加工的基礎(chǔ)》課件
- 運(yùn)輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
- 體驗(yàn)式沙盤-收獲季節(jié)
- 老年護(hù)理陪護(hù)培訓(xùn)課件
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
- 醫(yī)院投訴糾紛及處理記錄表
- YY/T 0698.5-2023最終滅菌醫(yī)療器械包裝材料第5部分:透氣材料與塑料膜組成的可密封組合袋和卷材要求和試驗(yàn)方法
- 醬香型白酒工廠設(shè)計(jì)
- 【深度教學(xué)研究國(guó)內(nèi)外文獻(xiàn)綜述2100字】
- 牽引管道孔壁與管道外壁之間注漿技術(shù)方案
評(píng)論
0/150
提交評(píng)論