点击查看代码
/**
******************************************************************************
* @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);
}
}