stm32项目之点灯实验

1.硬件

通过查看原理图,我们可以找到我们需要使用的管脚。通过原理图,我们可以看出,LED的两个灯,分别对应着PE5,PB5两个管脚。

 

 2.配置GPIO

确定了引脚,我们就要去配置相应的寄存器,使用这些外设了。两个LED分别对应着GPIOB,GPIOE的5引脚,我们需要去初始化GPIOB/E。初始化GPIO,初学者可以把它当成就是一个模板,本质就是配置结构体,去配置这个结构体然后通过相应的函数去初始化相应的寄存器。(如果对初始化那些寄存器感兴趣的同学,可以去看看STM32的中文参考手册)。

GPIO_InitTypeDef  GPIO_InitStructure;

   //使能PB,PE端口时钟  

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); 

    

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;               //LED0-->PB.5 端口配置

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       //IO口速度为50MHz

 GPIO_Init(GPIOB, &GPIO_InitStructure);                  //根据设定参数初始化GPIOB.5

//下面这个初始化GPIOE,其实和上面GPIOB的是一样的,唯一不同的地方就是GPIO类型不一样。

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;               //LED1-->PE.5 端口配置, 推挽输出

 GPIO_Init(GPIOE, &GPIO_InitStructure);                  //推挽输出 ,IO口速度为50MHz

 3.使用LED

3.1.方法一:原生的函数

上面的代码已经初始化好了LED,我们使用其实可以通过GPIO提供的函数去控制这些GPIO的管脚信息。

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); //置0

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); //置1

 3.2.自定义宏

自定义宏,其实先自定义函数,在自定义函数里面使用的是标准库给我们提供的函数接口,只不过我们进行了一层封装。(如果简单的,就可以不使用自定义函数了,在宏里面自己调用标准库的函数,使用自定义函数主要是提高宏代码的可读性)

#define LED0(x)   (x ? GPIO_SetBits(GPIOB, GPIO_Pin_5) : GPIO_ResetBits(GPIOB, GPIO_Pin_5) ) // PB5
#define LED1 (x ? GPIO_SetBits(GPIOE, GPIO_Pin_5) : GPIO_ResetBits(GPIOE, GPIO_Pin_5) )   // PE5	

这样子封装好之后,我们直接使用这个宏就可以了,方便使用了很多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值