stm32结构体和结构体指针的问题

2019-10-15 17:19发布

本帖最后由 xuesong10210 于 2017-1-14 20:35 编辑

楼主没有理解指针到底是个啥东西!GPIO_InitTypeDef  *GPIO_InitStructure只是定义了一个指针变量。只有当这个指针指向一个具体地方时才能通过指针的方法取出里面的值。GPIO_InitTypeDef  *GPIO_InitStructure系统编译会默认认为定义了一个指向0地址的指针。而GPIO_InitTypeDef GPIO_InitStruct其实是在堆栈区申请了一片能存放GPIO_InitTypeDef结构体变量的空间。
        GPIO_InitTypeDef  *GPIO_InitStructure;
        GPIO_InitTypeDef   GPIO_init;
        
GPIO_InitStructure = &GPIO_init;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        GPIO_InitStructure->GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure->GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStructure->GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, GPIO_InitStructure);
        GPIO_SetBits(GPIOB, GPIO_Pin_8);
通过上面这个做就可以,不过这样做比较多余而已!!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
来俩不甜的
1楼-- · 2019-10-15 18:30
指针非法
shikihane
2楼-- · 2019-10-15 23:06
 精彩回答 2  元偷偷看……
aboutzhao
3楼-- · 2019-10-16 02:53
本帖最后由 aboutzhao 于 2017-1-13 14:24 编辑

GPIO_InitTypeDef  GPIO_InitStructure;//表示定义了一个GPIO_InitTypeDef的结构实例然后使用GPIO_InitStructure访问GPIO_InitTypeDef 中的成员。
typedef struct
{
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define */

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

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

ysq7120
4楼-- · 2019-10-16 02:58
指针都没分配空间,指向的地址非法

一周热门 更多>