STM32F407 GPIO口输出配置配置步骤

stm32f407zgt6 是意法半导体(stmicroelectronics)公司推出的一款高性能arm cortex-m4核心的32位微控制器(mcu)。它是 stm32f4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域。

STM32F407 GPIO口输出配置配置步骤

【1】F407建工程所需依赖文件
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
【2】 新建工程
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤

说明:STM32F4 的主频最高是 168Mhz,所以我们一般设置 PLLCLK 为 168Mhz(M=8,N=336,P=2),通过 SW 选择 SYSCLK=PLLCLK即可得到 168Mhz 的系统运行频率。

【3】分析LED硬件原理图
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
【4】编写LED驱动代码

查看数据手册:

STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤

Led.c文件代码如下:

代码语言:javascript代码运行次数:0运行复制
#include "led.h"/*函数功能:LED初始化硬件连接:PF8-->BEEP  --高电平响PF9-->LED0  --低电平亮PF10->LED1  --低电平亮*/void LED_Init(void){/*1. 开时钟*/  RCC->AHB1ENR|=1<<5;//使能PORTF时钟  /*2. 配置GPIO口模式*/  GPIOF->MODER&=~(0x3<<8*2); //清除模式GPIOF->MODER|=0x1<<8*2;    //配置输出模式GPIOF->MODER&=~(0x3<<9*2); //清除模式GPIOF->MODER|=0x1<<9*2;    //配置输出模式GPIOF->MODER&=~(0x3<<10*2); //清除模式GPIOF->MODER|=0x1<<10*2;    //配置输出模式  /*3. 配置GPIO口输出类型*/GPIOF->OTYPER&=~(0x1<<8);  //0表示推挽输出GPIOF->OTYPER&=~(0x1<<9);  //0表示推挽输出GPIOF->OTYPER&=~(0x1<<10); //0表示推挽输出/*4. 配置GPIO口输出速度*/GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<8*2;    //50MHZ输出速度GPIOF->OSPEEDR&=~(0x3<<9*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<9*2;    //50MHZ输出速度GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<10*2;   //50MHZ输出速度/*5. 配置GPIO口输出默认电平*/GPIOF->ODR|=1<<10;   //输出1GPIOF->ODR|=1<<9;   //输出1GPIOF->ODR&=~(1<<8);  //输出0}

Led.h代码如下

代码语言:javascript代码运行次数:0运行复制
#ifndef _LED_H#define _LED_H#include "stm32f4xx.h"void LED_Init(void);#define LED0(x) if(x){GPIOF->ODR|=1<<9;}else{GPIOF->ODR&=~(1<<9);}#define LED1(x) if(x){GPIOF->ODR|=1<<10;}else{GPIOF->ODR&=~(1<<10);}#define BEEP(x) if(x){GPIOF->ODR|=1<<8;}else{GPIOF->ODR&=~(1<<8);}#endif

Main.c代码如下

代码语言:javascript代码运行次数:0运行复制
#include "stm32f4xx.h" // Device header#include "led.h"void DelayMs(u32 time){u32 a,b,c;for(a=0;a【5】编译代码 配置下载
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
STM32F407 GPIO口输出配置配置步骤
【6】编写无源蜂鸣器驱动代码

Delay.c延时函数代码

代码语言:javascript代码运行次数:0运行复制
#include "delay.h"/*功能  :毫秒级别的延时函数参数  :填入延时的时间返回值:无说  明:频率在168MHZ情况下使用*/void DelayMs(u32 time){u32 a,b,c;for(a=0;a

Led.c代码

代码语言:javascript代码运行次数:0运行复制
#include "led.h"/*函数功能:LED初始化硬件连接:PF8-->BEEP  --高电平响PF9-->LED0  --低电平亮PF10->LED1  --低电平亮*/void LED_Init(void){/*1. 开时钟*/  RCC->AHB1ENR|=1<<5;//使能PORTF时钟  /*2. 配置GPIO口模式*/  GPIOF->MODER&=~(0x3<<8*2); //清除模式GPIOF->MODER|=0x1<<8*2;    //配置输出模式GPIOF->MODER&=~(0x3<<9*2); //清除模式GPIOF->MODER|=0x1<<9*2;    //配置输出模式GPIOF->MODER&=~(0x3<<10*2); //清除模式GPIOF->MODER|=0x1<<10*2;    //配置输出模式  /*3. 配置GPIO口输出类型*/GPIOF->OTYPER&=~(0x1<<8);  //0表示推挽输出GPIOF->OTYPER&=~(0x1<<9);  //0表示推挽输出GPIOF->OTYPER&=~(0x1<<10); //0表示推挽输出/*4. 配置GPIO口输出速度*/GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<8*2;    //50MHZ输出速度GPIOF->OSPEEDR&=~(0x3<<9*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<9*2;    //50MHZ输出速度GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置GPIOF->OSPEEDR|=0x2<<10*2;   //50MHZ输出速度/*5. 配置GPIO口输出默认电平*/GPIOF->ODR|=1<<10;   //输出1GPIOF->ODR|=1<<9;   //输出1GPIOF->ODR&=~(1<<8);  //输出0}/*1/2000HZ=0.0005s=0.5ms=500us1/4000HZ=0.25ms控制蜂鸣器:产生2KHZ~5KHZ的方波即可*/void BEEP_Ctlrl(u8 cmd,u32 time){u8 i;if(cmd) //打开蜂鸣器{for(i=0;i

Mian.c主函数代码

代码语言:javascript代码运行次数:0运行复制
#include "stm32f4xx.h" // Device header#include "led.h"#include "delay.h"int main(void){u8 i;LED_Init();while(1){ i=!i; BEEP_Ctlrl(i,200);}}

关键词:gpio

网友留言(0 条)

发表评论