1. RGB彩灯混色

RGB彩灯实际上由三盏分别为红、绿、蓝的LED灯组成的,通过控制RGB颜色强度的组合,可以混合出各种彩色。


/* 基本混色*/// LED1(R)/ LED2(G)/ LED3(B)//红
#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

2. 控制流程

  • 初始化系统时钟
  • 初始化相应GPIO时钟
  • 配置GPIO
  • 根据需要亮灯

3. 断言

stm32f4xx_conf.h文件中关于断言的定义

/* Uncomment the line below to expanse the "assert_param" macro in the Standard Peripheral Library drivers code */
/* #define USE_FULL_ASSERT    1 *//* Exported macro ------------------------------------------------------------*/
#ifdef  USE_FULL_ASSERT/*** @brief  The assert_param macro is used for function's parameters check.* @param  expr: If expr is false, it calls assert_failed function*   which reports the name of the source file and the source*   line number of the call that failed. *   If expr is true, it returns no value.* @retval None*/#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */void assert_failed(uint8_t* file, uint32_t line);
#else#define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

库文件只对“assert_failed”写了函数声明,没有写函数定义,实际用时需要用户来定义,我们一般会用printf函数来输出这些信息。(注:前提需要支持printf)

4. Doxygen注释

“Doxygen”的注释规范,如果在工程文件中按照这种规范去注释,可以使用Doxygen软件自动根据注释生成帮助文档。

秉火429笔记之五控制RGB彩灯相关推荐

  1. 秉火429笔记之八 RCC时钟

    目录 1. RCC 作用概述 2. RCC框图剖析-时钟树 3. 编程要点 4. 源码实例 1. RCC 作用概述 RCC :reset clock control 复位和时钟控制器. 设置系统时钟S ...

  2. 秉火429笔记之十八 ETH--以太网

    目录 1. 以太网简介 2.  SMI 接口 (站管理接口) 2.1 SMI帧格式 2.2 SMI 读写操作 3. MII 和 RMII接口 4. MAC 802.3 4.1 MAC 802.3 帧格 ...

  3. 秉火429笔记之十七 SPI--操作FLASH

    目录 1. SPI协议概述 2. STM32 SPI特性及架构 2.1 SPI外设简介 2.2 STM32的SPI架构剖析 2.2.1 通讯引脚 2.2.2 时钟控制逻辑 2.2.3 数据控制逻辑 3 ...

  4. 秉火429笔记之十四 USART--串口通信

    目录 1. 串口通讯协议简介 1.1 物理层 1.2 协议层 2  ST USART 2.1 功能引脚 2.2 重要状态 2.3 编程要点 2.4 代码实例 1. 串口通讯协议简介 串口通讯(Seri ...

  5. 秉火429笔记之九 中断应用概述

    目录 1. 中断类型 2. NVIC 概述 3.  中断优先级 4. 优先级分组 5. 编程要点 1. 中断类型 在此不严格区分中断和异常,即简单的认为中断与异常一个概念. M4 内核搭载了异常响应系 ...

  6. 秉火429笔记之三GPIO框图剖析

    目录 1. GPIO概述 2.保护二极管及上.下拉电阻 3. P-MOS管和N-MOS管 1. GPIO概述 GPIO是通用输入输出端口(General-purpose I/O)的简称.芯片的GPIO ...

  7. 秉火429笔记之十三 通信基本概念

    目录 1. 串口通讯与并口通讯 2. 全双工.半双工及单工通讯 3. 同步通讯与异步通讯 4. 通信速率 1. 串口通讯与并口通讯 按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间 ...

  8. 秉火429笔记之十一 Systick--滴答定时器

    目录 1. 概述 2. 寄存器说明 3. 编程要点 4. 实例代码 SysTick-系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中.系统定时器是一个24bit的向下递减的计数器.所有基于CM ...

  9. 秉火429笔记之十六 I2C--操作EEPROM

    目录 1. I2C 概述 2. 硬件设计 3. 代码实现 1. I2C 概述 参考该链接,不在赘述:https://blog.csdn.net/XieWinter/article/details/91 ...

最新文章

  1. 医学图像分割--Stacked fully convolutional networks with multi-channel learning
  2. html5语音对讲,c#语音对讲demo
  3. 了解spring大家族
  4. 单元测试instrumentation入门---eclipse
  5. Go 语言运行时环境变量快速导览
  6. java之IO流(一)
  7. 文献记录(part92)--Graph regularized low-rank representation for submodule clustering
  8. java中的equals用法
  9. Api demo源码学习(8)--App/Activity/QuickContactsDemo --获取系统联系人信息
  10. 利用云计算打造政务信息化及应急指挥云平台
  11. SVN中Branch/tag的比较
  12. 一个小故事读懂Memcached漏洞
  13. idea的黄色感叹号之Spring Configuration Check (Please configura/setup Spring facet for modules)
  14. 如何将十进制转化为二进制和十六进制
  15. python中返回上一步操作的快捷键_在计算机中返回上一步的快捷键
  16. 如何开启全新旅途,实现旅游市场活力复苏
  17. 【C语言 基础】函数的形参与实参
  18. 六、系统架构 - 高可用架构设计
  19. 材料研究生转行做什么?
  20. Windows计算机与便携式显示器

热门文章

  1. arcgis python字段计算器_计算字段示例—帮助 | ArcGIS for Desktop
  2. p5.js 光速入门中文教程
  3. 优麒麟 配置java_优麒麟中安装虚拟机(ARM64)
  4. 苹果酱的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. Alpha多样性之箱线图解读
  6. c语言编程16个点阵跳动的心,Arduino点阵制作跳动的心
  7. Suzy找到实习了吗 | 字符串结束啦 今天学习kmp 题还没做!!!记得回来补!!!
  8. 22款奔驰C260升级ACC自适应巡航,高速省心不少
  9. 拥抱POL正当时,这里有四个故事五个理由
  10. (七)如何使用Eclipse打开已有工程