void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 功能:设置某个IO口为高电平(可同时设置同一端口的多个IO)。底层是通过配置BSRR寄存器。 void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 功能:设置某个IO口为低电平(可同时设置同一端口的多个IO)。底层是通过配置BSRR寄存器。
HAL库(Hardware Abstraction Layer)函数实现: GPIO_InitTypeDefGPIO_InitStruct={0};// 使能时钟__HAL_RCC_GPIOB_CLK_ENABLE();// 配置结构体GPIO_InitStruct.Pin=GPIO_PIN_6;// 设置GPIO端口号为6GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;// 设置端口输出模式为推挽输出GPIO_InitStruct.Pull=GPIO_NOPULL;...
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);对应GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); HAL_GPIO_WritePin(GPIOB, LED_G_Pin|LED_B_Pin, GPIO_PIN_SET);对应GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN); 三、GPIO输入 3.1 参数配置 在S...
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_6|GPIO_Pin_7;/*选择要控制的引脚*/GPIO_Init(GPIOG,&GPIO_InitStructure);/*开启所有led灯 */GPIO_SetBits(GPIOB,GPIO_Pin_0); GPIO_SetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7); } 当然啦,上述代码包含了时钟的使能。 通过对时钟和GPIO的分析,我想大家已经对固件...
点亮LED,基本步骤是:配置寄存器;控制寄存器。库开发只是将传统的配置方式编程函数,是的单片机开发变得简单方便快捷。 我们常用的 IO 端口寄存器只有 4 个: CRL、 CRH、 IDR、 ODR。其中CRL 和 CRH 控制着每个 IO 口的模式及输出速率。 低配置寄存器 CRL 的描述,如下图和下表所示。
CR寄存器的设置既可直接对寄存器进行位操作,也可以通过调用库函数进行操作。 1. 直接操作寄存器 为了便于对寄存器进行位操作,在头文件stm32f10x.h(以F103ZET6标准库为例,HAL库中对应的头文件为stm32f103xe.h)中定义了大量的宏、枚举类和结构体,来实现与寄存器地址的映射。以GPIOA为例,从上到下的映射关系为: ...
1. 直接操作寄存器:通过使用寄存器来设置或清除GPIO引脚的输出状态。例如,通过直接设置GPIO输出寄存器的某一位,可以控制对应的GPIO引脚输出高电平或低电平。2. 使用库函数:利用库函数来设置GPIO引脚的输出状态。例如,通过STM32标准外设库中的GPIO_Init函数初始化GPIO引脚,并调用GPIO_SetBits和GPIO_Reset...
STM32Cube使用比较简单,外设的配置可以自动生成。而且可以生成报表。只需要填写主函数的逻辑关系即可。填写时可通过hal_gpio.h查看函数名称。 while(1){/* USER CODE END WHILE */HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);HAL...
单片机平台编写 GPIO 口程序,以 STM32F103 为例,有三种模式:库函数、HAL库、寄存器。 使用库函数的方式操控 GPIO 方式如下: 代码语言:javascript 复制 voidLED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能 PB 端口时钟GPIO_InitStructure.GPIO_Pin=...