天天看點

DSP中的C語言(一)——int16、Uint16、float32等定義的用法和差別

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位的編譯器較為常用。

DSP中的C語言(一)——int16、Uint16、float32等定義的用法和差別

是以,将代碼部分一一對應即可了解int16等定義的具體作用:

  1. int16  有符号16位整型
  2. int32  有符号32位整型
  3. int64  有符号64位整型(這是DSP28335的一個賣點,擁有完成64位資料處理的能力)
  4. Uint16  無符号位16位整型 (将原本int16的符号位轉化為資料位,參與資料計算,是以資料量擴大2倍,原本是±32767,變為0 - 65536)
  5. Uint32  無符号位32位整型
  6. Uint64  無符号位64位整型
  7. float32      32位浮點型 (浮點型講解可以看看這篇部落格https://blog.csdn.net/qq_44543508/article/details/101982298)
  8. flota64      64位浮點型 

電機控制裡面,坐标變換、SVPWM、PI調節器等都是包含小數運算的,一般用浮點型較多,而包含資料邏輯運算,比如Hall傳感器的資料提取,一般用整型的較多。

繼續閱讀