bsp_led.h

#ifndef __LED_H
#define __LED_H#include "stm32f4xx.h"//引脚定义
/*******************************************************/
//红色灯 R
#define LED1_PIN                  GPIO_Pin_10                //GPIO引脚号
#define LED1_GPIO_PORT            GPIOH                      //GPIO端口H
#define LED1_GPIO_CLK             RCC_AHB1Periph_GPIOH       //GPIO端口时钟//绿色灯 G
#define LED2_PIN                  GPIO_Pin_11
#define LED2_GPIO_PORT            GPIOH
#define LED2_GPIO_CLK             RCC_AHB1Periph_GPIOH//蓝色灯 B
#define LED3_PIN                  GPIO_Pin_12
#define LED3_GPIO_PORT            GPIOH
#define LED3_GPIO_CLK             RCC_AHB1Periph_GPIOH
/************************************************************//** 控制LED亮灭的宏,* 低电平亮,ON=0,OFF=1,* 高电平亮,ON=1,OFF=0*/
#define ON  0
#define OFF 1/* 带参宏 */
#define LED1(a) if (a)  \GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);\else        \GPIO_ResetBits(LED1_GPIO_PORT,LED1_PIN)#define LED2(a) if (a)  \GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);\else        \GPIO_ResetBits(LED2_GPIO_PORT,LED2_PIN)#define LED3(a) if (a)  \GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);\else        \GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN)/* 直接操作寄存器的方法控制IO */
#define digitalHi(p,i)           {p->BSRRL=i;}      //输出高电平
#define digitalLo(p,i)           {p->BSRRH=i;}      //输出低电平
#define digitalToggle(p,i)       {p->ODR ^=i;}      //输出翻转状态/* 定义控制IO的宏 */
#define LED1_TOGGLE     digitalToggle(LED1_GPIO_PORT,LED1_PIN)  //翻转
#define LED1_OFF            digitalHi(LED1_GPIO_PORT,LED1_PIN)//关
#define LED1_ON             digitalLo(LED1_GPIO_PORT,LED1_PIN)//开#define LED2_TOGGLE     digitalToggle(LED2_GPIO_PORT,LED2_PIN)
#define LED2_OFF            digitalHi(LED2_GPIO_PORT,LED2_PIN)
#define LED2_ON             digitalLo(LED2_GPIO_PORT,LED2_PIN)#define LED3_TOGGLE     digitalToggle(LED3_GPIO_PORT,LED3_PIN)
#define LED3_OFF            digitalHi(LED3_GPIO_PORT,LED3_PIN)
#define LED3_ON             digitalLo(LED3_GPIO_PORT,LED3_PIN)/* 基本混色 */
//红
#define LED_RED  \LED1_ON;\LED2_OFF;\LED3_OFF//绿
#define LED_GREEN       \LED1_OFF;\LED2_ON;\LED3_OFF//蓝
#define LED_BLUE    \LED1_OFF;\LED2_OFF;\LED3_ON//黄
#define LED_YELLOW  \LED1_ON;\LED2_ON;\LED3_OFF
//紫
#define LED_PURPLE  \LED1_ON;\LED2_OFF;\LED3_ON//青
#define LED_CYAN \LED1_OFF;\LED2_ON;\LED3_ON//白
#define LED_WHITE   \LED1_ON;\LED2_ON;\LED3_ON//黑(全关)
#define LED_RGBOFF  \LED1_OFF;\LED2_OFF;\LED3_OFF        void LED_GPIO_Config(void); //定义LED-GPIO初始化配置函数#endif /* __LED_H */

bsp_led.c

  #include "./led/bsp_led.h"   /*** 初始化控制LED的IO*/
void LED_GPIO_Config(void)
{       /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_AHB1PeriphClockCmd ( LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK, ENABLE); /*设置引脚模式为输出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   /*设置引脚的输出类型为推挽输出*/GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;/*设置引脚为上拉模式*/GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;/*设置引脚速率为20MHz*/   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;/*选择要控制的GPIO引脚*/           GPIO_InitStructure.GPIO_Pin = LED1_PIN; /*调用库函数GPIO_Init,使用配置好的GPIO_InitTypeDef对GPIO端口初始化*/GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); /*选择要控制的GPIO引脚*/                       GPIO_InitStructure.GPIO_Pin = LED2_PIN; GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); //初始化端口/*选择要控制的GPIO引脚*/                           GPIO_InitStructure.GPIO_Pin = LED3_PIN; GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure); /*关灯*/LED_RGBOFF;
}
/*********************************************END OF FILE**********************/

