历史上的今天
今天是:2024年11月18日(星期一)
2019年11月18日 | stm32f0_GPIO
2019-11-18 来源:eefocus
GPIO口
介绍:
4 个 32 位 配 置 寄 存 器
GPIOx_MODER:模式配置寄存器
GPIOx_OTYPER:输出模式配置寄存器
GPIOx_OSPEEDR:输出速度寄存器
GPIOx_PUPDR:上拉下拉选择
2 个 32 位数据寄存器
GPIOx_IDR:输入寄存器
GPIOx_ODR:输出寄存器
1 个32 位置位 / 复位寄存器
GPIOx_BSRR
A和B还含有1个32位锁定寄存器
GPIOx_LCKR
A和B还含有2个32位替代功能寄存器
GPIOx_AFRH :复用功能寄存器
GPIOx_AFRL :复用功能寄存器
GPIO口可以配置成如下模式:
● 浮空输入
● 上拉输入
● 下拉输入
● 模拟输入
● 具有上拉或下拉能力的开漏输出
● 具有上拉或下拉能力的推挽输出
● 复用功能且具有上拉或下拉能力的推挽输出
● 复用功能且具有上拉或下拉能力的开漏输出
注意事项:
1:所有端口都有外部中断能力。 为了用做外部中断口线, 端口线必须配置为输入模式
2:对于 GPIOx_ODR 中的每位, 在GPIOx_BSRR 中有两位与之对应: BS(i) 和 BR(i)。 当对位
BS(i) 写1时则设置相应的 ODR(i) 位。 当对 BR(i) 写1时, 则复位相应的 ODR(i) 位。
3:为了写 GPIOx_LCKR 寄存器, 须发出一个特定的写 / 读序列。 当正确的锁定序列作用于这个
寄存器的位 16 时, LCKR[15:0] 的值用来锁定 I/O 口的配置
配置过程:
void GPIOConfigure( void )
{
GPIO_InitTypeDef gpio_init_structure;
gpio_init_structure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
gpio_init_structure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度
gpio_init_structure.GPIO_Pin = GPIO_Pin_0; //引脚
gpio_init_structure.GPIO_PuPd = GPIO_PuPd_UP; //上拉模式输出
gpio_init_structure.GPIO_OType = GPIO_OType_PP; //推挽模式输出
GPIO_Init(GPIOA,&gpio_init_structure);
}
#define GPIOA_SET_BIT0 GPIO_SetBits(GPIOA,GPIO_Pin_0)//置位
#define GPIOA_RSET_BIT0 GPIO_ResetBits(GPIOA ,GPIO_Pin_0)//复位
#define GPIOA_RDIN_ALL GPIO_ReadInputData(GPIOA)
#define GPIOA_RDIN_BIT0 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define GPIOA_RDOUT_ALL GPIO_ReadOutputData(GPIOA)
#define GPIOA_RDOUT_BIT0 GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_0)
上面是相应的读取和写入函数,看函数名就可以理解此函数的功能
上一篇:stm32F1RTC
下一篇:stm32数据类型
史海拾趣
|
转自其他网站 为什么仪表放大器常常被人们误解呢? 图 1 所示的 三运放仪表放大器看似为一种简单的结构,因为它使用已经存在了几十年的基本运算放大器 (op amp) 来获得差动输入信号。运算放大器的输入失调电压误差不难理解。运算 ...… 查看全部问答> |
|
S3C2440 WINCE5.0 WIFI的SDIO驱动问题:SDIO HOST驱动是用SDCSDCard.dll还是sdhc_sc2410.dll? 我用的WIFI模块是Marvell 8686,SDIO接口;client驱动他们已经提供了,现在只要把SDIO驱动移植好就可以。 但是我做了3天,实在没什么进展: 1. 我的WIFI模块是直接焊在板上的,所以没有插卡、拔卡的检测中断,不知怎么启动WIFI模块的识别 2. S3C ...… 查看全部问答> |
|
调查一下,大家做GPRS数据传输的方法。用GPRS模块自带的协议栈,还是移植一个TCP/IP协议栈 做一个简单的小调查,用GPRS模块做数据传输系统,大家用的方法是: 1、使用GPRS模块自带的协议栈 2、移植一个TCP/IP协议栈,如Lwip 谢谢… 查看全部问答> |
|
在WinCE下,基于微软的框架开发摄像头,怎么让它连接电脑,变成摄像头使用 项目在WinCE下的摄像头构建成功,不是基于USB的。 在WinCE下通过DShow可以采集数据正常显示。 现在有新的要求,当我们的设备与电脑相连的时候,可以把它作为普通的摄像头来使用 例如,可以进行视频聊天等等。 这个应该怎么做的啊,那些电脑上的 ...… 查看全部问答> |
|
arm linux驱动编写中,中断服务程序中可以进行ioremap吗? 发现只要在中断服务程序中执行到ioremap函数就会报错 nable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c355c000 [00000000] *pgd=338e5031, *pte=00000000, *ppte=00000000 Internal error: Oops: 817 [#1 ...… 查看全部问答> |
|
看STM32的FLASH手册,关于FLASH_ACR寄存器的LATENCY位的说明,上面明确写着: 0 wait state if 0MHz < SYSCLK <= 24MHz 1 wait state if 24MHz < SYSCLK <= 48MHz 2 wait s ...… 查看全部问答> |
|
设想总归是设想,要想实现这个设想对我来说还是一件很遥远的事情。学习过程中少不了各位的帮助,在此先谢谢了! 再次感谢EEWORLD给我们提供了这么超值的团购! 同时也期待着今后更多的超值给力的团购活动!… 查看全部问答> |




