HRTOS实战示例:PWM呼吸变化与4位数码管实时显示占空比
在嵌入式开发中PWM 是非常常见的一项基础功能。为了进一步完善 HRTOS 的硬件示例本次增加一个PWM 4位数码管显示示例通过 HRTOS 任务机制实现 PWM 占空比的连续变化同时使用 4 位数码管实时显示当前占空比。整个示例比较简单但包含了几个比较典型的 HRTOS 应用场景PWM 初始化PWM 占空比控制任务延时任务之间的功能分工4 位数码管动态显示驱动接口调用。一、示例实现的功能程序启动后首先初始化 PWM 和 4 位数码管。随后创建两个 HRTOS 任务任务1PWM控制任务负责让 PWM 占空比从0% → 100% → 0%循环变化。任务2数码管显示任务负责读取当前 PWM 占空比并通过 4 位数码管实时显示。因此运行过程中可以同时看到PWM 输出占空比不断变化以及数码管同步显示当前占空比例如0000 → 0% 0025 → 25% 0050 → 50% 0075 → 75% 0100 → 100%然后再逐渐下降到 0%。二、PWM控制任务PWM 控制任务的核心代码比较直观。占空比从 0 增加到 100for(duty 0; duty 100; duty) { drv_pwm_set_duty(duty); pwm_display_duty duty; os_delay(1); }每次将占空比增加 1%然后调用os_delay(1);让当前任务进入延时状态。随后 HRTOS 可以继续调度其他任务运行。当占空比达到 100% 后再执行下降过程for(duty 100; duty 0; duty--) { drv_pwm_set_duty(duty); pwm_display_duty duty; os_delay(1); }最终重新设置为 0%然后进入下一轮循环。这样就形成了一个持续运行的0% → 100% → 0%PWM变化过程。三、数码管显示任务第二个任务负责显示当前 PWM 占空比。程序首先通过驱动接口获取当前占空比value drv_pwm_get_duty();然后将数值拆分成 4 位drv_seg_display(0, value / 1000); drv_seg_display(1, value / 100 % 10); drv_seg_display(2, value / 10 % 10); drv_seg_display(3, value % 10);因此当当前占空比为0数码管显示0000当占空比为50显示0050当占空比为100显示0100通过这种方式可以非常直观地观察 PWM 当前的运行状态。四、两个任务分别负责不同功能这个例子比较适合展示 HRTOS 的一个基本思想把不同功能拆分到不同任务中。PWM 控制任务只负责PWM占空比变化数码管任务只负责读取占空比 ↓ 刷新显示两个任务相互独立。PWM任务通过os_delay()周期性让出 CPU而数码管任务持续负责显示工作。相比把所有功能全部写在一个超级循环中使用 RTOS 任务进行功能划分后程序结构会更加清晰。五、HRTOS驱动接口这个示例也体现了 HRTOS 当前示例代码的一个特点应用层尽量通过统一驱动接口使用硬件。例如 PWMdrv_pwm_init(); drv_pwm_set_duty(duty); drv_pwm_get_duty();数码管drv_seg_init(); drv_seg_display();应用程序不需要直接处理底层硬件寄存器而是通过驱动接口完成对应功能。这种方式也方便后续对驱动模块进行独立维护和扩展。六、完整任务结构整个示例最终由两个任务组成HRTOS │ ├── task_pwm_control │ └── 0% → 100% → 0% │ └── task_seg_display └── 实时显示PWM占空比系统启动时初始化 PWM初始化数码管设置初始占空比为 0%创建 PWM 控制任务创建数码管显示任务。之后由 HRTOS 负责两个任务的调度。七、这个示例的意义这个示例虽然功能并不复杂但非常适合作为一个基础 HRTOS 应用案例。它没有刻意加入复杂的业务逻辑而是直接展示驱动 任务 延时 实时显示这几个最基础的组成部分。对于刚开始使用 HRTOS 的开发者来说可以从这个例子进一步扩展例如PWM 控制 LED 亮度PWM 控制直流电机PWM 控制蜂鸣器数码管显示更多运行参数增加按键调整占空比增加串口 Shell 控制 PWM使用消息队列传递控制参数。这样就可以从一个简单的硬件示例逐步扩展到更加完整的应用。八、HRTOS持续完善8051示例目前 HRTOS 的示例建设更加注重基础功能和实际可用性。相比单纯增加大量复杂 Demo基础驱动和基础功能案例更加容易验证、维护也更方便开发者直接参考。这个 PWM 4 位数码管示例也是其中的一部分。后续 HRTOS 会继续围绕 8051 常见外设和实际开发场景完善示例并尽量通过真实硬件进行验证。让每一个基础示例都尽可能简单、清晰并真正能够用于 8051 开发。HRTOS持续维护持续验证持续完善。

