当前位置: 移动技术网 > IT编程>开发语言>.net > STM32LED灯闪烁、流水灯、驱动蜂鸣器(使用寄存器操作,对GPIO引脚进行初始化)

STM32LED灯闪烁、流水灯、驱动蜂鸣器(使用寄存器操作,对GPIO引脚进行初始化)

2020年10月11日  | 移动技术网IT编程  | 我要评论
基于STM32F407ZE开发板LED灯闪烁(使用寄存器操作,对GPIO引脚进行初始化)使用官方函数对GPOI初始化的版本:https://blog.csdn.net/weixin_43793181/article/details/109008629#include <stm32f4xx.h>void delay_ms(int ms)//延时函数{int i,j;for(i=0; i<ms; i++)for(j=0; j<10000;j++)

基于STM32F407ZE开发板LED灯闪烁(使用寄存器操作,对GPIO引脚进行初始化)
使用官方函数对GPOI初始化的版本:https://blog.csdn.net/weixin_43793181/article/details/109008629

LED1 部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFF3FFFF;						//对寄存器操作
	GPIOF->MODER	|= 0x00040000;						//对寄存器操作
	
	
	GPIOF->OSPEEDR	&= 0xFFF3FFFF;
	GPIOF->OSPEEDR	|= 0x00080000;
	
	GPIOF->OTYPER	&= 0xFDFF;
	GPIOF->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFF3FFFF;
	GPIOF->PUPDR	|= 0x00040000;

	
	int t = 1;
	while(t)
	{
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		delay_ms(100);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

LED1 + 蜂鸣器部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFF0FFFF;
	GPIOF->MODER	|= 0x00050000;
	
	
	GPIOF->OSPEEDR	&= 0xFFF0FFFF;
	GPIOF->OSPEEDR	|= 0x000A0000;
	
	GPIOF->OTYPER	&= 0xFCFF;
	GPIOF->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFF0FFFF;
	GPIOF->PUPDR	|= 0x00050000;

	
	int t = 1;
	while(t)
	{
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		delay_ms(3);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

LED1 + LED2 + 蜂鸣器部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFC0FFFF;						//对寄存器进行操作
	GPIOF->MODER	|= 0x00150000;						//对寄存器进行操作
	
	
	GPIOF->OSPEEDR	&= 0xFFC0FFFF;
	GPIOF->OSPEEDR	|= 0x002A0000;
	
	GPIOF->OTYPER	&= 0xFAFF;
	GPIOF->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFC0FFFF;
	GPIOF->PUPDR	|= 0x00150000;

	
	int t = 1;
	while(t)
	{
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		delay_ms(3);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

LED1 + LED2 + LED3 + 蜂鸣器部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFC0FFFF;						//对寄存器进行操作
	GPIOF->MODER	|= 0x00150000;						//对寄存器进行操作
	GPIOE->MODER 	&= 0xF3FFFFFF;						//对寄存器进行操作
	GPIOE->MODER	|= 0x04000000;						//对寄存器进行操作
	
	
	GPIOF->OSPEEDR	&= 0xFFC0FFFF;
	GPIOF->OSPEEDR	|= 0x002A0000;
	GPIOE->OSPEEDR	&= 0xF3FFFFFF;
	GPIOE->OSPEEDR	|= 0x08000000;
	
	GPIOF->OTYPER	&= 0xFAFF;
	GPIOF->OTYPER	|= 0x0000;
	GPIOE->OTYPER	&= 0xDFFF;
	GPIOE->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFC0FFFF;
	GPIOF->PUPDR	|= 0x00150000;
	GPIOE->PUPDR	&= 0xF3FFFFFF;
	GPIOE->PUPDR	|= 0x04000000;

	
	int t = 1;
	while(t)
	{
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_13);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		delay_ms(3);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

LED1 + LED2 + LED3 + LED4 + 蜂鸣器部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFC0FFFF;						//对寄存器进行操作
	GPIOF->MODER	|= 0x00150000;						//对寄存器进行操作
	GPIOE->MODER 	&= 0xC3FFFFFF;						//对寄存器进行操作
	GPIOE->MODER	|= 0x14000000;						//对寄存器进行操作
	
	
	GPIOF->OSPEEDR	&= 0xFFC0FFFF;
	GPIOF->OSPEEDR	|= 0x002A0000;
	GPIOE->OSPEEDR	&= 0xC3FFFFFF;
	GPIOE->OSPEEDR	|= 0x28000000;
	
	GPIOF->OTYPER	&= 0xFAFF;
	GPIOF->OTYPER	|= 0x0000;
	GPIOE->OTYPER	&= 0x9FFF;
	GPIOE->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFC0FFFF;
	GPIOF->PUPDR	|= 0x00150000;
	GPIOE->PUPDR	&= 0xC3FFFFFF;
	GPIOE->PUPDR	|= 0x14000000;

	
	int t = 1;
	while(t)
	{
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_13);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_14);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		delay_ms(3);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

点亮LED流水灯 + 蜂鸣器部分

#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()
{	
	//先开启对应用到的模块时钟节拍
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	GPIOF->MODER 	&= 0xFFC0FFFF;						//对寄存器进行操作
	GPIOF->MODER	|= 0x00150000;						//对寄存器进行操作
	GPIOE->MODER 	&= 0xC3FFFFFF;						//对寄存器进行操作
	GPIOE->MODER	|= 0x14000000;						//对寄存器进行操作
	
	
	GPIOF->OSPEEDR	&= 0xFFC0FFFF;
	GPIOF->OSPEEDR	|= 0x002A0000;
	GPIOE->OSPEEDR	&= 0xC3FFFFFF;
	GPIOE->OSPEEDR	|= 0x28000000;
	
	GPIOF->OTYPER	&= 0xFAFF;
	GPIOF->OTYPER	|= 0x0000;
	GPIOE->OTYPER	&= 0x9FFF;
	GPIOE->OTYPER	|= 0x0000;
	
	
	GPIOF->PUPDR	&= 0xFFC0FFFF;
	GPIOF->PUPDR	|= 0x00150000;
	GPIOE->PUPDR	&= 0xC3FFFFFF;
	GPIOE->PUPDR	|= 0x14000000;

	GPIO_ToggleBits(GPIOF,GPIO_Pin_9);					//LED1关灯
	GPIO_ToggleBits(GPIOF,GPIO_Pin_10);					//LED2关灯
	GPIO_ToggleBits(GPIOE,GPIO_Pin_13);					//LED3关灯
	GPIO_ToggleBits(GPIOE,GPIO_Pin_14);					//LED4关灯	
		
	int t = 1;
	while(t)
	{
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_13);
		delay_ms(100);
		
		GPIO_ToggleBits(GPIOE,GPIO_Pin_13);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_14);
		delay_ms(100);
		GPIO_ToggleBits(GPIOE,GPIO_Pin_14);
		
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		delay_ms(3);
		GPIO_ToggleBits(GPIOF,GPIO_Pin_8);
		
		t++;
		if(t == 20)
		{
			t = 0;
		}
	}
	return 0;
}

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网