野火霸天虎STM32F4笔记(四)——根据官方手册写固件库点灯程序

野火霸天虎STM32F407笔记(四)——根据官方手册写固件库点灯程序

一、根据官方手册写固件库程序

  1. #ifndef (条件编译)的作用
  • #ifndef 是在头文件使用,因为该头文件会被包含在很多.c文件中,该头文件里面肯定会定义一些宏定义,如果多个文件包含它的话,这些宏就会被重复定义,就会出错。

1.编写步骤

  1. 在建立的头文件中包含寄存器映射头文件
#ifndef _BSP_LED_H  
#define _BSP_LED_H

//要驱动LED,就要用到GPIO,就要编程这个GPIO,涉及到寄存器编程,就要映射该头文件
#include "stm32f4xx.h"


#endif   //
  1. 开始写程序,写一个函数操作GPIO,用之前需要初始化,所有的初始化可以简单的总结为四个部分:
  • 第一步:开外设的时钟

    • 时钟是由RCC控制的,首先找到RCC的文件,这里先以GPIO为例,先在参考手册中找到GPIO对应的是哪个总线。(在存储器组织结构里面找),是AHB1告诉总线上
      在这里插入图片描述

    • 在参考手册上找到RCC寄存器说明,以前用的是寄存器,现在来介绍怎么用固件库。在RCC头文件里找到初始化函数。将声明的函数放入.c文件中,配置形参

    在这里插入图片描述

  • 第二步:定义一个外设初始化结构体(在GPIO头文件里面)先找到GPIO.c文件,在该文件里面进入头文件

  • 第三步:配置GPIO初始化结构体的成员

    在这里插入图片描述

    • 有了结构体,就要定义成员了,这里我们要点亮红灯(PF6)(这里是根据原理图来的)

    在这里插入图片描述

    在这里插入图片描述

    • 接下来是模式成员定义,配置为输入模式,找到该枚举定义

    在这里插入图片描述

    在这里插入图片描述

    • 接下来是端口输出类型,是开漏(I2C,sm)还是推挽,这里是推挽,应该是配置成0这个寄存器。

    在这里插入图片描述

    在这里插入图片描述

    • 接下来设置输出速率,这个主要是影响功耗,我们配置最低即可。

    在这里插入图片描述

    • 最后一个就是配置是上拉还是下拉,这里先配置上拉。

    在这里插入图片描述

  • 第四步:调用GPIO初始化函数,把配置好的结构体成员的参数写入寄存器

  • main.c

#include "stm32f4xx.h"   //最基本的寄存器映射头文件
#include "bsp_led.h"

void Delay(uint32_t count)
{
	for( ;count != 0;count--);

}


int main(void)
{
	/*在这里添加自己的程序*/
	LED_GPIO_Config();

	
	//为了程序上电运行的时候程序不会乱飞,先写一个死循环,在程序运行到此处时停住
	while (1)   //红灯闪烁
	{
		
		GPIO_ResetBits(GPIOF, GPIO_Pin_6);    //亮
		Delay(0xffffff);
		GPIO_SetBits(GPIOF, GPIO_Pin_6);      //灭
		Delay(0xffffff);
	
	}
}
  • bsp_led.c
//bsp  :board suppurt package 扳级支持包

#include "bsp_led.h"

void LED_GPIO_Config()   
{
	//所有的外设初始化都可以简单的总结为四部分
	//第一步:开GPIO时钟(时钟是由RCC控制的)
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	//第二步:定义一个GPIO初始化结构体
	GPIO_InitTypeDef GPIO_InitStruct;
	
	//第三步:配置GPIO初始化结构体成员
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;  //这里GPIO_Pin_6也是根据gpio的头文件来的

	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT ;  //配置为输入模式
	
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP ; //推挽输出
	
	GPIO_InitStruct.GPIO_Speed = GPIO_Low_Speed ; //配置最低的功耗
	
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP ;  //配置上拉
	
	//第四步:调用GPIO初始化函数,把配置好的结构体成员的参数写入寄存器中
	GPIO_Init(GPIOF, &GPIO_InitStruct);
	
	

}
  • bsp_led.h
#ifndef _BSP_LED_H  
#define _BSP_LED_H

