硬件
正点原子探索者STM32F407ZGT6
软件
1、Keil uVision5
STM32F4xx中文参考手册
//使能时钟
RCC->AHB1ENR |= 1<<5;
//清零
GPIOF->MODER &= ~(0X3<<16);
//通用输出模式
GPIOF->MODER |= (1<<16);
//输出推挽
GPIOF->OTYPER &= ~(1<<8);
//清零
GPIOF->OSPEEDR &= ~(0X3<<16);
//端口输出速度:快速50MHz
GPIOF->OSPEEDR |= (0X2<<16);
//清零
GPIOF->PUPDR &= ~(0X3<<16);
//上拉
GPIOF->PUPDR |= (1<<16);
//关闭蜂鸣器:低电平
GPIOF->BSRRH |= (1<<8);
//关闭蜂鸣器:低电平
GPIOF->ODR &= ~(1<<8);
代码
1、beep.c中关键代码
void BEEP_Init(void)
{
//使能时钟
RCC->AHB1ENR |= (1<<5);
//PF8
//清零
GPIOF->MODER &= ~(0X3<<16);
//通用输出模式
GPIOF->MODER |= (1<<16);
//输出推挽
GPIOF->OTYPER &= ~(1<<8);
//清零
GPIOF->OSPEEDR &= ~(0X3<<16);
//端口输出速度:快速50MHz
GPIOF->OSPEEDR |= (0X2<<16);
//清零
GPIOF->PUPDR &= ~(0X3<<16);
//上拉
GPIOF->PUPDR |= (1<<16);
//关闭蜂鸣器:低电平
GPIOF->BSRRH |= (1<<8);
// GPIOF->ODR &= ~(1<<8);
//打开蜂鸣器:高电平
// GPIOF->BSRRL |= (1<<8);
// GPIOF->ODR |= (1<<8);
}
2、test.c中关键代码
int main(void)
{
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
delay_init(168); //初始化延时函数
LED_Init(); //初始化LED时钟
BEEP_Init(); //初始化蜂鸣器端口
while(1)
{
LED0=0;
LED1=0;
BEEP=0;
delay_ms(300);
LED0=1;
LED1=1;
BEEP=1;
delay_ms(300);
}
}
代码下载
嵌入式软件开发 STM32F407 蜂鸣器 LED灯 寄存器版