嵌入式-stm32学习:使用固件库点亮LED相关推荐

  1. GD32F405RGT6固件库点亮LED

    GD32F405RGT6固件库点亮LED 趁着下班的功夫,把这几天熬夜针对这外设写好的库函数工程进行上传和一些叙述.哈哈哈哈 1.基于GD官方给的库工程的配置 一般的STM32F4的工程8M的外部晶振 ...

  2. stm32添加了固件库但是找不到h文件

    stm32添加了固件库但是找不到h文件 像我就会经常使用别的的工程,有时候在上面添加一个功能可能会遇见这种情况. . -\SYSTEM\adc\adc.c(12): error: #20: ident ...

  3. 【stm32cubeMX】使用HAL库点亮LED流水灯

    stm32cubeMX使用HAL库点亮LED流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 五.实现 六.参考资料 1.安装STM32CubeMX 官网下 ...

  4. 嵌入式开发学习笔记9-做一个好玩的LED闪烁

    嵌入式开发学习笔记9-做一个好玩的LED闪烁 前言 实际操作 程序功能 实现思路 程序源码 实现效果展示 前言 LED小灯闪烁实质是控制单片机上的I/O口,通过向I/O口循环输入高低电平,从而控制LE ...

  5. DSP(TMSF280049C)学习笔记2:点亮LED灯

    DSP(TMSF280049C)学习笔记2:点亮LED灯 实验目的:点亮Texas InstrumentsTMSF280049C开发板,LED0与GPIO23相连,下载到FLASH,具体代码如下: # ...

  6. 【STM32】手把手固件库开发工程建立

    再来复习一遍固件库开发方式的工程建立方法吧 -----针对STM32F10x系列(示例为F103C8T6,开发环境为MDK5) 目录 1 创建工程 2 在工程文件夹中手动创建四个文件夹 3 在固件库文 ...

  7. IAR FOR STM8 学习笔记 固件库 GPIO

    经过一番挣扎,还是决定使用官方的固件库了.. 从网上下一个STM8S的固件库,记得是FOR IAR的. 找到里面的IAR模板就可以开始用了. 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先 ...

  8. stm32cubeMX使用HAL库点亮LED流水灯

    系列文章目录 文章目录 系列文章目录 一.实验工具 二.STM32CubeMX生成代码使用HAL库点亮流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 三. ...

  9. zigbee学习之路(二)点亮LED

    一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...

  10. ESP-12S学习(2)--点亮LED

    跨过前面的一个烧录大坑,终于迎来自己的第一个小实验 一.工程下创建文件夹 这是我在调试的时候遇到的一个问题,串口打印的问题 我在调用uart_init()的时候报错没有定义,但是我明明就已经导入了ua ...

最新文章

  1. 全国计算机等级考试题库二级C操作题100套(第22套)
  2. python 元类 type_python Class:面向对象高级编程 元类:type
  3. 一览R基础包的六个高级绘图函数(盒型boxplot|条形barplot|直方hist|饼pie|dotchart|coplot)...
  4. 压测 mysql关闭连接_MySQL 压测
  5. android studio 修改文件后出现类型转换错误
  6. OpenShift 4 之获取版本升级路径图
  7. MATLAB图像生成函数Plot()总结
  8. 群集之 COROSYNC OPENAIS +PACEMAKER +REBD+WEB
  9. 2021年A特种设备相关管理(电梯)考试题库及A特种设备相关管理(电梯)证考试
  10. week15-字符串
  11. 弹幕有硬伤,转变主流成妄想
  12. 汉诺塔问题的总结(1)
  13. 史玉柱和他老同学的一段故事
  14. float取小数点后四位
  15. 微信小程序微商城(九):微信授权并实现个人中心页面页面
  16. 内部类有哪些好处?什么时候使用内部类
  17. 中国兽医参考实验室市场趋势报告、技术动态创新及市场预测
  18. 宋词欣赏 -- 李清照词全集
  19. 【华为交换机配置命令大全】
  20. 深度学习——深度学习发展历程

热门文章

  1. 自己建网站的步骤及方法
  2. Azure Tools---CAT(一)
  3. 输入阻抗和输出阻抗的理解
  4. 怎样在苹果Mac鼠标或触控板上复制和粘贴?
  5. 网络中的公网和内网 (ipv4)
  6. mac系统添加VSCode到右键菜单
  7. 微信小程序——视图层
  8. C. Balanced Stone Heaps
  9. Windows程式开发设计指南--Unicode简介
  10. 阿里百秀项目实战day1