//要驱动LED,就要用到GPIO,就要编程这个GPIO,涉及到寄存器编程,就要映射该头文件
#include "stm32f4xx.h"
//#include "stm32f4xx_gpio.h"
void LED_GPIO_Config(void);

#endif   //


  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 野火STM32F407是一种基于STM32F407芯片的开发板,例程是该开发板的一套示例代码。 例程包含了多个例子,覆盖了多个功能模块。例如:LED灯的控制、按键输入的检测、蜂鸣器的控制、ADC模数转换的实验、PWM输出的实验、定时器的使用等。 在野火STM32F407例程中,用户可以根据自己的需求,选择相应的例程进行学习和应用。每个例程都有详细的代码注释,方便用户理解和修改。 野火STM32F407例程的优势在于其丰富的功能和简单易用的操作。用户无需从零开始编代码,只需要按照例程的要求连接硬件,然后将对应的例程下载到开发板上即可实现相应的功能。 除了例程本身,野火还提供了丰富的资料和技术支持,如开发板原理图、用户手册、视频教程等。这些资源对于初学者来说非常重要,能够帮助他们更好地学习和应用例程。 总之,野火STM32F407例程是一套功能强大、简单易用的示例代码,适用于学习STM32F407芯片和开发板的人群。无论是初学者还是有一定经验的开发者,都可以从中获得很多实用的知识和经验。 ### 回答2: 野火STM32F407例程是针对野火开发板上的STM32F407芯片编的一段示例代码。野火公司为该开发板设计的一款功能强大的处理器模块。 野火STM32F407例程提供了多种实用功能的示例代码,包括LED灯控制、按键输入、串口通信、PWM输出等。这些例程可以帮助开发者快速熟悉和上手野火开发板,并且可以作为开发基础,用于二次开发和调试。 例如,LED灯控制的例程可以通过修改代码中的参数来控制野火开发板上的LED灯的亮灭状态,可以用于验证开发板的硬件功能是否正常。按键输入的例程可以通过读取按键状态,实现按键事件的响应,例如控制电机的启动或停止等。串口通信的例程可以帮助开发者与外部设备进行数据交互,例如通过串口与电脑进行通信、发送调试信息等。PWM输出的例程可以生成特定的脉冲信号,用于控制伺服电机或产生PWM波形等。 野火STM32F407例程在开发者社区中广泛使用,具有丰富的示例代码和详细的注释,方便开发者学习和理解。同时,野火还提供了相关的开发文档和技术支持,帮助开发者快速解决问题和进行开发工作。如果对例程中的代码有修改需求,开发者可以根据自己的需求进行二次开发,实现更加复杂的功能。 总之,野火STM32F407例程是一段功能丰富、易于上手的示例代码,帮助开发者快速入门STM32F407开发板,并且可以作为开发基础和参考,用于二次开发和应用。 ### 回答3: 野火STM32F407例程是针对STMicroelectronics公司推出的STM32F407核心板进行开发的一套示例程序。 该例程采用了野火提供的开发环境Keil5进行开发,可以通过野火官方网站下载源代码和相应的开发工具。 野火STM32F407例程包含了一系列的示例程序,用于演示和说明STMicroelectronics STM32F407核心板的各种功能和特性。这些例程涵盖了从基本的GPIO控制、外部中断、定时器、PWM输出,到更复杂的USART、SPI、I2C、SD卡等外设的使用。 除了基本的外设操作示例,野火STM32F407例程还提供了一些有趣的案例,如LED点阵显示、触摸屏控制、摄像头采集、音频播放等,帮助开发者更好地理解和应用该核心板。同时,这些案例程序也可以作为开发者学习和扩展的起点,根据自己的需求进行修改和优化。 野火STM32F407例程是为了方便开发者快速上手STM32F407核心板而设计的,它提供了一种简单、直观的学习方式,通过代码实例的演示,帮助开发者深入了解STM32F407核心板的各项功能和使用方法。 总之,野火STM32F407例程是一套详尽而实用的示例程序,适用于想要学习和开发STM32F407核心板的开发者,通过这些例程的学习和实践,可以更好地掌握和应用STM32F407的各种功能,提高开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值