STM32F103第一战-------寄存器操作GPIO

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基本配置包括时钟使能以及模式选择,寄存器信息如下图:
STM32F103第一战-------寄存器操作GPIO_第1张图片
STM32F103第一战-------寄存器操作GPIO_第2张图片

int main()
{
	led_init();			//LED初始化
	while(1)
	{
		LED1(1);			//点亮LED灯
		LED1(1);
	}
}

你可能感兴趣的:(STM32F103)