秉火429笔记之五控制RGB彩灯
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彩灯相关推荐
- 秉火429笔记之八 RCC时钟
目录 1. RCC 作用概述 2. RCC框图剖析-时钟树 3. 编程要点 4. 源码实例 1. RCC 作用概述 RCC :reset clock control 复位和时钟控制器. 设置系统时钟S ...
- 秉火429笔记之十八 ETH--以太网
目录 1. 以太网简介 2. SMI 接口 (站管理接口) 2.1 SMI帧格式 2.2 SMI 读写操作 3. MII 和 RMII接口 4. MAC 802.3 4.1 MAC 802.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 ...
- 秉火429笔记之十四 USART--串口通信
目录 1. 串口通讯协议简介 1.1 物理层 1.2 协议层 2 ST USART 2.1 功能引脚 2.2 重要状态 2.3 编程要点 2.4 代码实例 1. 串口通讯协议简介 串口通讯(Seri ...
- 秉火429笔记之九 中断应用概述
目录 1. 中断类型 2. NVIC 概述 3. 中断优先级 4. 优先级分组 5. 编程要点 1. 中断类型 在此不严格区分中断和异常,即简单的认为中断与异常一个概念. M4 内核搭载了异常响应系 ...
- 秉火429笔记之三GPIO框图剖析
目录 1. GPIO概述 2.保护二极管及上.下拉电阻 3. P-MOS管和N-MOS管 1. GPIO概述 GPIO是通用输入输出端口(General-purpose I/O)的简称.芯片的GPIO ...
- 秉火429笔记之十三 通信基本概念
目录 1. 串口通讯与并口通讯 2. 全双工.半双工及单工通讯 3. 同步通讯与异步通讯 4. 通信速率 1. 串口通讯与并口通讯 按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间 ...
- 秉火429笔记之十一 Systick--滴答定时器
目录 1. 概述 2. 寄存器说明 3. 编程要点 4. 实例代码 SysTick-系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中.系统定时器是一个24bit的向下递减的计数器.所有基于CM ...
- 秉火429笔记之十六 I2C--操作EEPROM
目录 1. I2C 概述 2. 硬件设计 3. 代码实现 1. I2C 概述 参考该链接,不在赘述:https://blog.csdn.net/XieWinter/article/details/91 ...
最新文章
- 医学图像分割--Stacked fully convolutional networks with multi-channel learning
- html5语音对讲,c#语音对讲demo
- 了解spring大家族
- 单元测试instrumentation入门---eclipse
- Go 语言运行时环境变量快速导览
- java之IO流(一)
- 文献记录(part92)--Graph regularized low-rank representation for submodule clustering
- java中的equals用法
- Api demo源码学习(8)--App/Activity/QuickContactsDemo --获取系统联系人信息
- 利用云计算打造政务信息化及应急指挥云平台
- SVN中Branch/tag的比较
- 一个小故事读懂Memcached漏洞
- idea的黄色感叹号之Spring Configuration Check (Please configura/setup Spring facet for modules)
- 如何将十进制转化为二进制和十六进制
- python中返回上一步操作的快捷键_在计算机中返回上一步的快捷键
- 如何开启全新旅途,实现旅游市场活力复苏
- 【C语言 基础】函数的形参与实参
- 六、系统架构 - 高可用架构设计
- 材料研究生转行做什么?
- Windows计算机与便携式显示器
热门文章
- arcgis python字段计算器_计算字段示例—帮助 | ArcGIS for Desktop
- p5.js 光速入门中文教程
- 优麒麟 配置java_优麒麟中安装虚拟机(ARM64)
- 苹果酱的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Alpha多样性之箱线图解读
- c语言编程16个点阵跳动的心,Arduino点阵制作跳动的心
- Suzy找到实习了吗 | 字符串结束啦 今天学习kmp 题还没做!!!记得回来补!!!
- 22款奔驰C260升级ACC自适应巡航,高速省心不少
- 拥抱POL正当时,这里有四个故事五个理由
- (七)如何使用Eclipse打开已有工程