当前位置: 首页 > news >正文

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos(十九)


目录

前言

一、简述

二、开源网址

三、原理及功能特性

1.原理简介

2.功能介绍

1.任务调度

2.任务管理

3.中断管理

4.消息队列

3.特点说明

4.优缺点

四、参考书籍

五、实现方式

总结


前言

FreeRTOS是一个免费的、开源的实时操作系统,专为微控制器和嵌入式系统设计,它以其轻量级、高效、易于移植和强大的功能而闻名,成为许多嵌入式开发者的首选。FreeRTOS操作系统支持多种不同架构的不同型号的处理器,比如STM32系列的 F1、F4、F7 和H7等都可以移植 FreeRTOS,同时ST公司也在其STM32CubeMX生态系统中加入了对FreeRTOS操作系统的支持,这极大的方便了我们学习和使用FreeRTOS操作系统。


一、简述

Free Real-Time Operating System(免费的实时操作系统,简写FreeRTOS)是一个免费、开源的、可裁剪的、抢占式实时多任务内核,具有高度可移植性,适用于资源有限的微控制器等环境。FreeRTOS诞生于2003年,由Richard Barry发布初版,并由Real Time Engineers Ltd进行开发和维护。2017年,亚马逊(Amazon Web Services, AWS)收购了FreeRTOS,并推出了增强的版本Amazon FreeRTOS,集成了更多的联网和安全功能。FreeRTOS_百度百科 (baidu.com)

由于FreeRTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。

FreeRTOS广泛应用于工业自动化、智能家居、汽车电子、医疗设备和无人机等领域。例如,在智能家居系统中,FreeRTOS可以管理多个传感器和执行器(如温度传感器、光照传感器、智能插座等),实现家庭安全、节能和舒适度的提升。在无人机控制系统中,FreeRTOS通过多任务调度和实时性能保障,确保无人机能够稳定飞行并响应各种控制指令。

二、开源网址

FreeRTOS官方网址为FreeRTOS™网站,上面提供了大量的FreeRTOS操作系统的相关文档及例程源码,如下所示。

也可以在上面可以下载相应版本的FreeRTOS源码包,或者到github存储库上下载。

三、原理及功能特性

1.原理简介

任务调度机制是嵌入式实时操作系统的一个重要概念,也是其核心技术。FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。

FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,提高了系统的实时响应能力。FreeRTOS内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

当进行任务调度时,调度算法首先实现优先级调度。系统按照优先级从高到低的顺序从就绪任务链表数组中寻找第一个不为0的优先级,此优先级即为当前最高就绪优先级,据此实现优先级调度。若此优先级下只有一个就绪任务,则此就绪任务进入运行态;若此优先级下有多个就绪任务,则需采用轮换调度算法实现多任务轮流执行。

2.功能介绍

作为一个轻量级的操作系统,其功能包括:任务调度、任务管理、中断处理、信号量、消息队列、内存管理、通信和同步机制、软件定时器、低功耗模式等,这些功能使得FreeRTOS能够高效地管理嵌入式系统中的多个任务,实现任务的并发执行和资源共享。

  1. 抢占式多任务调度:FreeRTOS支持抢占式多任务调度机制,允许高优先级的任务抢占低优先级的任务,从而保证了系统的实时性要求。这种调度机制使得系统能够在确定的时间内响应任务,非常适合对实时性要求较高的应用场景。
  2. 任务管理:FreeRTOS提供了强大的任务管理功能,包括任务的创建、删除、挂起、恢复等操作。这使得开发者能够方便地管理系统中的多个任务,实现任务的并发执行和资源共享。
  3. 中断处理:FreeRTOS提供了高效的中断处理机制,允许任务在中断服务例程中与内核进行交互。这有助于开发者更好地处理系统中的中断事件,提高系统的稳定性和响应速度。
  4. 消息队列:基于队列,FreeRTOS 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二 值信号量、递归互斥信号量,因此很有必要深入了解FreeRTOS的队列。
  5. 内存管理:虽然FreeRTOS本身并不提供复杂的内存管理功能(如虚拟内存),但它提供了一些简单的内存分配和释放函数,方便开发者管理系统内存。
  6. 丰富的通信和同步机制:FreeRTOS提供了消息队列、信号量、互斥量、事件标志组等多种通信和同步机制,用于协调多个任务之间的运行,防止数据竞争和死锁等问题。
  7. 软件定时器:FreeRTOS提供了软件定时器机制,允许开发者创建定时任务,在指定时间间隔后执行特定操作。这对于需要周期性执行任务的应用非常有用。
  8. 低功耗模式:在一些特殊场景中,如长期无人照看的数据采集采集设备、可穿戴设备等,都对设备的 功耗有着很严格的要求,为了迎合这种特殊需求,大多数 MCU 也都有相应的低功耗模式,以此来降低设备的整体功耗。

