本文主要是介绍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可以点亮了~
这篇关于STM32F07ZGT6点亮第一颗LED灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!