1、int16、Uint16、float32等資料類型
以一個代碼段進行說明,這個是DSP28335對與int16等的一個定義。
#ifndef DSP28_DATA_TYPES
#define DSP28_DATA_TYPES
typedef int int16;
typedef long int32;
typedef long long int64;
typedef unsigned int Uint16;
typedef unsigned long Uint32;
typedef unsigned long long Uint64;
typedef float float32;
typedef long double float64;
#endif
這裡先說一下 typedef 的作用,typedef 的作用是給一個變量類型重新命名,那麼實際上述語句的作用是将關鍵字,int、long、long long等重新命名一遍。
在單片機程式設計中,不同的關鍵字所對應的數值範圍是不一樣。具體如下表所示,其中32位和64位的編譯器較為常用。
是以,将代碼部分一一對應即可了解int16等定義的具體作用:
- int16 有符号16位整型
- int32 有符号32位整型
- int64 有符号64位整型(這是DSP28335的一個賣點,擁有完成64位資料處理的能力)
- Uint16 無符号位16位整型 (将原本int16的符号位轉化為資料位,參與資料計算,是以資料量擴大2倍,原本是±32767,變為0 - 65536)
- Uint32 無符号位32位整型
- Uint64 無符号位64位整型
- float32 32位浮點型 (浮點型講解可以看看這篇部落格https://blog.csdn.net/qq_44543508/article/details/101982298)
- flota64 64位浮點型
電機控制裡面,坐标變換、SVPWM、PI調節器等都是包含小數運算的,一般用浮點型較多,而包含資料邏輯運算,比如Hall傳感器的資料提取,一般用整型的較多。