立创泰山派linux------(led流水灯)
📅 2026/7/30 9:31:01
👁️ 次浏览
1、触发器使得LED闪烁有些开发板的 LED 会硬件层面被配置成呼吸灯或心跳灯通过 PWM 或定时器直接驱动 GPIO不需要任何用户程序。即使你kill掉所有进程它还是会闪。你可以查看 LED 的触发器状态bashcat /sys/class/leds/rgb-led-r/trigger cat /sys/class/leds/rgb-led-g/trigger cat /sys/class/leds/rgb-led-b/trigger如果输出里有heartbeat或timer说明 LED 被内核的 LED 触发器控制着所以一直在闪烁。rootRK356X:/# cat /sys/class/leds/rgb-led-r/trigger none rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc2 mmc0 [timer] rfkill0 mmc1 rfkill1 rfkill22、内核已经注册好了 LED 设备可以直接操作。当你执行ls /sys/class/leds/看到下面这行时rgb-led-b rgb-led-g rgb-led-r这就代表内核已经成功注册了 LED 设备。它干了三件事识别了硬件内核知道 GPIO 40、41、42 这三个引脚上接着 LED。创建了标准接口在/sys/class/leds/下为你创建了三个“控制面板”目录里面包含brightness和trigger等文件。提供了操作方法你往这些文件里写1或0内核驱动就会自动去翻转 GPIO 引脚的电平点亮或熄灭 LED。你完全不需要关心 GPIO 编号是怎么计算的比如 GPIO1_B0 对应 40也不需要用echo 40 export手动去申请这个引脚——因为内核已经帮你把这一切都做好了。 对比一下“没注册”是什么感觉如果你把 LED 接在一个内核不认识的 GPIO 引脚上比如某个空闲的引脚那就没有注册这回事。你需要做的流程是用echo 100 /sys/class/gpio/export手动申请。用echo out direction设置方向。再用echo 1 value控制电平。而现在因为内核“注册”了它前两步都给你省了直接跳到第三步甚至能用none和timer这种高级模式。分别实现点亮和关闭led的命令可以看到led返回值3、实现led交通闪烁#include stdio.h #include stdlib.h #include string.h #include unistd.h #define LED_RED /sys/class/leds/rgb-led-r #define LED_GREEN /sys/class/leds/rgb-led-g #define LED_BLUE /sys/class/leds/rgb-led-b void disable_trigger(const char *led_path); void set_led(const char *led_path, int on); void write_file(const char *path, const char *value); int main(void) { int i; const char *leds[] {LED_RED, LED_GREEN, LED_BLUE}; const char *colors[] {红色, 绿色, 蓝色}; printf(RGB LED 流水灯启动按 CtrlC 停止。\n); // 先禁用所有 LED 的触发器停止闪烁 for (i 0; i 3; i) { disable_trigger(leds[i]); set_led(leds[i], 0); // 先全部熄灭 } while (1) { for (i 0; i 3; i) { // 点亮当前 LED set_led(leds[i], 1); printf(点亮 %s LED\n, colors[i]); // 熄灭其他两个 LED int j; for (j 0; j 3; j) { if (j ! i) { set_led(leds[j], 0); } } usleep(500000); // 延时 500ms } } return 0; } // 设置 LED 触发器为 none停止自动闪烁 void disable_trigger(const char *led_path) { char path[256]; snprintf(path, sizeof(path), %s/trigger, led_path); write_file(path, none); } // 设置 LED 亮灭 void set_led(const char *led_path, int on) { char path[256]; snprintf(path, sizeof(path), %s/brightness, led_path); write_file(path, on ? 1 : 0); } // 写入文件函数 void write_file(const char *path, const char *value) { FILE *fp fopen(path, w); if (fp NULL) { perror(fopen); return; } fprintf(fp, %s, value); fclose(fp); }
记录一下Windows系统下的命令行参数的字符个数限制
在开发跨平台命令行工具或脚本时,我们常常会忽略一个隐藏的“陷阱”:不同操作系统对命令行参数的长度有着不同的限制。特别是在Windows系统上,这个限制可能比我们想象中要严格得多。本文将深…
📅 2026/7/30 9:31:01
在河南许昌本地,想要系统拆解胖东来客户运营底层逻辑的企业与经营团队逐年增多,但多数研学服务始终停留在“逛热门门店、听通用宣讲、拍打卡合影”的表层环节,不少团队走完行程后只记住了零散的服务细节,回到自身门店依然找不到落…
📅 2026/7/30 9:30:00
TranslucentTB完整指南:Windows任务栏透明美化快速入门与高级配置 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB
你是否厌倦…
📅 2026/7/30 9:30:00
1. 从“沙箱”这个名字说起:它到底想解决什么问题?如果你刚开始接触STM32和CubeMX,在配置时钟树或者外设时,大概率会看到一个叫“Sandbox”的选项,中文翻译过来就是“沙箱段”。我第一次看到这个词也是一头雾水&#x…
📅 2026/7/31 4:02:48
从零起步:六个月大模型入门路线图
2026 年的今天,人工智能早已不再是实验室里的概念,而是像水电一样渗透进各行各业的基础设施。对于想要转行进入 AI 领域的开发者,或者希望系统掌握大模型技能的零基础朋友来说,面对铺…
📅 2026/7/31 4:02:48
1. 为什么传统知识库总是查得慢又答不准?每次在传统知识库里搜索资料,我都感觉自己像是在玩一场运气游戏。输入关键词后,要么返回几十页毫不相关的结果,要么直接告诉我"没有找到匹配内容"。作为从业十年的技术老兵&…
📅 2026/7/31 4:02:48
为什么我要折腾OpenClaw?从一次"翻车"说起前几天帮朋友搭一个本地工具,他非要我搞个能离线跑的"小型服务引擎"。折腾了三个方案全崩了——要么依赖包冲突,要么配置文件藏得比前任的情书还深。最后翻到一个叫OpenClaw的东…
📅 2026/7/31 4:02:48
1. 项目概述:从两个激活函数说起在神经网络的世界里,激活函数就像是神经元的“开关”和“放大器”,它决定了神经元是否被激活,以及如何将输入信号转化为输出信号。对于刚入门的朋友,你可以把它想象成一个水龙头&#x…
📅 2026/7/31 4:02:48
1. 从“字长”说起:计算机底层设计的基石干了这么多年硬件和底层软件,我发现很多朋友在入门计算机体系结构时,对“字长”这个概念总是一知半解。机器字长、存储字长、指令字长,这三个词听起来很像,但它们在CPU设计、内…
📅 2026/7/31 4:01:48
数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…
📅 2026/7/31 0:00:23
BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…
📅 2026/7/31 0:00:23
当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…
📅 2026/7/31 0:00:23
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/31 1:18:08
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/31 1:18:08
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/31 1:18:08
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/30 7:16:27
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/30 17:17:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/30 5:16:22