stm32——hal库学习笔记(定时器)
这里写目录标题
- 一、定时器概述(了解)
- 1.1,软件定时原理
- 1.2,定时器定时原理
- 1.3,STM32定时器分类
- 1.4,STM32定时器特性表
- 1.5,STM32基本、通用、高级定时器的功能整体区别
- 二、基本定时器(掌握)
- 2.1,基本定时器简介(了解)
- 2.2,基本定时器框图(熟悉)
- 2.3,定时器计数模式及溢出条件(熟悉)
- 2.4,定时器中断实验相关寄存器(了解)
- 2.5,定时器溢出时间计算方法(掌握)
- 2.6,定时器中断实验配置步骤(掌握)
- 2.7,编程实战:定时器中断实验(掌握)
- 3.5,通用定时器输入捕获实验(掌握)
- 3.5.1,通用定时器输入捕获部分框图介绍(熟悉)
- 3.5.2,通用定时器输入捕获脉宽测量原理(掌握)
- 3.5.3,通用定时器输入捕获实验配置步骤(掌握)
- 3.5.4,编程实战:通用定时器输入捕获实验(掌握)
- 3.6,通用定时器脉冲计数实验(掌握)
- 3.6.1,脉冲计数实验原理(熟悉)
- 3.6.2,通用定时器脉冲计数实验配置步骤(掌握)
- 3.6.3,编程实战:通用定时器脉冲计数实验(掌握)
- 四、高级定时器(掌握)
- 4.1,高级定时器简介(了解)
- 4.2,高级定时器框图(熟悉)
- 4.3,高级定时器输出指定个数PWM实验(掌握)
- 4.3.1,重复计数器特性(熟悉)
- 4.3.2,高级定时器输出指定个数PWM实验原理(掌握)
- 4.3.3,高级定时器输出指定个数PWM实验配置步骤(掌握)
- 4.3.4,编程实战:高级定时器输出指定个数PWM实验(掌握)
- 4.4,高级定时器输出比较模式实验(掌握)
- 4.4.1,高级定时器输出比较模式实验原理(掌握)
- 4.4.2,高级定时器输出比较模式实验配置步骤(掌握)
- 4.4.3,编程实战:高级定时器输出比较模式实验(掌握)
- 4.5,高级定时器互补输出带死区控制实验(掌握)
- 4.5.1,互补输出,还带死区控制,什么意思?(了解)
- 4.5.2,带死区控制的互补输出应用之H桥(了解)
- 4.5.3,捕获/比较通道的输出部分(通道1至3)(熟悉)
- 4.5.4,死区时间计算(掌握)
- 4.5.5,刹车(断路)功能(熟悉)
- 4.5.6,高级定时器互补输出带死区控制实验配置步骤(掌握)
- 4.5.7,编程实战:高级定时器互补输出带死区控制实验(掌握)
- 4.6,高级定时器PWM输入模式实验(掌握)
- 4.6.1,PWM输入模式工作原理(熟悉)
- 4.6.2,PWM输入模式时序(熟悉)
- 4.6.3,高级定时器PWM输入模式实验配置步骤(掌握)
- 4.6.4,编程实战:高级定时器PWM输入模式实验(掌握)
一、定时器概述(了解)
1.1,软件定时原理
使用纯软件(CPU死等)的方式实现定时(延时)功能

1.2,定时器定时原理
使用精准的时基,通过硬件的方式,实现定时功能

1.3,STM32定时器分类

1.4,STM32定时器特性表

1.5,STM32基本、通用、高级定时器的功能整体区别

二、基本定时器(掌握)
2.1,基本定时器简介(了解)

2.2,基本定时器框图(熟悉)

2.3,定时器计数模式及溢出条件(熟悉)

递增计数模式实例说明

中心对齐模式实例说明

2.4,定时器中断实验相关寄存器(了解)
TIM6 和TIM7 控制寄存器 1(TIMx_CR1)

TIM6 和TIM7 DMA/中断使能寄存器(TIMx_DIER)
TIM6 和TIM7 状态寄存器(TIMx_SR)

