STM32F103第一战-------寄存器操作GPIO
STM32学习,需要了解寄存器,第一步便是操作GPIO,在此,贴上LED代码
*#define LED1(X) X? (GPIOB->ODR &=~ (0X01<<5)):(GPIOB->ODR |= (0X01<<5))
#define LED2(X) X? (GPIOE->ODR &=~ (0X01<<5)):(GPIOE->ODR |= (0X01<<5))
//由于STM32不支持位操作,采用三目运算符,方便对IO口的其中一位进行操作
void led_init(void) //LED初始化函数
{
RCC->APB2ENR |= (0X01<<3); //打开GPIOB端口时钟
RCC->APB2ENR |= (0X01<<6); //打开GPIOE端口时钟
GPIOB->CRL &=~ (0xF<<20); //配置端口模式,先清零
GPIOB->CRL |= (0X3<<20); //将PB5配置为通用推挽输出模式
GPIOE->CRL &=~ (0xF<<20); //配置端口模式,先清零
GPIOE->CRL |= (0X3<<20); //将PE5配置为通用推挽输出模式
LED1(0); //LED1对应口输出0
LED2(0);
}*
对GPIO基本配置包括时钟使能以及模式选择,寄存器信息如下图:
int main()
{
led_init(); //LED初始化
while(1)
{
LED1(1); //点亮LED灯
LED1(1);
}
}