1.任务调度

FreeRTOS一共支持三种任务调度方式,分别为抢占式调度、时间片调度和协程式调度。

  • 抢占式调度

抢占式调度主要时针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可 以抢占优先级低的任务,只有当优先级高的任务发生阻塞或者被挂起,低优先级的任务才可以运行。

  • 时间片调度

时间片调度主要针对优先级相同的任务,当多个任务的优先级相同时,任务调度器会在每一次系统时钟节拍到的时候切换任务,也就是说CPU轮流运行优先级相同的任务,每个任务运行的时间就是一个系统时钟节拍。有关系统时钟节拍的相关内容,在下文讲解FreeRTOS系统时钟节拍的时候会具体分析。

  • 协程式调度

协程式调度是用于一些资源非常少的设备上的,但是现在已经很少用到了。根据FreeRTOS官方对协程式调度的说法,虽然协程式调度的相关代码还没有被删除,但是今后也不打算继续开发协程式调度,因此并不推荐读者在开发中使用协程式调度。

2.任务管理

任务管理分为单任务管理和多任务管理,

  • 单任务管理

单任务系统的编程方式,即裸机的编程方式,这种编程方式的框架一般都是在 main()函数 中使用一个大循环,在循环中顺序地调用相应的函数以处理相应的事务,这个大循环的部分可 以视为应用程序的后台,而应用程序的前台,则是各种中断的中断服务函数。因此单任务系统 也叫做前后台系统,前后台系统的运行示意图,如下图所示。

从上图可以看出,前后台系统的实时性很差,因为大循环中函数处理的事务没有优先级之分,必须是顺序地被执行处理的,不论待处理事务的紧急程度有多高,没轮到只能等着,虽然 中断能够处理一些紧急的事务,但是在一些大型的嵌入式应用中,这样的单任务系统就会显得力不从心。

  • 多任务管理

多任务系统在处理事务的实时性上比单任务系统要好得多,从宏观上来看,多任务系统的多个任务是可以“同时”运行的,因此紧急的事务就可以无需等待CPU处理完其他事务,在被处理。要注意的是多任务系统的多个任务可以“同时”运行,是从宏观的角度而言的,对于单核的CPU而言,CPU在同一时刻只能够处理一个任务,但是多任务系统的任务调度器会根据相关的任务调度算法,将CPU的使用权分配给任务,在任务获取CPU使用权之后的极短时间(宏观角度)后,任务调度器又会将CPU的使用权分配给其他任务,如此往复,在宏观的角度看来,就像是多个任务同时运行了一样。多任务系统的运行示意图,如下图所示。

从上图可以看出,相较于单任务系统而言,多任务系统的任务也是具有优先级的,高优先级的任务可以像中断的抢占一样,抢占低优先级任务的CPU使用权;优先级相同的任务则各自轮流运行一段极短的时间(宏观角度),从而产生“同时”运行的错觉。以上就是抢占式调度和时间片调度的基本原理。在任务有了优先级的多任务系统中,用户就可以将紧急的事务放在优先级高的任务中进行 处理,那么整个系统的实时性就会大大地提高。

3.中断管理

FreeRTOS的中断配置一般在FreeRTOSConfig.h文件中,用于配置FreeRTOS用到的中断。在这个文件中可以看到一些宏定义,例如configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY、configKERNEL_INTERRUPT_PRIORITY、configMAX_SYSCALL_INTERRUPT_PRIORITY等等。

通过设置FreeRTOS这些宏定义,可管理的最高优先级的中断,例如将configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY该数据级别设置为5,即中断优先级高于5的中断不受FreeRTOS影响,如下图所示。

此功能就是操作BASEPRI寄存器来实现的,用户可以根据实际使用场景来决定此值级别。

