1. 程式人生 > >STM32F07ZGT6點亮第一顆LED燈

STM32F07ZGT6點亮第一顆LED燈

關於點亮led燈,相信大家在接觸微控制器的時候早已聽膩了,不多說,現在開始點亮第一顆led。

對於stm32f4,它擁有很多

很多32位的暫存器,我們需要通過暫存器去控制。

1、普通io口進行初始化設定

①使能IO所在的時鐘匯流排

此處以PF9為例

RCC->AHB1ENR|=1<<5;

下圖是AHB1ENR暫存器對應的位

我們需要使能GPIOFEN

②、初始化IO口

  GPIOF->MODER&=~(3<<(2*9));      //對GPIOF9模式位進行清零

GPIOF->MODER|=1<<(2*9);            //設定GPIOF9為輸出模式

  GPIOF->OTYPER|=~(1<<(2*9));//設定IO口型別為推輓輸出

若為輸出推輓也可不設定此位

GPIOF->OSPEEDR&=~(3<<(2*9));     //設定IO輸出速度

 GPIOF->ODR|=1<<9;      //對IO口寫電平高

至此對GPIOF9的初始化設定完成了。

初始化函式如下:

void PF9_Init(void)

{

 RCC->AHB1ENR|=1<<5;    //使能時鐘   GPIOF->MODER&=~(3<<(2*9));  //清零模式位   GPIOF->MODER|=1<<(2*9);     //對模式位寫1,設定為輸出模式   GPIOF->OTYPER|=~(1<<(2*9));        //設定輸出型別為推輓輸出   GPIOF->OSPEEDR&=~(3<<(2*9));     //設定io口速度為低速 GPIOF->ODR|=1<<9;                           //將IO的電平拉高

}

至此初始化IO已經完成。

接下來我們在標頭檔案定義三個巨集定義

注意此處PF9低電平的時候LED亮!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#define LED_ON     GPIOF->BSRRH|=1<<9                    //將電平拉低(復位埠暫存器) #define LED_OFF    GPIOF->BSRRL|=1<<9                    //將電平拉高(置位埠暫存器) #define LED_XOR    GPIOF->ODR|=1<<9                       //取反

接下來寫我們的main函式

首先我們需要把<stm32f4xx.h>寫進去

#include "led.h" #include "stm32f4xx.h"

void Delay_ms(u32 ms);

int main(void)

{

PF9_Init();

while(1)

{

LED_XOR;

Delay_ms(500);

}

}

void Delay_ms(u32 ms)//不精確定時 { ms=ms*40000;

while(ms--);

}

LED可以點亮了~