GPIO库函数编程:
void LED_init(void)//LED初始化 { GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //开相应的时钟--APB2 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //GPIOC13 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //上拉方式 GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化 }
GPIO寄存器配置:
void LED_init(void) { RCC->APB2ENR|=1<<2;//开启时钟 GPIOA->CRH &=0xff3fffff;//推挽输出,50MHz //端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) //向相应的BRR写1,则清零 //向相应的BSRR写1,则置位 GPIO->BRR |=1<<13; //点亮led GPIO->BSRR |=1<<13;//关闭led //端口输出数据寄存器(GPIOx_ODR) (x=A..E) //向相应的ODR写1,则置位 //GPIO->ODR &=~(1<<13); //点亮led //GPIO->ODR |= (1<<13); //关闭led
}
BRR:
BSRR:
ODR:
原文:https://www.cnblogs.com/darren-pty/p/13269001.html