TIM6 和TIM7 计数器(TIMx_CNT)

TIM6 和TIM7 预分频器(TIMx_PSC)

TIM6 和TIM7 自动重装载寄存器(TIMx_ARR)

2.5,定时器溢出时间计算方法(掌握)

2.6,定时器中断实验配置步骤(掌握)

HAL_TIM_Base_Init()

HAL_TIM_Base_MspInit() //配置NVIC、CLOCK等

HAL_TIM_Base_Start_IT()

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

HAL_TIM_PeriodElapsedCallback()
相关HAL库函数介绍

关键结构体介绍

2.7,编程实战:定时器中断实验(掌握)
btim.c
#include "./BSP/LED/led.h"
#include "./BSP/TIMER/btim.h"
TIM_HandleTypeDef g_timx_handle; /* 定时器句柄 */
/*** @brief 基本定时器TIMX定时中断初始化函数* @note* 基本定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候* 基本定时器的时钟为APB1时钟的2倍, 而APB1为36M, 所以定时器时钟 = 72Mhz* 定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us.* Ft=定时器工作频率,单位:Mhz** @param arr: 自动重装值。* @param psc: 时钟预分频数* @retval 无*/
void btim_timx_int_init(uint16_t arr, uint16_t psc)
{g_timx_handle.Instance = BTIM_TIMX_INT; /* 通用定时器X */g_timx_handle.Init.Prescaler = psc; /* 设置预分频系数 */g_timx_handle.Init.CounterMode = TIM_COUNTERMODE_UP; /* 递增计数模式 */g_timx_handle.Init.Period = arr; /* 自动装载值 */HAL_TIM_Base_Init(&g_timx_handle);HAL_TIM_Base_Start_IT(&g_timx_handle); /* 使能定时器x及其更新中断 */
}/*** @brief 定时器底层驱动,开启时钟,设置中断优先级此函数会被HAL_TIM_Base_Init()函数调用* @param htim:定时器句柄* @retval 无*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIMX_INT){BTIM_TIMX_INT_CLK_ENABLE(); /* 使能TIM时钟 */HAL_NVIC_SetPriority(BTIM_TIMX_INT_IRQn, 1, 3); /* 抢占1,子优先级3,组2 */HAL_NVIC_EnableIRQ(BTIM_TIMX_INT_IRQn); /* 开启ITM3中断 */}
}/*** @brief 定时器TIMX中断服务函数* @param 无* @retval 无*/
void BTIM_TIMX_INT_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_timx_handle); /* 定时器中断公共处理函数 */
}/*** @brief 定时器更新中断回调函数* @param htim:定时器句柄* @retval 无*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIMX_INT){LED1_TOGGLE(); /* LED1反转 */}
}
btim.h
#ifndef __BTIM_H
#define __BTIM_H#include "./SYSTEM/sys/sys.h"
/******************************************************************************************/
/* 基本定时器 定义 */
/* TIMX 中断定义 * 默认是针对TIM6/TIM7* 注意: 通过修改这4个宏定义,可以支持TIM1~TIM8任意一个定时器.*/#define BTIM_TIMX_INT TIM6
#define BTIM_TIMX_INT_IRQn TIM6_DAC_IRQn
#define BTIM_TIMX_INT_IRQHandler TIM6_DAC_IRQHandler
#define BTIM_TIMX_INT_CLK_ENABLE() do{ __HAL_RCC_TIM6_CLK_ENABLE(); }while(0) /* TIM6 时钟使能 */
/******************************************************************************************/
void btim_timx_int_init(uint16_t arr, uint16_t psc); /* 基本定时器 定时中断初始化函数 */#endif
main.c
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/TIMER/btim.h"int main(void)
{HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */delay_init(72); /* 延时初始化 */usart_init(115200); /* 串口初始化为115200 */led_init(); /* 初始化LED */btim_timx_int_init(5000 - 1, 7200 - 1); /* 10Khz的计数频率,计数5K次为500ms */while (1){LED0_TOGGLE();delay_ms(200);}
}
三、通用定时器(掌握)
3.1,通用定时器简介(了解)