4.消息队列

在实际的项目开发中,经常会遇到在任务于任务之间或任务于中断之间需要进行“沟通交流”,这里的“沟通交流”就是消息传递的过程。在不使用操作系统的情况下,函数与函数,或 函数与中断之间的“沟通交流”一般使用一个或多多个全局变量来完成,但是在操作系统中, 因为会涉及“资源管理”的问题,比方说读写冲突,因此使用全局变量在任务于任务或任务于 中断之间进行消息传递,并不是很好的解决方案。FreeRTOS为此提供了“队列”的机制。

队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存储数量有限、大小固定的多个数据,队列中的每一个数据叫做队列项目,队列能够存储队列项目的最大数量称为队列的长度,在创建队列的时候,就需要指定所创建队列的长度及队列项目的大小。因为队列是用来在任务与任务或任务于中断之间传递消息的一种机制,因此队列也叫做消息队列。基于队列,FreeRTOS实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、递归互斥信号量。队列具有如下特性:

  1. 数据存储特性:队列通常采用 FIFO(先进先出)的存储缓冲机制,当有新的数据被写入队列中时,永远都 是写入到队列的尾部,而从队列中读取数据时,永远都是读取队列的头部数据。但同时FreeRTOS队列也支持将数据写入到队列的头部,并且还可以指定是否覆盖先前已经在队列头部的数据。
  2. 多任务访问特性:队列不属于某个特定的任务,可以在任何的任务或中断中往队列中写入消息,或者从队列中读取消息。
  3. 队列读取阻塞特性:在任务从队列读取消息时,可以指定一个阻塞超时时间。如果任务在读取队列时,队列为 空,这时任务将被根据指定的阻塞超时时间添加到阻塞态任务列表中进行阻塞,以等待队列中有可用的消息。当有其他任务或中断将消息写入队列中,因等待队列而阻塞任务将会被添加到 就绪态任务列表中,并读取队列中可用的消息。如果任务因等待队列而阻塞的时间超过指定的 阻塞超时时间,那么任务也将自动被转移到就绪态任务列表中,但不再读取队列中的数据。因为同一个队列可以被多个任务读取,因此可能会有多个任务因等待同一个队列,而被阻 塞,在这种情况下,如果队列中有可用的消息,那么也只有一个任务会被解除阻塞并读取到消 息,并且会按照阻塞的先后和任务的优先级,决定应该解除哪一个队列读取阻塞任务。
  4. 队列写入阻塞特性:与队列读取一样,在任务往队列写入消息时,也可以指定一个阻塞超时时间。如果任务在 写入队列时,队列已经满了,这时任务将被根据指定的阻塞超时时间添加到阻塞态任务列表中 进行阻塞,以等待队列有空闲的位置可以写入消息。指定的阻塞超时时间为任务阻塞的最大时 间,如果在阻塞超时时间到达之前,队列有空闲的位置,那么队列写入阻塞任务将会解除阻塞, 并往队列中写入消息,如果达到指定的阻塞超时时间,队列依旧没有空闲的位置写入消息,那 么队列写入阻塞任务将会自动转移到就绪态任务列表中,但不会往队列中写入消息。因为同一个队列可以被多个任务写入,因此可有会有多个任务因等待统一个任务,而被阻 塞,在这种情况下,如果队列中有空闲的位置,那么也之后一个任务会被解除阻塞并往队列中 写入消息,并且会按照阻塞的先后和任务的优先级,决定应该解除哪一个队列写入阻塞任务。
  5. 队列操作特性:队列操作的过程,包括创建队列、往队列中写入消息、从队列中读取消息等操作。

3.特点说明

FreeRTOS具有如下特点。

  1. 用户可配置内核功能,使其具有可裁剪的轻量级内核,一般FreeRTOS的内核占用内存非常小,通常只有几KB到十几KB,这使得它能够在资源受限的微控制器上运行,成为小型嵌入式系统的理想选择。
  2.  免费开源的源代码,采用C语言编写,遵循MISRA-C标准的编程规范,生成目标代码较小,支持多个平台简单易用,提供一个高层次的信任代码的完整性;
  3. 不限制的任务数量,可根据需求设置任务优先级,在多个任务时可以分配相同的优先权,

  4. 强大的执行跟踪功能,堆栈溢出可检测。

