单片机编程原则

多任务编程的概念

在这里插入图片描述
方式一:实时操作系统(不建议新手使用)
方式二 :裸机多任务模型
在这里插入图片描述
逻辑多任务的基本原理
在这里插入图片描述
把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片段 然后再返回执行第一个任务的第二个片段 接着循环 达到右边彩色条纹的效果 如果把任务分足够多的片段 执行的速度够快 就可以认为三个任务并行执行
裸机多任务模型
在这里插入图片描述
第一个阶段是初始化 GPIO EXTI等外设和其他的初始化 第二个阶段是任务的执行注意在任务的执行中不能调用延时函数PAL_Delay 就是让CPU在多个任务中切换让三个任务达到同时并行执行 第三个阶段是中断函数执行阶段 也不能调用延时函数

裸机多任务练习 LED闪灯

在这里插入图片描述
按下按钮后灯闪烁的速度变化 一共有三个挡位 由之前的代码可知 要在while中不断调用readbit这个函数 读取按键的状态 然后led闪灯也是要在while 就是两个并行的任务在while中
在这里插入图片描述
按键的检测本来是要在while上用if语句检测两个变量previous和current 但是使用了PAL库直接调用函数
在这里插入图片描述
只需要把按钮的初始化的句柄传入即可
闪灯模式的切换 定义一个变量blinkmode
在这里插入图片描述
闪灯的程序
在这里插入图片描述就是调用一个writebit的函数写0就亮起 写1就熄灭 然后再亮起和熄灭之间增加一个延时函数
根据闪灯变量来切换闪灯模式
在这里插入图片描述
但是这个进程远远超过了进程的时间限制 5ms 所以要改造这个函数在这里插入图片描述
创建一个状态变量为stage stage=0就为灯熄灭 stage=1就为灯亮起 然后在这两个状态中来回切换就是灯的亮灭进程
亮起就调用GPIOC write bit函数写reset 熄灭就写入set
那么如何编写超时的函数?
在这里插入图片描述
这个函数是用来获取时间的 就是单片机开启的一瞬间开始计时 0 1 2 3 …

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153786.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

How to design a database storage model for water network information system

How to design a database storage model for water network information system 1、领域划分2、基础域2.1、概述2.2、E-R图2.3、SQL脚本 1、领域划分 序号中文名称英文名称代号备注1基础域basea012资产域assertsa023监测域monitora034水权域quotaa045灌溉域irrigationa056排涝…

JVM bash:jmap:未找到命令 解决

如果我们在使用JVM的jmap命令时遇到了"bash: jmap: 未找到命令"的错误,这可能是因为jmap命令没有在系统的可执行路径中。 要解决这个问题,可以尝试以下几种方法: 1. 检查Java安装:确保您已正确安装了Java Development …

数字孪生技术能够为旅游业带来什么新变化?

随着科技的不断发展,数字孪生技术逐渐融入各个行业,为旅游业的高质量发展提供了新的动力和可能性。数字孪生,即对现实世界的精确数字建模,通过实时数据同步、模拟分析,为旅游业带来了诸多创新和改变。 在数字孪生的理…

ES Kibana 简介

ES & Kibana 简介 来源:微信公众号《鲜枣课堂》 1998年9月4日,Google公司在美国硅谷成立。正如大家所知,它是一家做搜索引擎起家的公司。 无独有偶,一位名叫Doug?Cutting的美国工程师,也迷上了搜索引擎。他做了…

3. hdfs概述与高可用原理

简述 HDFS(Hadoop Distributed File System)是一种Hadoop分布式文件系统,具备高度容错特性,支持高吞吐量数据访问,可以在处理海量数据(TB或PB级别以上)的同时最大可能的降低成本。 HDFS适用于…

0门槛!用ChatGPT只花1天批量生成300个爆火TikTok视频

目录 1 2让天下没有难做的开发和运维,DevOps终于有了专属大模型 3关于 DevOpsGPT 1 不露脸,不怕视频也能从TikTok赚到钱?在过去30天,有人通过这个方式预计至少获得了超过1万美金的广告分成收益。这些成功账号的共同特点是,所有…

探究多态的原理与实现:虚函数表、动态绑定与抽象类