3.2,通用定时器框图(熟悉)


3.3,计数器时钟源(掌握)

计数器时钟源寄存器设置方法(F1为例)

外部时钟模式1

外部时钟模式2

使用一个定时器作为另一个定时器的预分频器(F1为例)

解读通用定时器中断实验

3.4,通用定时器PWM输出实验(掌握)
3.4.1,通用定时器输出比较部分框图介绍(熟悉)

捕获/比较通道1的主电路—输出部分

捕获/比较通道的输出部分(通道1)

3.4.2,通用定时器输出PWM原理(掌握)

3.4.3,PWM模式(熟悉)


3.4.4,通用定时器PWM输出实验配置步骤(掌握)

HAL_TIM_PWM_Init()

HAL_TIM_PWM_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_PWM_ConfigChannel()

HAL_TIM_PWM_Start()

__HAL_TIM_SET_COMPARE()

__HAL_TIM_ENABLE_OCxPRELOAD()
相关HAL库函数介绍

关键结构体介绍

3.4.5,编程实战:通用定时器PWM输出实验(掌握)
3.5,通用定时器输入捕获实验(掌握)
3.5.1,通用定时器输入捕获部分框图介绍(熟悉)

捕获/比较通道的输入部分(通道1)

3.5.2,通用定时器输入捕获脉宽测量原理(掌握)

3.5.3,通用定时器输入捕获实验配置步骤(掌握)

HAL_TIM_IC_Init()

HAL_TIM_IC_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_IC_ConfigChannel()

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

__HAL_TIM_ENABLE_IT()

HAL_TIM_IC_Start_IT()

TIMx_IRQHandler()等、 HAL_TIM_IRQHandler()

HAL_TIM_PeriodElapsedCallback()、HAL_TIM_IC_CaptureCallback()
相关HAL库函数介绍

关键结构体介绍

3.5.4,编程实战:通用定时器输入捕获实验(掌握)
通过定时器5通道1来捕获按键高电平脉宽时间,通过串口打印出来

3.6,通用定时器脉冲计数实验(掌握)
3.6.1,脉冲计数实验原理(熟悉)

外部时钟模式1

3.6.2,通用定时器脉冲计数实验配置步骤(掌握)

HAL_TIM_IC_Init()

HAL_TIM_IC_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_SlaveConfigSynchro()

HAL_TIM_IC_Start()

__HAL_TIM_GET_COUNTER()

__HAL_TIM_SET_COUNTER()
相关HAL库函数介绍

关键结构体介绍

3.6.3,编程实战:通用定时器脉冲计数实验(掌握)
将定时器2通道1输入的高电平脉冲作为定时器2的时钟,并通过串口打印脉冲数

四、高级定时器(掌握)
4.1,高级定时器简介(了解)

4.2,高级定时器框图(熟悉)

4.3,高级定时器输出指定个数PWM实验(掌握)
4.3.1,重复计数器特性(熟悉)

计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件
如果设置RCR为N,
更新事件将在N+1
次溢出时发生
4.3.2,高级定时器输出指定个数PWM实验原理(掌握)

4.3.3,高级定时器输出指定个数PWM实验配置步骤(掌握)

HAL_TIM_PWM_Init()

HAL_TIM_PWM_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_PWM_ConfigChannel()

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

__HAL_TIM_ENABLE_IT()

HAL_TIM_PWM_Start()

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

HAL_TIM_PeriodElapsedCallback()
相关HAL库函数介绍

关键结构体介绍

4.3.4,编程实战:高级定时器输出指定个数PWM实验(掌握)
通过定时器8通道1实现指定个数PWM输出,用于控制LED1的亮灭

4.4,高级定时器输出比较模式实验(掌握)
4.4.1,高级定时器输出比较模式实验原理(掌握)

4.4.2,高级定时器输出比较模式实验配置步骤(掌握)

HAL_TIM_OC_Init()

HAL_TIM_OC_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_OC_ConfigChannel()

__HAL_TIM_ENABLE_OCxPRELOAD()

HAL_TIM_OC_Start()

__HAL_TIM_SET_COMPARE()
相关HAL库函数介绍

