野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14950|回复: 9

关于GPIO_Init函数一个疑问

[复制链接]
发表于 2018-4-24 18:32:13 | 显示全部楼层 |阅读模式
    在开发实战指南一书中,GPIO口初始化函数GPIO_Init(GPIOB,&GPIO_InitStructure)第二个参数传入的是结构体变量的地址, 该函数原型是这样的:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
功能描述:     根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
输入参数1:   GPIOx:x可以是A,B,C,D或者E,选择GPIO外设
输入参数2:   GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息
于是我将之前定义的结构体变量改为结构体指针,再将指针传入,改为如下GPIO_InitTypeDef  *GPIO_InitStructure;
RCC_APB2ENR|=(1<<3);
GPIO_InitStructure->GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure->GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure->GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,GPIO_InitStructure);


很奇怪的是语法编译都可以通过,但是灯却不亮了,何解?
回复

使用道具 举报

发表于 2018-4-25 08:51:39 | 显示全部楼层
看不出问题,帮顶
回复 支持 反对

使用道具 举报

发表于 2018-4-25 09:03:24 | 显示全部楼层
直接给指针赋值,改变的是地址吧,所以其实没有改变寄存器里的值。(个人看法,如果有不对的请指正)
回复 支持 反对

使用道具 举报

发表于 2018-4-25 09:04:45 | 显示全部楼层
GPIO_InitTypeDef  *GPIO_InitStructure ;你只定义了指针但是没有初始化就使用,未初始化的指针你也敢用
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-25 10:41:56 | 显示全部楼层
浪费 发表于 2018-4-25 09:04
GPIO_InitTypeDef  *GPIO_InitStructure ;你只定义了指针但是没有初始化就使用,未初始化的指针你也敢用

楼上正解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-25 11:31:45 | 显示全部楼层
浪费 发表于 2018-4-25 09:04
GPIO_InitTypeDef  *GPIO_InitStructure ;你只定义了指针但是没有初始化就使用,未初始化的指针你也敢用

确实初始化后灯亮了,还有请问除了malloc外还有别的初始化方式吗?
回复 支持 反对

使用道具 举报

发表于 2018-4-25 17:26:05 | 显示全部楼层
我欲成仙 发表于 2018-4-25 11:31
确实初始化后灯亮了,还有请问除了malloc外还有别的初始化方式吗?

你说的是初始化指针还是GPIO?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-25 18:03:35 | 显示全部楼层
初始化指针
回复 支持 反对

使用道具 举报

发表于 2018-4-26 09:45:26 | 显示全部楼层

初始化指针就平常那几个吧     
malloc在单片机一般应用上不会使用吧
最常见的就是先申请内存 再  & 取地址   
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitTypeDef *pGPIO_InitStructure = &GPIO_InitStructure;
还有就是单片机中常用的,知道切确地址
#definde  GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
这种也相当于初始化指针
个人理解,有错误欢迎指正
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-28 18:03:41 | 显示全部楼层
浪费 发表于 2018-4-26 09:45
初始化指针就平常那几个吧     
malloc在单片机一般应用上不会使用吧
最常见的就是先申请内存 再  & 取 ...

好的 谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 17:10 , Processed in 0.050187 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表