欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

STM32点亮流水灯、驱动蜂鸣器

程序员文章站 2022-06-26 18:32:07
基于STM32F407ZE开发板的点亮流水灯、驱动蜂鸣器LED原理图:蜂鸣器BEEP原理图:芯片原理图:①由LED原理图可知:4个LED灯对应的引脚分别为:LED0 、 LED1 、 FSMC_D10 、FSMC_D11②由蜂鸣器原理图可知:蜂鸣器对应的引脚为: BEEP③对照芯片原理图,找到对应的引脚:4个LED灯:PF9 — ---LED0PF10— ---LED1PE13— ---LED3PE14— ---LED4蜂鸣器:PF8— ---BEE...

基于STM32F407ZE开发板的点亮流水灯、驱动蜂鸣器
LED原理图:
STM32点亮流水灯、驱动蜂鸣器

蜂鸣器BEEP原理图:
STM32点亮流水灯、驱动蜂鸣器

芯片原理图:
STM32点亮流水灯、驱动蜂鸣器

①由LED原理图可知:4个LED灯对应的引脚分别为:LED0 、 LED1 、 FSMC_D10 、FSMC_D11
②由蜂鸣器原理图可知:蜂鸣器对应的引脚为: BEEP
③对照芯片原理图,找到对应的引脚:
4个LED灯: PF9 — --- LED0
PF10 — --- LED1
PE13 — --- LED3
PE14 — --- LED4
蜂鸣器: PF8 — --- BEEP

实现代码如下:

#include <stm32f4xx.h>

void delay_ms(int ms)									//延时函数
{
	int i,j;
	for(i=0; i<ms; i++)
		for(j=0; j<10000;j++);
}


int main()
{
	GPIO_InitTypeDef led1;
	GPIO_InitTypeDef led2;
	GPIO_InitTypeDef FM;
	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	led1.GPIO_Pin 	= GPIO_Pin_9 | GPIO_Pin_10;
	led1.GPIO_Mode 	= GPIO_Mode_OUT;
	led1.GPIO_Speed = GPIO_Fast_Speed;
	led1.GPIO_OType = GPIO_OType_PP;
	led1.GPIO_PuPd  = GPIO_PuPd_UP;
	GPIO_Init(GPIOF,&led1);
	
	led2.GPIO_Pin 	= GPIO_Pin_13 | GPIO_Pin_14;
	led2.GPIO_Mode 	= GPIO_Mode_OUT;
	led2.GPIO_Speed = GPIO_Fast_Speed;
	led2.GPIO_OType = GPIO_OType_PP;
	led2.GPIO_PuPd  = GPIO_PuPd_UP;
	GPIO_Init(GPIOE,&led2);
	
	FM.GPIO_Pin 	= GPIO_Pin_8;
	FM.GPIO_Mode 	= GPIO_Mode_OUT;
	FM.GPIO_Speed 	= GPIO_Fast_Speed;
	FM.GPIO_OType 	= GPIO_OType_PP;
	FM.GPIO_PuPd  	= GPIO_PuPd_UP;
	GPIO_Init(GPIOF,&FM);
	
	int t = 1;
	while(t)
	{
		GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);	//置位、高电平(关灯)
		GPIO_SetBits(GPIOE,GPIO_Pin_13 | GPIO_Pin_14);	//置位、高电平(关灯)
		
		GPIO_ResetBits(GPIOF,GPIO_Pin_9);				//复位、低电平(开灯)
		delay_ms(100);
		
		GPIO_SetBits(GPIOF,GPIO_Pin_9);					//置位、高电平(关灯)
		GPIO_ResetBits(GPIOF,GPIO_Pin_10);				//复位、低电平(开灯)
		delay_ms(100);
		
		GPIO_SetBits(GPIOF,GPIO_Pin_10);				//置位、高电平(关灯)
		GPIO_ResetBits(GPIOE,GPIO_Pin_13);				//复位、低电平(开灯)
		delay_ms(100);
		
		GPIO_SetBits(GPIOE,GPIO_Pin_13);				//置位、高电平(关灯)
		GPIO_ResetBits(GPIOE,GPIO_Pin_14);				//复位、低电平(开灯)
		
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);				//蜂鸣器引脚电平取反
		//GPIO_WriteBit(GPIOF,GPIO_Pin_8,1);			//蜂鸣器置1高电平
		//GPIO_SetBits(GPIOF,GPIO_Pin_8);				//蜂鸣器响起
		delay_ms(3);
		//GPIO_ResetBits(GPIOF,GPIO_Pin_8);				//蜂鸣器静音
		//GPIO_WriteBit(GPIOF,GPIO_Pin_8,0);			//蜂鸣器置0低电平
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);				//蜂鸣器引脚电平取反
		
		t++;
		if(t == 6)
		{
			t = 0;
			GPIO_SetBits(GPIOE,GPIO_Pin_14);
		}
	}
	return 0;
}

本文地址:https://blog.csdn.net/weixin_43793181/article/details/109008629

相关标签: STM32 gpio