当我们实现了控制界面，剩下的问题如何把选择的颜色信息（ RGB ）告诉 LED 驱动板，常用的方式就是串口了。对于单片机来说更为专业的叫法是 Uart 口，即 Universal Asynchronous Receiver/Transmitter（通用异步收发器）接口。 [...]
创建文件目录如下： Doc 用于存放文档； Libraries 用于存放各种库，其中的 STM32Lib 是不可缺少的内核与标准外设的驱动库。原则上，所有的库都不要做任何修改，保持与原始发行状态一致。 MDK-ARM 是与 RVMDK 编译器相关的文件夹，存放工程文件、各种输出文件等； User 目录用于存放我们自己开发的代码 mcu 为 MCU 外设驱动程序文件夹； lib 为一些库程序的文件夹； bsp 为其他板载器件的驱动程序。 MDK 开发环境只支持一级组结构，所以组结构就是扁平化了的。一般包含 STM32Lib、Startup、User、Doc 等组。 把内核及标准外设的驱动（C 文件）加入 STM32Lib 组： Startup 为启动代码组，要从 .\Libraries\STM32Lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 文件夹选择一个。 将 main.c、配置、中断服务等文件加入 User 文件夹并加载到 User 组。 stm32f10x_conf.h 头文件在 stm32f10x.h 中通过判断有无 USE_STDPERIPH_DRIVER 宏定义而确定是否引用。 此外还需要配置工程，定义单片机系列（如定义 STM32F10X_CL）、选择使用标准外设驱动库 USE_STDPERIPH_DRIVER Include Paths 中配置所有需要引用的头文件所在目录 配置时钟晶体的频率 在需要操作内核或标准外设的地方直接引用库的头文件（stm32f10x.h）即可： 在编译的时候可以看到所有的库文件都被编译了，速度很慢，如果没有使用某个库文件，可以选择不编译它。 取消选择 Include in Target Build 即可。 在 C/C++ 选项卡中选中 One ELF Section per Function 选项可将用不到的函数排除在编译结果之外，从而减小生成程序的大小。
控制 LED 的上位机可以是 PC，也可以是 Smart Mobile、Pad 。可以使用 Windows 系统，也可以使用 Linux、Android 系统。考虑到跨平台的便利性和语言之间的关联性，我选用了 Python + PyQt 的搭配。既能利用 Python 的良好的跨平台能力和便捷的编程，又能在界面库上向 C++ Qt 靠拢。 [...]
从寻觅远古岩画到见证印象画派的繁荣，在看得见的历史长河里，绘画艺术家们对色彩的追求和运用技法的研究从未停歇。从雷火到那些神神叨叨魔法术士炉子里幻化着的各色鬼火、圣火，那些跳动着的，闪耀着的，难以捉摸。当一缕阳光穿过牛顿手里的棱镜而变得理性，当一星火花迸发在伏特的线头而将不再神秘。这时的我们（就叫 “The Light Maker” 吧），才刚刚出发。 [...]
入手了一个青轴机械键盘，虽说敲击效果不错，但还远远没体验到到传说中“一朝误入此门中，从此红尘了如空”的夸张感觉。 [...]
很早之前做网站就接触过这个东东了，不过由于用的比较少，总是学了忘、忘了学，一知半解。现在来看大量的常用工具都支持了正则表达式，比如 Everything、编辑器等。 [...]