课程平台网站建设报价企业建网站一般要多少钱

张小明 2025/12/30 18:23:31
课程平台网站建设报价,企业建网站一般要多少钱,萧云建设网站,收录优美图片app1.难题 作为一名嵌入式开发者#xff0c;想必各位小伙伴对以下场景早已司空见惯#xff1a;当你正埋头于调试那几行关键代码#xff0c;或者准备给项目打包成完工版本的时候。总有一个声音会适时响起#xff1a;“咱再加个小功能呗#xff1f;”通常这小功能#xff0c;相…1.难题作为一名嵌入式开发者想必各位小伙伴对以下场景早已司空见惯当你正埋头于调试那几行关键代码或者准备给项目打包成完工版本的时候。总有一个声音会适时响起“咱再加个小功能呗”通常这小功能相当于要求你的自行车瞬间变身成摩托车。运气好点是场局部“微创手术”运气不好呢直接项目重写为啥咱总能精准踩坑别怀疑这大概率不是命运的捉弄而是咱自己挖的。软件设计原则好像听说过。设计模式听起来像时尚界的潮流咱搞硬件的实在人用不上吧于是咱的代码就成功进化成了“面向需求变更崩溃编程”这种代码的结构之“精妙”让任何试图修改它的人都想给自己点一首《凉凉》。为了避免下次需求变更时咱的代码再次表演“原地爆炸”我将以一个代码来介绍如何遵循软件设计原则如何使用良好的设计模式和架构。2.背景前文提到作为一名硬件工程师因为生活饮食不规律缺少运动导致最近做体检时发现我目前的血糖偏高。为实现血糖的动态监测我还网购了一个家用的血糖仪每天定时测量血糖数据。由于自己从事多年的仪器仪表行业对这个每天用来测血糖的“小家伙”充满好奇犹豫了很久将它拆开后发现一个惊人事实整个电路板只有一颗芯片一款专用于血糖仪的单片机BH67F2472。详细查看电路板后我发现仪器的制造商居然把芯片的程序下载口预留出来了我网购了一个Holtek的下载器安装了开发工具HT-IDE3000并将这个自己写的程序下载到了血糖仪电路板的芯片中。接下来我将以BH67F2472的一个代码来介绍如何遵循软件设计原则如何使用良好的设计模式和架构。3.电路介绍程序使用了以下硬件资源按键GPIO口PA3连接按键通过读取PA3的电平信号来检测按键是否按下蜂鸣器GPIO口PB6连接蜂鸣器过控制PB6的电平驱动蜂鸣器让蜂鸣器发出声音液晶屏LCD驱动引脚COM0COM3SEG1SEG8连接到了段码液晶屏微控制器内部的 LCD 驱动控制器按照特定的扫描时序在 COM 和SEG 线上产生驱动电压点亮或熄灭液晶屏上特定的字段温度测量ADC通道1的PB3连接NTC热敏电阻NTC的电阻值随环境温度变化而变化当温度变化时NTC上的分压值随之改变。ADC通道读取PB3上的模拟电压值实现温度测量串口通信UART0的TX/RX连接串口实现输出调试打印信息。4.程序介绍4.1.模块化设计程序采用了模块化设计每个功能独立成一个模块。简单来说就是把软件这个大工程像搭乐高积木一样拆成了一个个独立的功能模块 —— 每个模块负责一件事谁也别抢谁的活儿。这种设计方法的核心思想就是 分而治之。通俗的讲就是当你面对一个复杂的大问题最明智的做法就是把它“化整为零”拆解成一系列小到可以轻松搞定的小问题然后挨个解决掉。程序的模块化设计如下图程序包含三个任务任务一GPIO任务GPIO口PA3连接按键GPIO口PB6连接蜂鸣器程序通过按键实现用户对显示内容的控制短按按键实现循环切换显示模式温度→血糖→电量→温度每切换一次蜂鸣器会发出短鸣提示。任务二LCD任务程序控制微控制器内部的 LCD驱动控制器点亮或熄灭液晶屏上特定的字段实现3位7段数字的显示同时段码液晶屏还可以显示不同数据的单位。任务三NTC任务ADC通道1的PB3连接NTC热敏电阻NTC的电阻值随环境温度变化而变化当温度变化时NTC上的分压值随之改变。ADC通道读取 PB3上的模拟电压值实现温度测量。这种模块化设计严格遵循了单一职责原则——每个模块只专心做好自己那一摊事儿绝不越界抢活干模块之间奉行“君子之交淡如水”彼此低耦合互不依赖。这样一来修改一个模块的代码完全不用担心会“城门失火殃及池鱼”各干各的互不打扰世界和平模块化设计提高了软件系统的扩展性软件工程源码中功能模块如下4.2.调度器RTOS 通常需要额外的内存开销用于任务栈、内核数据结构以及提供任务调度。由于BH67F2472有限的计算资源如 RAM、ROM 容量较小和相对较低的运算性能无法有效地承载一个完整的实时操作系统RTOS运行环境。为了在资源受限的条件下实现多任务逻辑的轮转执行开作者设计并实现了一个精简的轮询式任务调度器。HOLTEK开发环境所使用的 C 编译器不支持函数指针函数指针是构建动态任务调用机制的常用且高效手段缺失函数指针实现调度器将变得比较笨拙只能使用枚举量和switch语句实现在scheduler文件中实现了一个轮询执行的“伪调度器”关键代码如下这种设计实现的调度器被称为“伪调度器”因为这个调度器有以下特点任务执行是顺序执行、非抢占执行。一个任务必须主动执行完毕并返回break 出case后调度器才能切换到下一个任务不存在由中断或系统调用触发的任务强制切换。静态绑定 任务与枚举值、case 分支是静态编译时绑定的缺乏运行时动态创建、删除或修改任务列表的能力。轻量级 其实现极其简洁仅需一个枚举变量、一个 switch 语句和若干函数调用几乎不消耗额外的 RAM资源栈空间除外代码体积ROM也很小完美契合资源受限环境。4.3.分层设计每一个任务都采用了分层设计分层设计的核心思想也是“分而治之”分层设计将软件功能水平分割成合理的多个子系统软件中紧密关联的部分被集中放在一个层内。分层架构有以下优点每一层都把一个具体功能抽象化。可以降低代码的相互依赖程度更改代码时影响的层很少。层可以被复用。程序中采用了2层的分层设计第1层处理MCU寄存器相关操作第2层处理驱动控制和逻辑控制分层设计提高了软件系统的移植性如果项目更换了MCU那么只用修改第1层如果更改了业务逻辑那么只用修改第2层。分层架构框图如下以GPIO任务为例GPIO的BSP层的接口函数是gpio_bsp_operation上层文件可以通过gpio_bsp_operation函数完成GPIO的寄存器初始化、读操作、写操作。GPIO任务的BSP层代码如下4.4.隔离设计程序中的任务相互隔离所有任务只与调度器进行数据交互然后调度器将消息推送给其他任务。各个任务之间的信息交互模式如下这种设计模式为中间者模式。在中间者模式对象之间不能直接通信而是间接地通过中间者进行通信。中间者收到信息后再将信息转发给相关对象这样减少了对象之间的相互依赖。中间者模式有以下优点对象之间是松耦合。将多对多的关系通过中间者转换成一对一的关系。修改一个对象不需要考虑其它对象通信适应问题。这种设计减少了任务之间的耦合提高了软件的扩展性消息交互代码如下4.5.程序流程图程序主要分为四个过程初始化系统时钟配置MCU系统时钟为8MHZ执行调度器初始化动作调度器依次调用所有任务中的initialization函数执行各个任务初始化。执行调度器依次调用所有任务read函数获取改任务输出信息并将读取到的信息通过调用其他任务write函数写入执行操作。执行调度器依次调用所有任务run函数然后每个任务在后台运行。程序流程图如下感兴趣的小伙伴希望获取资料的小伙伴可以评论区留言或者私信作者。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站改版意义做店招的网站

