STM32LED灯闪烁、流水灯、驱动蜂鸣器(使用寄存器操作,对GPIO引脚进行初始化)
程序员文章站
2022-09-16 21:47:25
基于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