extern void GPIO_x_Set_bits(GPIO_typedef* GPIO_x, uint16 GPIO_PIN_x); extern void GPIO_x_RES_bits(GPIO_typedef* GPIO_x, uint16 GPIO_PIN_x); extern void GPIO_Init(GPIO_typedef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); #endif /*__STM32F10X_GPIO_H__*/ 1. 2. 3. 4. 5. ...
而置位/复位寄存器GPIOx_BSRR可以通过修改输出数据寄存器的值,从而影响电路的输出。 4、复用功能输出:复用功能输出中的复用是指STM32的其他片上外设对GPIO引脚进行控制,此时GPIO引脚用作该外设功能的一部分,算是第二用途。从其他外设引出来的复用功能输出信号与GPIO本身的数据寄存器都连接到双MOS管结构的输入中。 三...
#define SPI_FRAM_CS_HIGH GPIOC->BSRR = GPIO_Pin_5 与 #define SPI_FRAM_CS_LOW GPIOC->BRR |= GPIO_Pin_5 #define SPI_FRAM_CS_HIGH GPIOC->BSRR |= GPIO_Pin_5 的区别在于多了一个"或",这相等于: #define SPI_FRAM_CS_LOW GPIOC->BRR = GPIOC->BRR | GPIO_Pin_5 #define SPI_FRA...
GPIOA->BSRR=1<1;//设置GPIOA.1为高电平GPIOA->BSRR=1<(16+1);//设置GPIOA.1为低电平 操作BSRR寄存器来设置I/O电平的库函数为: //设置一组I/0口中的一个或者多个I/0口为高电平.voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); 4、端口位清除寄存器(GPIOx_BRR) 在这里插入图片描述 ...
2个 32 位的数据寄存器 IDR 和 ODR; 1个 32 位的置位/复位寄存器BSRR; 1个 16 位的复位寄存器 BRR; 1个 32 位的锁存寄存器 LCKR; 第二个参数是GPIO_Init:它的类型是GPIO_InitTypeDef *,指向结构体变量(GPIO_InitTypeDef )的指针,其中GPIO_InitTypeDef结构体包含了Pin,mode ,pull,speed等几个成员变量,分别...
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) { uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; uint32_t tmpreg = 0x00, pinmask = 0x00; /* Check the parameters assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); ...
如上图,函数通过对AHB1ENR寄存器的置位来使能或不使能GPIOx端口。接着,IIC_Init()函数对GPIOB上所需用到的引脚Pin8、Pin9进行了初始化设置。设置其Mode即端口模式为普通输出模式;设置其OType即输出类型为推挽输出;设置其Speed即输出速度为100MHz;设置其PuPd即上拉/下拉类型为上拉。
5.1GPIO结构原理 5.1.1GPIO功能描述 GPIOA~GPIOK 每个通用I/O端口包括以下寄存器:4个32位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR和GPIOx_PUPDR)2个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)、1个32位置位/复位寄存器(GPIOx_BSRR)、1个32位锁定寄存器(GPIOx_LCKR)和2个32位复用功能选择...
速度就直接⽤1,2,3来表⽰ 具体的函数分析如下 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct){ /*初始化各个变量*/ uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;uint32_t tmpreg = 0x00, pinmask = 0x00;//currentmode ⽤于...
GPIO_InitTypeDef GPIO_Instrcture;2.使能端口时钟,打开外设的输出时钟端口 RCC_APB2periphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//第一个参数确定I/O口,第二个确定状态ENABLE或DISABLE 原函数 void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) { /* Check the parameters *...