GPIO_InitStructure.GPIO_Pin=LED0_Pin; //选择设置LED0的IO口 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率 GPIO_Init(LED0_GPIO_Port,&GPIO_InitStructure); /* 初始化GPIO */ GPIO_SetBits(LED0_GPIO_Port, LED...
最后在主函数里将三个GPIO信号循环即可: int main(void) { led_init(); while(1){ GPIO_SetBits(GPIOA,GPIO_Pin_4); GPIO_ResetBits(GPIOB,GPIO_Pin_10); GPIO_ResetBits(GPIOC,GPIO_Pin_13); delay_ms(1000); GPIO_ResetBits(GPIOA,GPIO_Pin_4); GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_Re...
比如上面的控制 BRR 寄存器实现电平控制,官方库封装了一个函数: 这个时候你不需要再直接去操作 BRR 寄存器了,你只需要知道怎么使用 GPIO_ResetBits()这个函数就可以了。在你对外设的工作原理有一定的了解之后,你再去看标准库函数,基本上函数名字能告诉你这个函数的功能是什么,该怎么使用,这样开发就方便很多。 标准...
voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){GPIOx->BRR=GPIO_Pin;} Copy 这个时候你不需要再直接去操作 BRR 寄存器了,你只需要知道怎么使用 GPIO_ResetBits()这个函数就可以了。在你对外设的工作原理有一定的了解之后,你再去看标准库函数,基本上函数名字能告诉你这个函数的功能是什么,该怎么使...
标准库:GPIO_SetBits(GPIOC,GPIO_Pin_All);将引脚置1,可以将多个引脚一起设置使用GPIOx->BSRR = GPIO_Pin; GPIO_ResetBits(GPIOC,GPIO_Pin_All);将引脚置0,使用GPIOx->BRR = GPIO_Pin; GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)读取引脚状态
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); LL 库(支持图形化初始配置) //1.配置时钟 //该函数位于stm32f1xx_ll_bus.h LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); //2.配置引脚 LL_GPIO_InitTypeDef LL_GPIO_InitStructure; ...
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_13); //禁用WiFi模块 } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ...
if(PinState != GPIO_PIN_RESET){GPIOx->BSRR = GPIO_Pin;}else{GPIOx->BSRR = (uint32_t)GPIO_Pin <<16u;}} 这段代码是 HAL 库中的 HAL_GPIO_WritePin 函数的实现。该函数用于设置指定 GPIO 引脚的输出电平。 让我们逐行分析代码的功能和操...
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){GPIOx->BRR= GPIO_Pin;} 这个时候你不需要再直接去操作 BRR 寄存器了,你只需要知道怎么使用 GPIO_ResetBits()这个函数就可以了。在你对外设的工作原理有一定的了解之后,你再去看标准库函数,基本上函数名字能告诉你这个函数的功能是什么,该怎么...
在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式,我也就不多阐述了。