关键结构体介绍

4.4.3,编程实战:高级定时器输出比较模式实验(掌握)
通过定时器8通道1/2/3/4输出相位分别为25%、50%、75%、100%的PWM

4.5,高级定时器互补输出带死区控制实验(掌握)
4.5.1,互补输出,还带死区控制,什么意思?(了解)

4.5.2,带死区控制的互补输出应用之H桥(了解)

4.5.3,捕获/比较通道的输出部分(通道1至3)(熟悉)

4.5.4,死区时间计算(掌握)

举个栗子(F1为例):DTG[7:0]=250
250,即二进制:1111 1010,选第四条
DT = (32+26)1655.56 ns=51.55968us
4.5.5,刹车(断路)功能(熟悉)

发生刹车后,会怎么样?

4.5.6,高级定时器互补输出带死区控制实验配置步骤(掌握)

HAL_TIM_PWM_Init()

HAL_TIM_PWM_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_PWM_ConfigChannel()

HAL_TIMEx_ConfigBreakDeadTime()

HAL_TIM_PWM_Start()

HAL_TIMEx_PWMN_Start()
相关HAL库函数介绍

关键结构体介绍

4.5.7,编程实战:高级定时器互补输出带死区控制实验(掌握)
通过定时器1通道1输出频率为1KHz,占空比为70%的PWM,使用PWM模式1
使能互补输出并设置死区时间控制:设置DTG为100(5.56us),进行验证死区时间是否正确
使能刹车功能:刹车输入信号高电平有效,配置输出空闲状态等,最后用示波器验证

4.6,高级定时器PWM输入模式实验(掌握)
4.6.1,PWM输入模式工作原理(熟悉)

4.6.2,PWM输入模式时序(熟悉)

4.6.3,高级定时器PWM输入模式实验配置步骤(掌握)

HAL_TIM_IC_Init()

HAL_TIM_IC_MspInit() //配置NVIC、CLOCK、GPIO等

HAL_TIM_IC_ConfigChannel()

HAL_TIM_SlaveConfigSynchro()

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

HAL_TIM_IC_Start_IT()、 HAL_TIM_IC_Start()

TIMx_IRQHandler()等、HAL_TIM_IRQHandler()

HAL_TIM_IC_CaptureCallback()
相关HAL库函数介绍

关键结构体介绍

4.6.4,编程实战:高级定时器PWM输入模式实验(掌握)

