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可以點亮了~