STM32學習之 stm32中C語言的資料型別

2021-08-09 04:10:17 字數 1793 閱讀 4243

stm32——c語言資料型別

在程式設計過程中,不同的cpu,其資料型別的意義各不相同,所以一定要注意相應變數資料型別的定義和轉換,否則在計算中可能會出現不確定的錯誤。

(一)c語言中的種類資料

整型:int short long

實型:float double

stm32中的資料型別非常的多,常用的變數,檔案中的定義如下:

/* exact-width signed integer types */

typedef   signed          char int8_t;

typedef   signed short     int int16_t;

typedef   signed           int int32_t;

typedef   signed       __int64 int64_t;

/* exact-width unsigned integer types */

typedef unsigned          char uint8_t;

typedef unsigned short     int uint16_t;

typedef unsigned           int uint32_t;

typedef unsigned       __int64 uint64_t;

typedef int32_t s32;

typedef int16_t s16;

typedef int8_t s8;

typedef uint32_t u32;

typedef uint16_t u16;

typedef uint8_t u8;

還有float int編譯器中不能看到其定義(估計已編譯了)。

因此在stm32程式設計中,常用的資料型別有:char(字元型),u8,u16 ,u32,但是在一些計算中,涉及到負數,小數,因此要用到:int   float doulbe 型。

其中u8——1個位元組,無符號型(不能表達負數,如果用來當作負數的話,就出錯了);

u16 ——2個位元組,無符號型(參看前邊stm32f10x.h中的定義);

u32——4個位元組,無符號型;

int——4個位元組,有符號型,可以表達負整數;

float ——4個位元組,有符號型,可以表達負數/小數;

double——8個位元組,有符號弄,可以表達負數/小數;

(二)不同型別資料的混合運算

在c語言中,不同型別的資料間是可以混合運算的。在進行運算時,不同型別的資料要先轉換成同一型別,然後進行運算。轉換的規則如下:

注意:箭頭的方向只表示資料型別級別的高低,由低向高轉換,這個轉換過程是一步到位的。

(三)資料型別轉換規則

各類資料型別的轉換,分為兩種方式:隱式(編譯軟體自動完成),顯式(程式強制轉換)

隱式轉換規則:

字元必須先轉換為整數(c語言規定字元型別資料和整型資料之間可以通用) 

short型轉換為int型(同屬於整型) 

float型資料在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬於實型) 

賦值時,一律是右部值轉換為左部型別 

[注] 

當整型資料和雙精度資料進行運算時,c先將整型資料轉換成雙精度型資料,再進行運算,結果為雙精度型別資料 

當字元型資料和實型資料進行運算時,c先將字元型資料轉換成實型資料,然後進行計算,結果為實型資料

顯式轉換規則:

例:(int)(x+y);

注:強制型別轉換時,得到乙個所需要的中間變數,原來變數的型別未發生變化。

STM32學習筆記(3) 什麼是STM32

既然已經做好了開發stm32的準備,軟體硬體都準備好了,那麼我們來了解一下何為stm32吧。stm32是意法半導體 st 設計的一系列32位晶元的名字,細分為l f h三個系列。f系列是最經典的系列。f系列的基礎晶元是f1系列,低廉,麻雀雖小五臟俱全,我做課程設計最喜歡用的就是stm32f103c8...

STM32之串列埠

名稱 stm32之串列埠 說明 對於stm32的串列埠通訊來說,從外部看,和c51差不多。從內部看,啊。我還不了解。從使用上說,也是需要先配置usart,然後通過終端或者輪詢的方式接受或者輸出資料。由於有了韌體庫函式的幫助,stm32的串列埠配置起來比c51還要方便不少。本實驗完成的是輸入輸出重定向...

STM32基礎學習

最近在學stm32,遇到了一些問題,也解決了一些,望大家糾正。韌體庫外設驅動檔案引入方法 1 加入你要加入的.c檔案 2 在path中加入你的相對應的.h 3 就是一定要將stm32f10x conf.h配置中的相對應的標頭檔案取消注釋。暫存器版本的error l6218e undefined sy...