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=(uint32_t)(GPIO_InitStruct->GPIO_Mode)&(uint32_t)0...
//以下代码定义在 <gpio.c> 中voidMX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct={0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/*Configure GPIO pin Output Level */HA...
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitTypeDef 是一个结构体的变量,该变量在Stm32f10x_gpio.h头文件中被定义,定义的原型如下: typedef struct { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_In...
1)控制的引脚是GPIO_Pin_0 换算成32位的16进制是:0x0000 0001 2)引脚的模式是GPIO_Mode_Out_PP(通用推挽输出) 换算成32位的16进制是:0x0000 0010 3)引脚的速率是GPIO_Speed_50MHz 换算成32位的16进制是:0x0000 0003 然后调用库函数GPIO_Init(),初始化GPIOB GPIO_Init(macLED1_GPIO_PORT, &GPIO_InitS...
GPIO全称 general purpose input and output ports,通用输入输出端口; STM32一共有7组GPIO port:GPIOA-GPIOG,每组GPIO port 有16个 pin;每组GPIO port都有一组寄存器; GPIO寄存器的控制单位是GPIO port,而不是pin;所以寄存器的最小处理单位是一个16位的字长(0xFFFF); ...
#define GPIO_PIN_MASK 0x0000FFFFu /* PIN mask for assert test *//** * @} */ 可以选择的GPIO引脚模式 /** @defgroup GPIO_mode_define GPIO mode define * @{ */#define GPIO_MODE_INPUT 0x00000000u /*!< 输入模式 */#define GPIO_MODE_OUTPUT_PP 0x00000001u /*!< 推挽输出模式 */#defi...
GPIO(General Purpose Input/Output) - 通用输入/输出 main.c :此函数为主函数,控制LED,亮1s,灭1s 1 2 3 4 5 6 7 8 9 10 11 12 int main( void) { // LED初始化 LED_Configuration(); while( 1) { GPIO_SetBits(GPIOB,GPIO_Pin_5); //置为1 ...
GPIOx->CRL = tmpreg; } 这段代码要点在于两个地方 一个是"pos = pinpos << 2;pinmask = ((uint32_t)0x0F) << pos;tmpreg &= ~pinmask;" 其中pos的取值根据pinpos取0、4、8、...、28,因为每个端口(P0,P1...)相距4个字节,所以这行代码就是将1111移到指定的端口,然后取反,和tmpreg相与,...
Pin=GPIO_PIN_11; //PA11 GPIO_Initure.Mode=GPIO_MODE_AF_INPUT; //推挽复用 HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化 设置CAN 工作模式及波特率等。这一步通过先设置 CAN_MCR 寄存器的 INRQ 位,让 CAN 进入初始化模式,然后设置CAN_MCR 的其他相关控制位。再通过 CAN_BTR 设置波特率和工作...