4.优缺点

优点:

  1. 开源:FreeRTOS是开源的,可以免费使用并根据开源许可证进行修改;

  2. 小巧:FreeRTOS的核心代码非常小巧,方便嵌入到微控制器中;

  3. 实时性:FreeRTOS被设计为提供确定的实时响应;

  4. 可移植性:FreeRTOS支持多种硬件架构,包括ARM,NIOS,Microblaze等;

  5. 支持软件组件:FreeRTOS提供了诸如队列、信号量、互斥锁等多种软件组件,简化了开发过程;

  6. 社区支持:FreeRTOS有一个活跃的社区,可以获得技术支持和查找资源。

缺点:

  1. 文档和支持:相比商业操作系统,FreeRTOS的文档和支持可能不够丰富;

  2. 商业支持:虽然FreeRTOS本身是开源的,但是商业支持可能需要购买提供商的额外服务;

  3. 学习曲线:FreeRTOS的学习曲线相对较陡峭,需要开发者理解任务调度、任务同步等实时系统概念;

  4. 更新和维护:FreeRTOS的更新和维护需要开发者自己处理,可能需要定期更新或修复漏洞。

四、参考书籍

FreeRTOS更为详细功能特性参考原子的《FreeRTOS开发指南_V1.10.pdf》,在文末链接处可以下载阅读,该手册会有如下介绍,参考目录。

或者参考freertos给出的Usage Guide《FreeRTOS实时内核使用指南_中文版.pdf》,在文末链接处可以下载阅读,该手册会有如下介绍,参考目录。

五、实现方式

STM32工程实现FreeRTOS操作系统的应用,跟前面几篇讲的lwip实现的方式一样,既可以通过官网上下载移植FreeRTOS到STM32工程项目中,也可以可视化工具STM32CubeMX完成对FreeRTOS操作系统的配置,然后一键化生成工程代码。这两种方式均可以实现,但各有优缺点,通过移植的方式实现,有一定的困难,需要对FreeRTOS的熟练度有一定的要求,如果对FreeRTOS不是足够了解,博主推荐采用STM32CubeMX实现,同时这钟方式也是博主比较推荐的,比较简便快捷。


总结

FreeRTOS涉及到的功能知识点比较多,更多详细的使用参考下方文档链接单片机STM32F407-Case程序代码例程-CSDN文库下载,找到对应的例程目录。

相关文章:

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos(十九) 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理简介 2.功能介绍 1.任务调度 2.任务管理 3.中断管理 4.消息队列 3.特点说明 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是…...

用java配合redis 在springboot上实现令牌桶算法

令牌桶算法配合 Redis 在 Java 中的应用令牌桶算法是一种常用的限流算法,适用于控制请求的频率,防止系统过载。结合 Redis 使用可以实现高效的分布式限流。 一.、引入依赖首先,需要在 pom.xml 文件中引入 spring-boot-starter-data-re…...

DCGAN - 深度卷积生成对抗网络:基于卷积神经网络的GAN

深度卷积生成对抗网络(DCGAN,Deep Convolutional Generative Adversarial Network)是生成对抗网络(GAN)的一种扩展,它通过使用卷积神经网络(CNN)来实现生成器和判别器的构建。与标准…...

51c~SLAM~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM:A General SLAM Framework and Benchmark 开源代码:https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…...

优化使用 Flask 构建视频转 GIF 工具

优化使用 Flask 构建视频转 GIF 工具 优化后的项目概述 在优化后的版本中,我们将实现以下功能: 可设置每个 GIF 的帧率和大小:用户可以选择 GIF 的帧率和输出大小。改进的用户界面:使用更现代的设计使界面更美观、整洁。自定义…...

spring cloud如何实现负载均衡

在Spring Cloud中,实际上并没有直接支持lb:\\这样的URL前缀来自动解析为负载均衡的服务地址。lb:\\这样的表示可能是在某些特定框架、文档或示例中自定义的,但它并不是Spring Cloud官方API或规范的一部分。 Spring Cloud实现负载均衡的方式通常依赖于服…...

leetcode19-删除链表的第n结点

