利用固件库点亮LED灯

利用固件库点亮LED灯

  1. 新建工程模板
    利用固件库新建工程模板和之前记录的利用寄存器的不同,所以在这里进行记录说明。
    首先新建一个空的文件夹,用来放固件库的资料,在空的文件夹中新建下面图上的几个文件夹。其中Doc文件夹用来放关于本程序的说明,Libraries文件夹用来存放固件库中的启动文件和外设有关的文件,Project文件夹中存放的是工程文件,User文件夹中存放的是有关于用户编写的文件和系统文件,具体如下所示:
    固件库文件夹
    Doc文件夹
    DOC文件夹
    Libraries文件夹
    Libraries文件夹
    CMSIS文件
    CMSIS文件
    外设文件夹
    外设文件夹
    User文件夹
    User文件夹
    到这里文件夹已经建设完成,下一步就是新建工程,然后在工程中把我们已经新建好的.c文件加入到工程中。
    工程中的文件夹加下来我们在配置头文件的路径,让文件读取到.h文件
    配置头文件
    插入头文件
    进行相应的宏定义。
    去
    到这里新建固件库的工程才算结束,可以进行代码的编写了.
  2. 代码,下面的代码是实现,点亮LED灯的代码
//初始化GPIO
void LED_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
  
  GPIO_Init(GPIOB,&GPIO_InitStruct);
}
int main(void)
{
  LED_GPIO_Config();
  GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
  1. 使用宏定义的方式进行改正,这样变换外设的时候就可以只修改宏定义。
  2. 在下面的这段代码中,我们把引脚连接的PB0用宏定义的形式进行了重命名。
//绿灯
#define LED_G_GPIO_Pin GPIO_Pin_0
#define LED_G_GPIO_PORT GPIOB
#define LED_G_GPIO_CLOCK RCC_APB2Periph_GPIOB

这段代码中我们宏定义了一个常量,用来控制LED的开关。

#define ON 1
#define OFF 0
//LED_G(ON)代表绿灯亮,LED_G(OFF)代表绿灯灭
#define LED_G(a) if (a)\
                   GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_Pin);\
                 else \
                   GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_Pin);

用宏定义的方式用来实现那个灯被点亮

#define LED_RED LED_G(OFF);LED_B(OFF) LED_R(ON) 
#define LED_GREEN LED_G(ON);LED_B(OFF) LED_R(OFF) 
#define LED_BLUE LED_G(OFF);LED_B(ON) LED_R(OFF) 

这样就可以在程序中用简单的代码实现LED灯的循环点亮。

int main(void)
{
  LED_GPIO_Config();
  while(1)
  {
     LED_RED;
     delay(10000000);
     LED_GREEN;
     delay(10000000);
     LED_BLUE;
     delay(10000000);
  }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值