cccc678 发表于 2022-12-16 22:36:12

c语言求助,急

请你定义一个GPIO结构体并给它赋值。
要求:1.结构体名称为GPIO_InitTypeDef
2.结构体变量有(1)GPIO_Pin;(2)GPIO_Speed;(3) GPIO_Mode;其中 GPIO_Pin为无符号短整形,GPIO_Speed和GPIO_Mode为枚举类型。GPIO_Speed的枚举有GPIO_Speed_10MHz,GPIO_Speed_2MHz, GPIO_Speed_50MHz。GPIO_Mode的枚举有 GPIO_Mode_AIN=0x0,GPIO_Mode_IN_FLOATING=0x04,GPIO_Mode_IPD= 0x28,GPIO_Mode_IPU = 0x48,GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10,GPIO_Mode_AF_OD = 0x1C,GPIO_Mode_AF_PP = 0x18。
3.GPIO_Speed和GPIO_Mode为枚举类型。需要自己构造。
4.结构体变量的值可以是该变量的任意数据类型
例:enumGPIOSpeed_TypeDef
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
};

lvk 发表于 2022-12-16 22:49:04

本帖最后由 lvk 于 2022-12-16 22:50 编辑

来自stm32标准库:
/**
* @briefGPIO Configuration Mode enumeration
*/
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 Mode */
} GPIOMode_TypeDef;

/**
* @briefGPIO Output Maximum frequency enumeration
*/
typedef enum
{
    GPIO_Low_Speed = 0x00,    /*!< Low speed    */
    GPIO_Medium_Speed = 0x01, /*!< Medium speed */
    GPIO_Fast_Speed = 0x02,   /*!< Fast speed   */
    GPIO_High_Speed = 0x03    /*!< High speed   */
} GPIOSpeed_TypeDef;

/**
* @brief   GPIO Init structure definition
*/
typedef struct
{
    unsigned int GPIO_Pin; /*!< Specifies the GPIO pins to be configured.
                        This parameter can be any value of @ref GPIO_pins_define */

    GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins.
                                 This parameter can be a value of @ref GPIOMode_TypeDef */

    GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.
                                     This parameter can be a value of @ref GPIOSpeed_TypeDef */
} GPIO_InitTypeDef;
有些值和要求的不一样,照着改就行
页: [1]
查看完整版本: c语言求助,急