3. Stm32f407 led代码简单分析

                                          3. Stm32f407 led代码简单分析

 

硬件平台:  stm32f407ve

软件平台:  win10 (OS Name:                   Microsoft Windows 10 Enterprise

                                  OS Version:                10.0.18363 N/A Build 18363)

             Keil5  5.26.2

             HAL库版本: 2.14.0(目前下载的最新的)

时间:   2020-02-09

 

实验介绍:

     本次是使用hal库进行led闪烁实验。(根据之前建立的模板操作,这里不再建立工程模板)

 

//包含基本的头文件

#include <stm32f4xx.h>

 

//led端口的初始化,需要设置对应得IO引脚为输出模式,

//HAL_GPIO_Init();主要是根据这个函数来决定要做得工作

void led_init(void)

{

GPIO_InitTypeDef GPIO_Init;  //定义一个结构体变量。

 

//1.时钟使能,在stm32的结构中,(片上)外部设备的使用第一步就是要设置时钟使能,复位之后,外部设备都是没有时钟的,降低了整个芯片的功耗,使能时钟,才表示外部设备可以正常工作了。

    //片上外部设备主要指芯片上除了cpu的其他功能电路

__HAL_RCC_GPIOE_CLK_ENABLE();  //GPIOE这个端口的电路被开启,整个GPIOE的16个引脚都可以正常工作了。

 

 

//2.端口设置

GPIO_Init.Mode = GPIO_MODE_OUTPUT_OD;  //输出开漏模式

GPIO_Init.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;  //需要配置的引脚

GPIO_Init.Pull = GPIO_PULLUP;    //上拉电阻

GPIO_Init.Speed = GPIO_SPEED_FREQ_LOW;   //IO引脚的工作频率,led的变化不会很快,使用低频率就足够了。

// GPIO_Init.Alternate = ;  //GPIO的mode设置位复用功能的时候,才会配置复用功能

HAL_GPIO_Init(GPIOE, &GPIO_Init);   //这个函数才是使之前配置的语句生效,之前是给结构体赋值

 

//3.点亮或熄灭灯

}

 

Main函数是c语言的入口函数

int main(void)

{

int i;

HAL_Init();  //必须在第一个语句执行,这个函数可以不执行,暂时不分析

 

led_init();  //上面提到的初始化IO端口为输出模式

 

while(1)   //循环翻转引脚的状态

{

HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_13);

for(i=0;i<1000000;i++)

  ;

// HAL_Delay(500);

}

}

 

也可以写成以下的样子,RESET表示输出低电平,SET表示输出高电平

 

 

 

 

这是一个SysTick定时器的中断处理函数,HAL_Init(); 这个函数初始化了systick,并且开启该定时器,使能了中断,所有需要使用这个处理一下。中断这个部分先可以放一放,后面将会说这个话题。

void SysTick_Handler(void)

{

HAL_IncTick();  //这个函数的源码只是将一个全局变量的值加1,这个中断是1ms发生一次,也就是说,没隔1ms全局变量就会被加1.根据这个全局变量的值,之后的HAL_Delay

函数会使用到这个全局变量。

}

 

 

 

github的工程源码:

https://github.com/zhaozhi0810/stm32f407_hal_keil5

 

 

 

 

 

发布了24 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhaozhi0810/article/details/104233536