文章目录 一、多态概念二、多态实现(具体)2.1 虚函数2.2 虚函数 重写2.3 override关键字 与 final关键字2.4 重载、重写(覆盖)、重定义(隐藏)的区别 三、抽象类3.1 概念3.2 实现继承 && 接口继承 四…

通过使用阿里云服务器,搭建Java程序的运行环境

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一…

ACM练习——第四天

ok,今天又是三节课的一天。 刚刚吃完饭的我一刻也不敢耽误,直接开干!!! 这些题和力扣上的,为了练习数据结构的题是不一样的。 直接上嘴脸 题目 第一次放学 (nowcoder.com)来自牛客网 思路 先看他的输入…

8086与8088

一、8086与8088概述 8088/8086都是16位微处理器,内部运算器和寄存器都是16位的,同样具有20位地址线8088/8086都是由执行单元(EU)和总线接口部件(BIU)两大部分构成指令系统和寻址能力都相同,两种CPU是兼容的8088被称作准十六位的、是紧继8086…

【文件上传】upload-labs 通关

环境准备 靶场upload-labs-env-win-0.1环境windows 靶场描述 靶场攻略 Pass-01 1.上传一句话木马 发现有类型限制 2.上传图片木马 抓包 3.修改后缀 将png修改为php. 成功上传, 4.查找文件地址 5.中国蚁剑连接 6.成功 7.源码分析 function checkFile() {var fi…

深入理解锁

目录 常用锁策略 1.乐观锁 VS 悲观锁 2.轻量级锁 VS 重量级锁 3.自旋锁 VS 挂起等待锁 4.互斥锁 VS 读写锁 5.公平锁 VS 非公平锁 6.可重入锁 VS 可重入锁 CAS ABA问题 Synchronized原理 1. 锁升级/锁膨胀 2.锁消除 3.锁粗化 常用锁策略 1.乐观锁 VS 悲观锁 站在…

自建es数据迁移阿里云方案

一、ElasticSearch数据迁移方法介绍 https://help.aliyun.com/document_detail/170095.html?spma2c4g.26937906.0.0.429240c9ymiXGm 可以通过Logstash、reindex和OSS等多种方式完成阿里云Elasticsearch间数据迁移、Elasticsearch数据迁移至Openstore存储中、自建Elasticsear…

教你轻松保存视频号里的视频到相册

在今天的数字化社会,人们在各种社交平台上分享视频已经成为一种习惯。而在短视频平台上,用户可以轻松地上传、分享和观看各种内容丰富的视频。然而,很多用户在观看完善了的视频后,希望将喜欢的视频保存到手机相册中,以…

yyds!这个写文案神器爱了爱了

每次写文案都绞尽脑汁,不知道怎么写,想了很久,好不容易写完了,数据真的很差, 心累啊,家人们!! 只要输入你想写的标题,马上就能得到一篇,不满意就重写&#…

力扣-路径总和问题

路径总和 --简单 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 f…

MATLAB中zticks函数用法

目录 语法 说明 示例 指定 z 轴刻度值和标签 指定非均匀 z 轴刻度值 以 2 为增量递增 z 轴刻度值 将 z 轴刻度值设置回默认值 指定特定坐标区的 z 轴刻度值 删除 z 轴刻度线 zticks函数的功能是设置或查询 z 轴刻度值。 语法 zticks(ticks) zt zticks zticks(auto)…

猫罐头哪个牌子好性价比高?5款良心性价比的猫罐头推荐给新手养猫!

养猫新手很容易陷入疯狂购买的模式,但有些品牌真的不能乱买!现在的市场环境不太好,我们需要学会控制自己的消费欲望,把钱花在刀刃上!宠物市场真的很内卷,很多品牌都在比拼产品的数据和营养成分。很多铲屎官…

qt Rectangle 使用Gradient设置渐变方向 制作渐变进度条

1.Gradient方向可查看官网 Gradient.Horizontala horizontal gradient Gradient.Verticala vertical gradient ​​ ProgressBar {id: batteryvalue: 0.5width: 150height: 20anchors.centerIn: parentbackground: Rectangle {implicitWidth: battery.widthimplicitHeight:…

python+appium自动化测试如何控制App的启动和退出

由于本人使用的是Android设备做自动化测试,所以以下内容均基于Android系统做出的整理 一、启动app 启动app需要设置Capability参数,而Capability参数放在Desired Capalibity中,Desired Capalibity告诉Appium想要的自动化平台和应用程序&…