相关文章:
stm32——hal库学习笔记(定时器)
这里写目录标题 一、定时器概述(了解)1.1,软件定时原理1.2,定时器定时原理1.3,STM32定时器分类1.4,STM32定时器特性表1.5,STM32基本、通用、高级定时器的功能整体区别 二、基本定时器࿰…...
方法鉴权:基于 Spring Aop 的注解鉴权
在Spring框架中,可以使用面向切面编程(AOP)来实现注解鉴权。这通常涉及到定义一个切面(Aspect),该切面会在方法执行前进行拦截,并根据注解value值来决定是否允许执行该方法。 简单思路…...
多模态相关论文笔记
(cilp) Learning Transferable Visual Models From Natural Language Supervision 从自然语言监督中学习可迁移的视觉模型 openAI 2021年2月 48页 PDF CODE CLIP(Contrastive Language-Image Pre-Training)对比语言图像预训练模型 引言 它比ImageNet模型效果更好,…...
maven 打包命令
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。 Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过po…...
开源模型应用落地-业务优化篇(六)
一、前言 经过线程池优化、请求排队和服务实例水平扩容等措施,整个AI服务链路的性能得到了显著地提升。但是,作为追求卓越的大家,绝不会止步于此。我们的目标是在降低成本和提高效率方面不断努力,追求最佳结果。如果你们在实施AI项目方面有经验,那一定会对GPU服务器的高昂…...
编程笔记 Golang基础 015 数据类型:布尔类型
编程笔记 Golang基础 015 数据类型:布尔类型 在Go语言中,布尔类型(bool)是一种基本数据类型,用于表示逻辑值,即真或假、是或否的情况。它主要用于条件判断和逻辑运算。 定义与取值: Go语言中的布…...
腾讯云OSS文件上传功能
腾讯云COS介绍 腾讯云COS(Cloud Object Storage)是一种基于对象的存储服务,用于存储和管理海量的非结构化数据,如图片、音视频文件、备份数据等。它具有以下特点和优势: 高可靠性:采用分布式存储架构&…...
2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用
前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…...
如何使用idea连接服务器上的mysql?
安全组进行开放 具体步骤 关闭防火墙 开放端口号 重启防火墙 firewall-cmd --reload在mysql进行修改配置 update user set host % where user root;flush privileges;使得其他网络也可以连接这个数据库 另外如果想要sqlyog或者其他图形化界面要连接到数据库可以看下面这…...
主流开发语言和开发环境介绍
主流开发语言和开发环境介绍文章目录 ⭐️ 主流开发语言:2024年2月编程语言排行榜(TIOBE前十)⭐️ 主流开发语言开发环境介绍1.Python1.1 **IDLE**1.2 **PyCharm**1.3 **Anaconda**1.4 **Jupyter Notebook**1.5 **Sublime Text** 2.C2.1 **De…...
samber/lo 库的使用方法: 处理 channel
samber/lo 库的使用方法: 处理 channel samber/lo 是一个 Go 语言库,提供了一些常用的集合操作函数,如 Filter、Map 和 FilterMap。汇总目录页面 这个库函数太多,因此我决定按照功能分别介绍,本文介绍的是 samber/lo…...
铌酸锂芯片与精密划片机:科技突破引领半导体制造新潮流
在当今快速发展的半导体行业中,一种结合了铌酸锂芯片与精密划片机的创新技术正在崭露头角。这种技术不仅引领着半导体制造领域的进步,更为其他产业带来了前所未有的变革。 铌酸锂芯片是一种新型的微电子芯片,它使用铌酸锂作为基底材料&#x…...
大数据计算技术秘史(上篇)
在之前的文章《2024 年,一个大数据从业者决定……》《存储技术背后的那些事儿》中,我们粗略地回顾了大数据领域的存储技术。在解决了「数据怎么存」之后,下一步就是解决「数据怎么用」的问题。 其实在大数据技术兴起之前,对于用户…...
论文精读--word2vec
word2vec从大量文本语料中以无监督方式学习语义知识,是用来生成词向量的工具 把文本分散嵌入到另一个离散空间,称作分布式表示,又称为词嵌入(word embedding)或词向量 Abstract We propose two novel model architec…...
Android13 针对low memory killer内存调优
引入概念 在旧版本的安卓系统中,当触发lmk(low memory killer)的时候一般认为就是内存不足导致,但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小,io,cpu同样会做评判,从而保证设备…...
【深入理解设计模式】 工厂设计模式
工厂设计模式 工厂设计模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的接口。在工厂设计模式中,我们定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂设计模式的目…...
Windows下搭建EFK实例
资源下载 elasticSearch :下载最新版本的就行 kibana filebeat:注意选择压缩包下载 更新elasticsearch.yml,默认端口9200: # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most …...
工厂方法模式Factory Method
1.模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类 2.使用场景 1.当你不知道改使用对象的确切类型的时候 2.当你希望为库或框架提供扩展其内部组件的方法时 主要优点: 1.将具体产品和创建…...
Vue的个人笔记
Vue学习小tips ctrl s ----> 运行 alt b <scrip> 链接 <script src"https://cdn.jsdelivr.net/npm/vue2.7.16/dist/vue.js"></script> 插值表达式 指令...
linux platform架构下I2C接口驱动开发
目录 概述 1 认识I2C协议 1.1 初识I2C 1.2 I2C物理层 1.3 I2C协议分析 1.3.1 Start、Stop、ACK 信号 1.3.2 I2C协议的操作流程 1.3.3 操作I2C注意的问题 2 linux platform驱动开发 2.1 更新设备树 2.1.1 添加驱动节点 2.1.2 编译.dts 2.1.3 更新板卡中的.dtb 2.2 …...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
