0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F407入门开发: GPIO口输出配置

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-05-28 13:54 次阅读

第一章F407建工程所需依赖文件

image.pngimage.pngimage.pngimage.pngimage.pngimage.png

第二章 新建工程

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

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

第三章分析LED硬件原理图

image.pngimage.pngimage.png

第四章 编写LED驱动代码

查看数据手册:

image.pngimage.png

Led.c文件代码如下:

#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;   	//输出1
	GPIOF->ODR|=1<<9;   	//输出1
	GPIOF->ODR&=~(1<<8);  //输出0
}
复制代码

第五章 编译代码 配置下载

image.pngimage.pngimage.png

第六章 编写无源蜂鸣器驱动代码

Delay.c延时函数代码


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

Led.c代码


#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;   	//输出1
	GPIOF->ODR|=1<<9;   	//输出1
	GPIOF->ODR&=~(1<<8);  //输出0
}

/*
1/2000HZ=0.0005s=0.5ms=500us
1/4000HZ=0.25ms
控制蜂鸣器:产生2KHZ~5KHZ的方波即可
*/
void BEEP_Ctlrl(u8 cmd,u32 time)
{
	u8 i;
	if(cmd) //打开蜂鸣器
	{
		for(i=0;i;i++)>

Mian.c主函数代码


#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);
	}
}
复制代码

第七章 LED呼吸灯示例

#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"

int main(void)
{
		u32 i,k=1000;
		LED_Init();
		while(1)
		{
			 for(i=0;i;i++)>

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 输出
    +关注

    关注

    0

    文章

    90

    浏览量

    21810
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51896
  • STM32F407
    +关注

    关注

    15

    文章

    187

    浏览量

    29364
收藏 人收藏

    评论

    相关推荐

    STM32F407 GPIO输出配置配置步骤

    STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域
    的头像 发表于 07-06 14:27 1753次阅读
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>GPIO</b><b class='flag-5'>口</b><b class='flag-5'>输出</b><b class='flag-5'>配置</b><b class='flag-5'>配置</b>步骤

    STM32F407 GPIO输入配置配置步骤

    介绍STM32F407新建寄存器工程流程,介绍输入模式的配置方式,以按键为例完成按键输入检测。
    的头像 发表于 07-06 14:28 2100次阅读
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>GPIO</b><b class='flag-5'>口</b>输入<b class='flag-5'>配置</b><b class='flag-5'>配置</b>步骤

    STM32F407 串口配置步骤

    介绍STM32F407配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
    的头像 发表于 07-06 14:29 2939次阅读
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b>步骤

    STM32F407 位带配置步骤

    介绍STM32F407位带操作方法,设置寄存器的偏移量,实现按GPIO指定位进行读写操作,方便编程。
    的头像 发表于 07-06 14:30 1171次阅读
    <b class='flag-5'>STM32F407</b> 位带<b class='flag-5'>配置</b>步骤

    stm32f407通信的代码

    stm32f407通信的代码 原理图还有封装 很清楚自己画的
    发表于 03-21 17:22 0次下载

    STM32F407 UCOS III实验

    STM32F407 UCOS III实验,介绍基于STM32F407的UCOSIII实例,参考下
    发表于 09-22 14:08 82次下载

    STM32F407 开发板原理图

    STM32F407 开发板原理图
    发表于 09-22 16:12 393次下载
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>开发</b>板原理图

    [STM32]STM32F407系列教程之二,gpio输入输出实验

    [STM32]STM32F407系列教程之二,gpio输入输出实验
    发表于 11-29 14:06 19次下载
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32F407</b>系列教程之二,<b class='flag-5'>gpio</b>输入<b class='flag-5'>输出</b>实验

    STM32F407的串口UART 基础配置STM32CubeMX

    STM32F407的串口UART 基础配置STM32CubeMX
    发表于 11-29 16:06 54次下载
    <b class='flag-5'>STM32F407</b>的串口UART 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32F407开发板用户手册】第1章   初学STM32F407的准备工作

    STM32F407开发板用户手册】第1章   初学STM32F407的准备工作
    发表于 12-04 13:36 75次下载
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>开发</b>板用户手册】第1章   初学<b class='flag-5'>STM32F407</b>的准备工作

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
    发表于 12-04 13:51 21次下载
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>开发</b>板用户手册】第21章 <b class='flag-5'>STM32F407</b>的NVIC中断分组和<b class='flag-5'>配置</b>(重要)

    STM32F407开发板用户手册】第19章 STM32F407GPIO应用之按键FIFO

    STM32F407开发板用户手册】第19章 STM32F407GPIO应用之按键FIFO
    发表于 12-05 15:21 39次下载
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>开发</b>板用户手册】第19章 <b class='flag-5'>STM32F407</b>的<b class='flag-5'>GPIO</b>应用之按键FIFO

    STM32F407入门开发: 配置定时器输出PWM方波

    STM32F407的定时器的 TIM6 和 TIM7 是普通定时器,除此之外,其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM
    的头像 发表于 05-28 13:43 1.5w次阅读
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入门开发</b>: <b class='flag-5'>配置</b>定时器<b class='flag-5'>输出</b>PWM方波

    STM32F407入门开发: 位带操作

    STM32F407的位带操作可以实现类似51单片机中寄存器的操作方法,操作GPIO代码简洁方便。 关于位段的操作在Cortex-M3M4权威指南里有详细描述:
    的头像 发表于 05-28 13:50 3592次阅读
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入门开发</b>: 位带操作

    STM32F407入门开发: 串口配置

    STM32F407 的串口资源非常丰富,功能也很强劲。 STM32F407 最多可提供 6 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡
    的头像 发表于 05-28 13:51 1.1w次阅读
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入门开发</b>: 串口<b class='flag-5'>配置</b>