寄存器点亮LED灯

点击查看代码
/**
   ******************************************************************************
   * @file    main.c 
   * @author  
   * @version 
   * @date    2024/06/28
   * @brief   实现通过寄存器来利用MCU的PF9引脚控制开发板的LED灯的亮灭
   ******************************************************************************
**/


//对使用的寄存器进行地址的定义

#define  GPIOF_MODER   ( * ( volatile unsigned int *)(0x40021400 + 0x00) )    //端口模式寄存器
#define  GPIOF_OTYPER  ( * ( volatile unsigned int *)(0x40021400 + 0x04) )    //输出类型寄存器
#define  GPIOF_OSPEEDR ( * ( volatile unsigned int *)(0x40021400 + 0x08) )    //输出速度寄存器
#define  GPIOF_PUPDR   ( * ( volatile unsigned int *)(0x40021400 + 0x0C) )    //上拉下拉寄存器
#define  GPIOF_ODR     ( * ( volatile unsigned int *)(0x40021400 + 0x14) )    //输出数据寄存器

#define  RCC_AHB1ENR   ( * ( volatile unsigned int *)(0x40023800 + 0x30) )    //AHB1外设时钟使能寄存器

int main()
{
	//1.打开GPIOF端口的外设时钟
	RCC_AHB1ENR |= (1<<5);
	
	//2.设置GPIOF端口的模式、速度、输出类型、上拉下拉
	
	GPIOF_MODER &= ~(1<<(2*9+1));
	GPIOF_MODER |=  (1<<(2*9));  	// 01  输出模式
	
	
	GPIOF_OTYPER &= ~(1<<9);     	//推挽输出
	
	GPIOF_OSPEEDR |= (1<<(2*9+1));
	GPIOF_OSPEEDR |= (1<<(2*9));  //输出速度为100MHZ
	
	GPIOF_PUPDR &= ~(1<<(2*9+1));
	GPIOF_PUPDR &= ~(1<<(2*9));   //无上拉下拉
	
	
	while(1)
	{
		//PF9输出低电平
		GPIOF_ODR &= ~(1<<9);  

	}
}

posted @ 2025-08-30 12:17  w1888  阅读(13)  评论(0)    收藏  举报