相关新闻

第306篇_教师资格考试公告抓取

第306篇_教师资格考试公告抓取

【Python爬虫实战】第306篇:NTCE教师资格考试公告抓取:报名时间节点自动整理——实战项目 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 306 篇(垂直行业爬虫 教育考试公告专题) 难度等级:入门级,零基础可跟 阅读时长:约 25 分钟…

2026/9/30 17:00:50 阅读更多 →
第一期Linux之Ubuntu入门篇学习问题汇总

第一期Linux之Ubuntu入门篇学习问题汇总

学习资料:B站搜素正点原子官方前要说明:本篇是我自己的学习路程,难免具有很多主观的判断,请大家理性对待,自行取所需,也请大家善待辛苦手搓码字的我一,自主解决的问题1,VMware无网&a…

2026/10/1 18:58:19 阅读更多 →
第308篇_高考志愿数据抓取

第308篇_高考志愿数据抓取

【Python爬虫实战】第308篇:阳光高考院校与专业数据抓取:搭建你的高考志愿参考库——实战项目 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 308 篇(垂直行业爬虫 高考志愿专题) 难度等级:进阶,需一定工程经验 阅读时长:约 25 分…

2026/9/30 16:59:49 阅读更多 →

最新新闻

β-环糊精组合修饰全解析:PEG链连接FITC、Biotin、DBCO的设计与应用

β-环糊精组合修饰全解析:PEG链连接FITC、Biotin、DBCO的设计与应用

拿到“PEG-荧光素修饰β-环糊精,β-CD-PEG-FITC,β-CD-PEG-Biotin,DBCO-PEG修饰β-环糊精,β-CD-DBCO-PEG”这一串产品名时,多数人的第一反应是“这到底是个东西还是好几个东西”。其实这是一类典型的组合修饰型环糊精…

2026/10/1 18:57:55 阅读更多 →
C++工厂方法模式实战:从日志系统到调试排查全解

C++工厂方法模式实战:从日志系统到调试排查全解

聊到C里的创建型设计模式,工厂方法模式(Factory Method)是我在工程实践中用得最频繁,也最容易被低估的一个。早些年我在面试候选人的时候,几乎每次都会问到一个场景:一段代码里有七八个if分支去创建不同类型…

2026/10/1 18:57:55 阅读更多 →
Madeira 整合 Wine、FEX-Emu 与 DXMT:ARM 平台运行 x86-64 Windows 程序实战

Madeira 整合 Wine、FEX-Emu 与 DXMT:ARM 平台运行 x86-64 Windows 程序实战

1. 从“Madeira”这个名字说起:它到底想解决什么问题 第一次看到“Madeira”这个项目名,很多人会以为是某个葡萄酒产区的工具,或者干脆是个地名相关的应用。但结合热搜词里的 Wine、FEX-Emu、DXMT、x86-64 这几个关键词,方向就清晰…

2026/10/1 18:57:55 阅读更多 →
声音克隆 + 文本转语音:narrator-ai-cli-skill 独立任务实战,AI 解说大师配音两大技能

声音克隆 + 文本转语音:narrator-ai-cli-skill 独立任务实战,AI 解说大师配音两大技能

声音克隆 文本转语音:narrator-ai-cli-skill 独立任务实战,AI 解说大师配音两大技能 【免费下载链接】narrator-ai-cli-skill AI 解说大师 — Agent skill;封装 narrator-ai-cli 供 Claude/Codex 等工具调用 项目地址: https://gitcode.co…

2026/10/1 18:57:55 阅读更多 →
Windows英文系统中文显示异常的注册表级修复方案

Windows英文系统中文显示异常的注册表级修复方案

1. 问题本质与真实场景还原这个问题我从2015年就开始反复处理,不是什么新毛病,但每次Windows大版本更新(比如1809、20H2、22H2)它就准时回来“打卡”。核心现象非常典型:你把系统语言从中文改成英文(比如为…

2026/10/1 18:57:55 阅读更多 →
C++桥接模式四种实现:从指针到std::variant的工程实践

C++桥接模式四种实现:从指针到std::variant的工程实践

从"类和类纠缠"到"接口和实现各过各的"做C开发这么多年,我一直觉得设计模式这事儿最怕"背名字"。桥接模式(Bridge Pattern)就是个典型——很多人能把定义背出来:"将抽象部分与实现部分分离&am…

2026/10/1 18:56:55 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →