单片机编程原则
多任务编程的概念

方式一:实时操作系统(不建议新手使用)
方式二 :裸机多任务模型

逻辑多任务的基本原理

把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片段 然后再返回执行第一个任务的第二个片段 接着循环 达到右边彩色条纹的效果 如果把任务分足够多的片段 执行的速度够快 就可以认为三个任务并行执行
裸机多任务模型

第一个阶段是初始化 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 …
相关文章:
单片机编程原则
多任务编程的概念 方式一:实时操作系统(不建议新手使用) 方式二 :裸机多任务模型 逻辑多任务的基本原理 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片…...
开源短剧付费变现小程序源码系统+在线开通会员+在线充值 带完整的搭建教程
说起微短剧,相信大家都不会陌生。相比传统网剧冗长的剧情,微短剧最大的看点,是时长短、高浓缩,顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头,但却非常“上头”的虚…...
基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力
Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…...
电商平台为什么需要及时部署ssl证书?
电商平台为什么需要及时部署ssl证书? 21世纪以来,互联网技术得到了快速的发展和应用上的普及,为生活、工作、学习都带来了巨大的变化。现代社会中,快节奏的生活让人们的购物方式也发生了极大的转变,逐渐由线下转为了线…...
卡码网语言基础课 | 12. 位置互换
通过本次练习,将要学习到以下C知识点: 位置互换交换变量字符串 题目:给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。 奇偶位互换是指字符串的奇数位和偶数位相互交换位置 即:第一位和第二位交换&…...
用DOM来读取XML时要注意的一些概念
2023年11月15日,周三下午 在 DOM(文档对象模型)中,有一些重要的概念和术语: 文档对象(Document Object):表示整个 XML 文档的根节点,它是 DOM 树的入口点。元素节点&…...
openresty安装配置,执行shell脚本
下载并解压 OpenResty 源代码: bashCopy code wget https://openresty.org/download/openresty-1.19.9.1.tar.gz tar -zxvf openresty-1.19.9.1.tar.gz cd openresty-1.19.9.1 运行 ./configure 并指定安装路径: bashCopy code ./configure --prefix…...
解决Dockerfile中 Could not initialize class sun.awt.X11FontManager错误
Dockerfile中增加命令 RUN yum install dejavu-sans-fonts fontconfig -y如果您使用的是基于Alpine Linux的发行版,可以使用apk命令来安装DejaVu Sans字体和fontconfig工具 RUN apk update RUN apk add ttf-dejavu fontconfig...
Kubernetes(k8s)进阶
文章目录 Kubernetes进阶一、Namespace(名称空间)1.namespace介绍2.管理namespace查看namespace创建namespaceyaml文件配置namespace 二、Pod(最小基本部署单元)1.pod介绍2.管理pod创建并运行pod查看pod信息访问pod删除podyaml文件…...
[Vue 配置] Vite + Vue3 项目配置和使用 NProgress
文章归档:https://www.yuque.com/u27599042/coding_star/mfmsrf9tz98ox3qg 安装 pnpm i nprogress配置 NProgress 其他更多可参考,仓库地址:https://github.com/rstacruz/nprogress 在 src/config/nprogress.js 中进行配置 是否展示右上角圆…...
Android MQTT开发之 Hivemq MQTT Client
使用一个开源库:hivemq-mqtt-client,这是Java生态的一个MQTT客户端框架,需要Java 8,Android上使用的话问题不大,需要一些额外的配置,下面列出了相关的配置,尤其是 packagingOptions,…...
【Maven教程】(十一):使用 Maven 构建 Web应用 —— 使用 jetty-maven-plugin 进行测试、使用 Cargo 实现自动化部署~
Maven 使用 Maven 构建 Web应用 1️⃣ Web 项目的目录结构2️⃣ account-service2.1 account-service的 POM2.2 account-service 的主代码 3️⃣ account-web3.1 account-web 的POM3.2 account-web 的主代码 4️⃣ 使用 jetty-maven-plugin 进行测试5️⃣ 使用 Cargo 实现自动…...
番外 2 : LoadRunner 的安装以及配置
LoadRunner 的安装以及配置教程 一 . 配置 IE 浏览器二 . 安装 LoadRunner 工具三 . 修改默认浏览器的配置四 . 设置 LoadRunner 能够获取本地资源 Hello , 大家好 , 又给大家带来新的专栏喽 ~ 这个专栏是专门为零基础小白从 0 到 1 了解软件测试基础理论设计的 , 虽然还不足以…...
win10正确配置tensorRT环境
目的 使用tensorRT进行网络模型部署,加快推理速度 方法 安装tensorRT的过程需要对各种组件的版本进行匹配 前置安装套件有: 1、CUDA 2、cuDNN 3、pyCUDA 4、tensorflow或pytorch 主要记录tensorRT安装: tensorRT安装配置查询 步骤: 1、去tensorRT官网…...
C++初阶-模板初阶
模板初阶 一、泛型编程二、函数模板2.1函数模板概念2.2函数模板格式2.3函数模板的原理2.4函数模板的原理2.5模板参数的匹配原则 三、类模板3.1类模板的定义格式3.2类模板的实例化 一、泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& …...
基于Python实现汽车销售数据可视化【500010086】
导入模块 import numpy as np import pandas as pd import plotly.graph_objects as go import plotly.express as px获取数据 df1 pd.read_excel(r"./data/中国汽车总体销量.xlsx") print(df1.head(5))df1.info()df1[年份] df1[时间].dt.year df1[月份] df1[时…...
dist.init_process_group() 卡住超时导致报错
在跑模型是遇到一个问题: import torch.distributed as dist dist.init_process_group(backend"nccl", init_methodtcp://localhost:%d % tcp_port, ranklocal_rank, world_sizenum_gpus)程序卡在这一步一动不动。. 解决办法一: 我看网上有人…...
RESTFul API:真是让人又爱又恨
RESTFul API是一种广泛使用的Web服务设计风格,它以资源为中心,通过HTTP方法来操作这些资源。然而,尽管RESTFul架构风格在许多情况下都非常有用,但在实际应用中,我们也发现了一些不足之处。本文将详细阐述这些问题&…...
【洛谷 P1478】陶陶摘苹果(升级版)题解(多重集合+贪心算法)
陶陶摘苹果(升级版) 题目描述 又是一年秋季时,陶陶家的苹果树结了 n n n 个果子。陶陶又跑去摘苹果,这次他有一个 a a a 公分的椅子。当他手够不着时,他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的…...
使用WebSocket实现网页聊天室
一、引言 1. 问题引入 Hypertext Transfer Protocol (HTTP) 协议 一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动. 因为http 通信只能由客户端发起,服务器返回查询结果…...
Beyond Compare 5密钥生成终极指南:从RSA原理到实战激活
Beyond Compare 5密钥生成终极指南:从RSA原理到实战激活 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5是一款功能强大的文件对比工具,但30天评估期后的…...
Label Studio数据源配置全攻略:除了S3和Azure,如何用本地文件夹搭建高效标注流水线?
Label Studio数据存储方案深度对比:从云端到本地的架构选型指南 在机器学习项目的数据标注环节,Label Studio已成为众多团队的首选工具。但面对不同规模、不同安全要求的项目时,如何选择最适合的数据存储方案却让许多技术决策者感到困扰。本文…...
如何快速搭建Windows虚拟路由器:VirtualRouter完整使用指南
如何快速搭建Windows虚拟路由器:VirtualRouter完整使用指南 【免费下载链接】VirtualRouter Wifi Hotspot for Windows computers (Windows 7, 8.x, Server 2012 and newer!) 项目地址: https://gitcode.com/gh_mirrors/vi/VirtualRouter VirtualRouter是一款…...
飞书文档批量导出终极解决方案:3分钟搞定700+文档迁移
飞书文档批量导出终极解决方案:3分钟搞定700文档迁移 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为飞书文档迁移而头疼吗?当企业需要从飞书切换到其他办公平台&am…...
LED闪灯电路板学习 过程
原理图和pcb是开源的,照着抄就行了,难点主要在于焊接,,焊接我分为三步,第一步一定要点锡,呈现45度角,大约3秒到5秒,第二步就是要夹稳零件往一边靠,第三步就是要顺水的焊锡焊另外一边,最重要就是第二步,熬过去就简单了,打了5个板子花了三天时间从零成功,重…...
机器学习记忆化:平衡隐私、鲁棒性与公平性的核心技术挑战
1. 项目概述:当机器学习开始“记住”数据时,我们面临什么?在构建一个机器学习模型时,我们总希望它能像一位聪明的学生,不仅记住课本上的例题,更能理解背后的原理,从而在考场上举一反三。但现实往…...
信创环境运维实录:在离线ARM麒麟V10服务器上,我是这样搞定telnet客户端的
信创环境下的离线运维实战:ARM架构麒麟V10服务器telnet客户端部署全解析在信创产业快速推进的背景下,越来越多的企业和机构开始采用国产化服务器操作系统。麒麟V10作为国产操作系统的代表之一,凭借其安全可靠的特性,在政府、金融、…...
全波形反演新思路:大步长梯度优化器如何克服周波跳跃难题
1. 项目概述:当梯度优化器“大步快跑”时,它能跳出周波跳跃的陷阱吗?在地球物理勘探领域,全波形反演(FWI)被誉为速度建模的“圣杯”,它通过迭代匹配模拟地震数据与观测数据,来反推地…...
UE5 GAS实战:用一张曲线表格(Curve Table)搞定RPG游戏中的等级成长与回复效果
UE5 GAS实战:用曲线表格构建动态RPG成长系统在角色扮演游戏的开发中,数值成长系统往往是最考验设计功底的环节之一。想象一下,当玩家从1级升到10级的过程中,如果每次升级带来的属性提升都是固定数值,这种线性增长很快就…...
r2frida:打通Radare2静态分析与Frida动态调试的逆向工程工作流
1. 为什么你还在用 Frida CLI 单打独斗,而高手早已把 Radare2 的逆向能力“焊”进动态分析流程? 如果你做过 Android 或 iOS 应用的深度安全分析,大概率经历过这样的场景:Frida hook 到目标函数后,看到 this 指针指…...
