STM32基础和简单实现led的亮灭

在这里插入图片描述

既然是通过库来操作这些GPIO,那么我们就得对库函数有所了解。在3.5的库中,有一个初始化的函数GPIO_Init(GPIO_TypeDef*
GPIOx, GPIO_InitTypeDef* GPIO_InitStruct
),可以通过这个函数对GPIO进行初始化。我们可以看到,在这个函数中,有一个形参类型是GPIO_InitTypeDef,这个类型事实上是一个结构体类型,这个类型的原型就是:

typedef struct{

uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; 通过这个结构体原型我们可以看出,GPIO_InitTypeDefy这个结构体有三个参数

GPIO_Pin; 用来设置要选择的Pin口。

GPIO_Speed; 用来设置IO的速率。

GPIO_Mode; 用来选择要设置的IO模式。
需要对这个结构体的三个属性进行设置
例:

void LED_Init (){
  GPIO_InitTypeDef GPIO_InitStructure;
    
    SystemInit();    //系统时钟初始化
    RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOC, ENALBE );
    
    //配置GPIO的模式和IO口
    GPIO_InitStructure.GPIO_Pin = LED;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //设置IO速率
    GPIO_Init ( GPIOC, &GPIO_InitStructure );          //GPIO初始化
    
}

当有了这个LED初始化函数之后,我们只要在写一个闪烁函数就行了。所谓闪烁,其实就是LED亮一段时间,LED灭一段时间,这个步骤不断重复。LED亮其实就是给二极管阴极一个低电平,LED灭其实就是给二极管阴极一个高电平。那么,代码如下:

void led_display(){
 
    GPIO_SetBits ( GPIOC, LED );
    delay ( 6000000 );    //约为1s
    GPIO_ResetBits ( GPIOC, LED );
    delay ( 6000000 );    //约为1s
}
``此刻添加一个主函数就可以调用了

```cpp
#include "stm32f01x.h"
#include "led.h"
 
int main()
{
    LED_Init();
    
    while ( 1 ){
    
        led_display();
    }
 
}`

这就是最简单的实现led灯的亮灭。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值