总结
豆包 AI 助手文章总结

STM32F407 GPIO口输出配置配置步骤

星夢妙者
发布: 2025-04-24 18:36:23
原创
375人浏览过

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

【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<time;a++)for(b=0;b<100;b++)for(c=0;c<450;c++);}int main(void){LED_Init();while(1){LED0(0);LED1(0);//BEEP(0);DelayMs(1000);LED0(1);LED1(1);//BEEP(1);DelayMs(1000);}}
登录后复制
【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<time;a++)for(b=0;b<100;b++)for(c=0;c<450;c++);}/*功能  :微秒级别的延时函数参数  :填入延时的时间返回值:无说  明:频率在168MHZ情况下使用*/void DelayUs(u32 time){u32 k;while(time--){k=40;while(k--);}}
登录后复制

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);}}
登录后复制

以上就是STM32F407 GPIO口输出配置配置步骤的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号