STM32 枚舉類型和結構體的使用


     結構體就是一個可以包含不同數據類型的一個結構,它是一種可以自己定義的數據類型。
        首先結構體可以在一個結構中聲明不同的數據類型。
        第二相同結構的結構體變量是可以相互賦值的,而數組是做不到的,因為數組是單一數據類型的數據集合,它本身不是數據類型(而結構體是),數組名稱是常量指針,所以不可以做為左值進行運算,所以數組之間就不能通過數組名稱相互復制了,即使數據類型和數組大小完全相同。
        第三,節省內存空間
        第四,高效率。

枚舉工作模式:
typedef enum
{
        GPIO_Mode_IN   = 0x00,        /*!< GPIO Input Mode              */
        GPIO_Mode_OUT  = 0x01,    /*!< GPIO Output Mode             */
        GPIO_Mode_AF   = 0x02,      /*!< GPIO Alternate function Mode */
        GPIO_Mode_AN   = 0x03         /*!< GPIO Analog In/Out Mode      */
}GPIOMode_TypeDef ;


枚舉工作速度:
typedef enum
{
        GPIO_Speed_Level_1  = 0x01,   /*!< Medium Speed */
        GPIO_Speed_Level_2  = 0x02,   /*!< Fast Speed   */
        GPIO_Speed_Level_3  = 0x03       /*!< High Speed   */
}GPIOSpeed_TypeDef ;


定義結構體類型:
typedef struct
{
        GPIOMode_TypeDef GPIO_Mode ;    
        GPIOSpeed_TypeDef GPIO_Speed ; 
}GPIO_InitTypeDef ;


定義初始化結構體變量及賦值:
        GPIO_InitTypeDef    GpiocInit;                                    //定義變量
        GpiocInit.GPIO_Mode = GPIO_Mode_IN;                //變量賦值

        GpiocInit.GPIO_Speed = GPIO_Speed_Level_2;


形參為結構體的函數定義:
        GPIO_Init(GPIO_InitTypeDef  init);


形參為結構體的函數

GPIO_Init(GPIO_InitTypeDef  init)

{
            x = init.GPIO_Mode ;                                     //  x = 0x00
         y = init.GPIO_Speed ;                                   // y = 0x02





形參為結構體變量的函數調用:
        GPIO_Init(GpiocInit) ;

例2:
定義字符庫結構體:
typedef struct typFNT_ASC16

{
    char Index[1];
    char Msk[16];
}ZiFuKu;


結構體幅值
const ZiFuKu ASC_16[] = 
{


"1",0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,

"2",0x00,0x00,0x08,0x04,0x84,0x44,0x38,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x00,

"3",0x00,0x00,0x08,0x04,0x44,0x44,0xB8,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,

"4",0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x00,0x01,0x01,0x05,0x07,0x05,0x00

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM