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

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

程序员文章站 2022-03-16 11:13:57
基于STM32F407ZE开发板LED灯闪烁(使用寄存器操作,对GPIO引脚进行初始化)使用官方函数对GPOI初始化的版本:https://blog.csdn.net/weixin_43793181/article/details/109008629#include void delay_ms(int ms)//延时函数{int i,j;for(i=0; i

基于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

相关标签: STM32