历史上的今天
今天是:2025年01月07日(星期二)
2020年01月07日 | 对GPIO_Init(GPIOx,&GPIO_InitStructure)的理解
2020-01-07 来源:eefocus
今天学习stm32流水灯程序的时候,看到了“GPIO_Init(GPIOB, &GPIO_InitStructure)”这个函数,参数1”GPIOB“很好理解,就是GPIO的外设口B(也可以是A,C,D,E),第二个参数有点不理解,于是查看了下库函数手册,该函数原型是这样的:
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_InitStructure”包含的是外设GPIO的配置信息,主函数开头我们进行了这样一个私有数据声明:
GPIO_InitTypeDef GPIO_InitStructure;
顺藤摸瓜,我们在头文件“stm32f10x_gpio.h”看到对GPIO_InitTypeDef 的定义:
typedef struct
{
uint32_t GPIO_Pin;
GPIOMode_TypeDef GPIO_Mode;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOOType_TypeDef GPIO_OType;
GPIOPuPd_TypeDef GPIO_PuPd;
}GPIO_InitTypeDef;
在这个之前,我已经对GPIO_InitTypeDef中的各个参数进行了定义,对应的正是void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)输入参数2的描述“指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息”。
至此,我们便可以理解GPIO_Init初始化寄存器的大概步骤了,即将你事先设定好的参数告诉你要用到的外设(或者说外设对应的寄存器。stm32强大的库函数可以让你摆脱复杂冗余的底层寄存器操作。)很简单有木有,相对51只能进行寄存器底层操作,这种函数库的运用真心感觉强大方便。
史海拾趣
|
国半大师的经典巨著《Troubleshooting_Analog_Circuits》 本帖最后由 dontium 于 2015-1-23 11:34 编辑 国半大师的经典之作呃,详细讲了模拟电路的故障诊断。呵呵,我后来全部打印下来看了,国内翻译的不太好,英文原著还是相当的不错的撒,呵呵,分享下。 … 查看全部问答> |
|
正激式开关电源变压器参数的计算 开关电源原理与设计(连载16) 1-6-3-2.正激式开关电源变压器参数的计算 正激式开关电源变压器参数的计算主要从这几个方面来考虑。一个是变压器初级线圈的匝数和伏秒容量,伏秒容量越大变压器的励磁电流就越小;另一个是变压器初、次级线圈的匝数比,以及变压器各个绕组的额定 ...… 查看全部问答> |
|
S3C2440 WINCE 5.0上SD接口的WIFI驱动移植上去了,可以检测到网卡,但是搜不到网络 好不容易才把WIFI驱动移植进去,但是现在搜不到网络,但是用笔记本可以一下子搜到很多。 我的WIFI是接外置天线的,就是把一根比较长的天线焊在上面,我不知接之后是否还要考虑信号问题。 用的WIFI型号叫GM9601,是基于MARVELL 8686的。它的数据手 ...… 查看全部问答> |