想要深入了解游戏辅助开发的核心技术吗?CS2_External框架为你提供了一个完美的学习平台。作为一款专业的CS2外部辅助开发框架,它采用模块化设计,结合OS-ImGui图形库,让你系统化掌握游戏辅助开发的完整技术栈。 【免费下载链接】CS…

张小明 2025/12/27 23:47:38 网站建设

我要做网站医药网站怎么做

摘要 随着现代生活节奏的加快和健康意识的提升,健身行业迅速发展,健身房管理系统的需求日益增长。传统健身房管理方式依赖人工操作,存在效率低、易出错、数据难以整合等问题。金帝豪斯健身房管理系统旨在通过信息化手段解决这些问题&#xff…

张小明 2025/12/27 23:47:36 网站建设

宜春网站推广优化为审核资质帮别人做的网站

Q1:这款虫情监测站的核心优势是什么?为什么能获得百位新农人一致推荐?A:核心优势是“全自动化操作精准AI识虫数据远程直达”,完美匹配新农人高效种植的需求,这也是它获得一致推荐的关键!它不用人…

张小明 2025/12/28 1:41:14 网站建设

我也要投放广告丰台网站关键词优化

最近,我听到“LLM as a Judge”这个术语的频率比以往任何时候都高。虽然这可能是因为我从事LLM评测领域的工作,但LLM评委正在接管,因为很明显,与速度慢、成本高且劳动密集型的人类评测者相比,它是LLM评测的更好替代方案…

张小明 2025/12/28 1:41:12 网站建设

阜新网站开发公司网站后台上传文章格式

第一章:Open-AutoGLM礼物选购的核心价值在人工智能与个性化服务深度融合的今天,Open-AutoGLM作为一款基于开源大语言模型的智能推荐系统,正在重新定义礼物选购的逻辑。其核心价值不仅体现在技术先进性上,更在于对用户意图的深度理…

张小明 2025/12/27 23:51:05 网站建设