leetcode 19 思路 要删除倒数第n个元素,那么就要找到倒数第n1个元素,那么我们需要两个指针来记录,首先快指针需要先走n1步,然后快慢指针一起进行移动,直到快指针为null的时候,此时慢指针恰好走到倒数第n…...

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试(HTTP和HTTPS) HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头(Request Headers)示例请求标头 响应标头(Response Header…...

3.1 Go函数调用过程

在 Go 语言中,函数调用的核心机制依赖于内存的栈区分配和指针操作,理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后,操作系统会为其分配进程内存,进程内存主要分为以下区域&#x…...

TDengine 做 Apache SuperSet 数据源

‌Apache Superset‌ 是一个现代的企业级商业智能(BI)Web 应用程序,主要用于数据探索和可视化。它由 Apache 软件基金会支持,是一个开源项目,它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…...

08_游戏启动逻辑

1.GameRoot.cs 控制 服务层Svc.cs 和业务层Sys.cs 的初始化 创建脚本GameRoot.cs(游戏入口 已进入就初始化各个系统) 创建资源加载服务.cs Res 将服务层Svc设置成单例类所以需要挂载在GameRoot身上,这样就可以通过GameRoot来调各个服务 接…...

Ardupilot开源无人机之Geek SDK进展2024-2025

Ardupilot开源无人机之Geek SDK进展2024-2025 1. 源由2. 状态3. TODO3.1 【进行中】跟踪目标框3.2 【暂停】onnxruntime版本3.3 【完成】CUDA 11.8版本3.4 【完成】pytorch v2.5.1版本3.5 【未开始】Inference性能3.6 【未开始】特定目标集Training 4. Extra-Work4.1 【完成】C…...

在K8S中,如果后端NFS存储的IP发送变化如何解决?

在Kubernetes中,如果后端NFS存储的IP地址发生了变化,您需要更新与之相关的Peristent Volume(PV)或Persistent Volume Claim(PVC)以及StorageClass中关于NFS服务器IP的配置信息,确保K8S集群内的Pod能够正确连接到新的NFS存储位置。解决方案如下…...

模拟飞行入坑(五) P3D 多通道视角配置 viewgroup

背景: P3D进行多个屏幕显示的时候,如果使用英伟达自带的屏幕融合成一个屏,或者使用P3D单独拉伸窗口,会使得P3D的画面被整体拉伸,又或者,当使用Multichannel进行多个设备联动时,视角同步组合需要配置&#…...

【springboot集成knife4j】

SpringBoot集成knife4j Knife4j是为Java MVC框架集成Swagger生成API文档的一套增强解决方案,它基于Swagger原有的基础上进行了一些改进和增强,提供了更简洁的UI界面,同时支持更多的自用化配置。下面是在Spring Boot项目中集成Knife4j的基本步…...

GPUStack使用

1. 概述 官网:https://github.com/gpustack Open-source GPU cluster manager for running large language models(LLMs) https://github.com/gpustack/gpustack,Manage GPU clusters for running AI models GPUStack 是一个用于运行 AI 模型的开源 GPU 集群管理器。 官…...

如何选择一款助贷获客系统?

做助贷的销售们,一天打几百个电话,跑各种新媒体平台评论区偷流量,每天忙得昏天黑地,也没有多少客户。没有精准数据,助贷销售着急,公司也着急,每天让员工加班找客户,但是巧妇难为无米…...

GDB相比IDE有什么优点

GDB(GNU Debugger)相比于集成开发环境(IDE)具有一些独特的优点,主要体现在其灵活性、可定制性和低级控制能力。具体来说,GDB有以下几个优点: 1. 轻量级且无依赖 GDB是一个命令行工具,不依赖于任何复杂的图形界面或大型库,这使得它非常适合在资源受限的环境中使用,比…...

介绍用于机器学习的 Fashion-MNIST 数据集

介绍用于机器学习的 Fashion-MNIST 数据集 为什么要研究数据集? 让我们首先思考一下为什么要花时间研究数据集的问题。数据是深度学习的主要成分,虽然作为神经网络程序员的任务是让我们的神经网络从我们的数据中学习,但我们仍然有责任了解我…...

【GitHub】登录时的2FA验证

一、如何进行2FA认证 1.在你的浏览器中下载 Authenticator身份验证插件 2.使用身份验证器添加凭证 2.1 使用身份验证器扫描验证二维码 选择扫描二维码...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...