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

【正点原子STM32连载】第十八章 通用定时器PWM输出实验 摘自【正点原子】APM32F407最小系统板使用指南

1)实验平台:正点原子stm32f103战舰开发板V4
2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html#

第十八章 通用定时器PWM输出实验

本章将介绍使用APM32F407的通用定时器输出PWM。通过本章的学习,读者将学习到通用定时器输出比较的使用。
本章分为如下几个小节:
18.1 硬件设计
18.2 程序设计
18.3 下载验证

18.1 硬件设计

18.1.1 例程功能

  1. LED0由暗变亮,再从亮变暗,依次循环
    18.1.2 硬件资源
  2. LED
    LED0 - PF9
  3. 定时器14
    通道1 - PF9
    18.1.3 原理图
    本章实验使用的定时器14为APM32F407的片上资源,因此没有对应的连接原理图。
    18.2 程序设计
    18.2.1 Geehy标准库的TMR驱动
    本章实验将使用TMR14从通道1(PF9引脚)输出PWM,因此除了像上章实验配置定时器的基本参数外,还需要配置通用定时器的输出比较通道,具体的步骤如下:
    ①:配置TMR14的自动重装载值和预分频器数值等参数
    ②:配置输出比较通道1
    ③:使能TMR14
    ④:使能输出比较通道1输出
    ⑤:修改比较值以修改PWM输出的占空比
    在Geehy标准库中对应的驱动函数如下:
    ①:配置TMR
    请见第16.2.1小节中配置TMR的相关内容。
    ②:配置输出比较通道
    该函数用于配置TMR的任意输出比较通道,其函数原型如下所示:
void TMR_ConfigOC1(TMR_T* tmr, TMR_OCConfig_T* OCConfig);
void TMR_ConfigOC2(TMR_T* tmr, TMR_OCConfig_T* OCConfig);
void TMR_ConfigOC3(TMR_T* tmr, TMR_OCConfig_T* OCConfig);
void TMR_ConfigOC4(TMR_T* tmr, TMR_OCConfig_T* OCConfig);

该函数的形参描述,如下表所示:
在这里插入图片描述

该函数的返回值描述,如下表所示:
在这里插入图片描述

该函数使用TMR_OCConfig_T类型的结构体变量传入TMR输出比较通道的配置参数,该结构体的定义如下所示:

typedef enum
{TMR_OC_MODE_TMRING		= 0x00,	/* 冻结 */TMR_OC_MODE_ACTIVE		= 0x01,	/* 匹配时输出置为高 */TMR_OC_MODE_INACTIVE	= 0x02,	/* 匹配时输出置为低 */TMR_OC_MODE_TOGGLE		= 0x03,	/* 匹配时输出翻转 */TMR_OC_MODE_LOWLEVEL	= 0x04,	/* 强制输出为低 */TMR_OC_MODE_HIGHLEVEL	= 0x05,	/* 强制输出为高 */TMR_OC_MODE_PWM1			= 0x06,	/* PWM模式1 */TMR_OC_MODE_PWM2			= 0x07	/* PWM模式2 */
} TMR_OC_MODE_T;typedef enum
{TMR_OC_STATE_DISABLE,			/* 禁止输出 */TMR_OC_STATE_ENABLE				/* 开启输出 */
} TMR_OC_STATE_T;typedef enum
{TMR_OC_NSTATE_DISABLE,			/* 禁止互补输出 */TMR_OC_NSTATE_ENABLE			/* 开启互补输出 */
} TMR_OC_NSTATE_T;typedef enum
{TMR_OC_POLARITY_HIGH,			/* 高电平有效 */TMR_OC_POLARITY_LOW				/* 低电平有效 */
} TMR_OC_POLARITY_T;typedef enum
{TMR_OC_NPOLARITY_HIGH,			/* 互补高电平有效 */TMR_OC_NPOLARITY_LOW			/* 互补低电平有效 */
} TMR_OC_NPOLARITY_T;typedef enum
{TMR_OC_IDLE_STATE_RESET,		/* 空闲时为低电平 */TMR_OC_IDLE_STATE_SET			/* 空闲时为高电平 */
} TMR_OC_IDLE_STATE_T;typedef enum
{TMR_OC_NIDLE_STATE_RESET,		/* 互补空闲时为低电平 */TMR_OC_NIDLE_STATE_SET			/* 互补空闲时为高电平 */
} TMR_OC_NIDLE_STATE_T;typedef struct
{TMR_OC_MODE_T			mode;			/* 模式 */TMR_OC_STATE_T			outputState;	/* 输出状态 */TMR_OC_NSTATE_T			outputNState;	/* 互补通道输出状态 */TMR_OC_POLARITY_T		polarity;		/* 极性 */TMR_OC_NPOLARITY_T		nPolarity;		/* 互补通道极性 */TMR_OC_IDLE_STATE_T		idleState;		/* 空闲状态 */TMR_OC_NIDLE_STATE_T	nIdleState;		/* 互补通道空闲状态 */uint16_t					pulse;			/* 比较值 */
} TMR_OCConfig_T;
该函数的使用示例,如下所示:
#include "apm32f4xx.h"
#include "apm32f4xx_tmr.h"void example_fun(void)
{TMR_OCConfig_T tmr_oc_init_struct;/* 配置TMR1输出比较通道1及其互补通道 */tmr_oc_init_struct.mode			= TMR_OC_MODE_PWM1;tmr_oc_init_struct.outputState	= TMR_OC_STATE_ENABLE;tmr_oc_init_struct.outputNState	= TMR_OC_NSTATE_ENABLE;tmr_oc_init_struct.polarity		= TMR_OC_POLARITY_LOW;tmr_oc_init_struct.nPolarity	= TMR_OC_NPOLARITY_HIGH;tmr_oc_init_struct.idleState	= TMR_OC_IDLE_STATE_RESET;tmr_oc_init_struct.nIdleState	= TMR_OC_NIDLE_STATE_RESET;tmr_oc_init_struct.pulse		= 255;TMR_ConfigOC1(TMR1, &tmr_oc_init_struct);
}

③:使能TMR
请见第16.2.1小节中使能TMR的相关内容。
④:使能捕获比较通道
该函数用于使能捕获比较通道,其函数原型如下所示:
void TMR_EnableCCxChannel(TMR_T* tmr, TMR_CHANNEL_T channel);
该函数的形参描述,如下表所示:
在这里插入图片描述

表18.2.1.3 函数TMR_EnableCCxChannel()形参描述
该函数的返回值描述,如下表所示:
返回值 描述
无 无
表18.2.1.4 函数TMR_EnableCCxChannel()返回值描述
该函数的使用示例,如下所示:

#include "apm32f4xx.h"
#include "apm32f4xx_tmr.h"void example_fun(void)
{/* 使能TMR1捕获比较通道1 */TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_1);
}

⑤:配置捕获比较值
该函数用于配置TMR指定通道的捕获比较值,其函数原型如下所示:

void TMR_ConfigCompare1(TMR_T* tmr, uint32_t compare1);
void TMR_ConfigCompare2(TMR_T* tmr, uint32_t compare2);
void TMR_ConfigCompare3(TMR_T* tmr, uint32_t compare3);
void TMR_ConfigCompare4(TMR_T* tmr, uint32_t compare4);

该函数的形参描述,如下表所示:
形参 描述
tmr 指向TMR外设结构体的指针
例如:TMR1、TMR2等(在apm32f4xx.h文件中有定义)
comparen 捕获比较值
表18.2.1.5 函数TMR_ConfigComparen()形参描述
该函数的返回值描述,如下表所示:
返回值 描述
无 无
表18.2.1.6 函数TMR_ConfigComparen()返回值描述
该函数的使用示例,如下所示:

#include "apm32f4xx.h"
#include "apm32f4xx_tmr.h"void example_fun(void)
{/* 配置TMR1捕获比较寄存器1的值 */TMR_ConfigCompare1(TMR1, 200);
}

18.2.2 通用定时器驱动
本章实验的通用定时器驱动主要负责向应用层提供通用定时器的初始化函数。本章实验中,通用定时器的驱动代码包括gtmr.c和gtmr.h两个文件。
通用定时器驱动中,对TMR、GPIO的相关宏定义,如下所示:

#define GTMR_TMRX_PWM				TMR14
#define GTMR_TMRX_PWM_CHY			TMR_CHANNEL_1
#define GTMR_TMRX_PWM_CLK_ENABLE()							\do {														\RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR14);	\} while (0)#define GTMR_TMRX_PWM_CHY_GPIO_PORT		GPIOF
#define GTMR_TMRX_PWM_CHY_GPIO_PIN			GPIO_PIN_9
#define GTMR_TMRX_PWM_CHY_GPIO_PIN_SOURCE	GPIO_PIN_SOURCE_9
#define GTMR_TMRX_PWM_CHY_GPIO_AF			GPIO_AF_TMR14
#define GTMR_TMRX_PWM_CHY_GPIO_CLK_ENABLE()				\do {														\RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOF);	\} while (0)
通用定时器驱动中TMR14的初始化函数,如下所示:
/*** @brief	初始化通用定时器PWM输出* @note	当APB1PSC!=1时,定时器的时钟频率为APB1时钟的2倍* 			因此定时器的时钟频率为84MHz* 			定时器溢出时间计算方法:Tout = ((arr + 1) * (psc + 1)) / TMRxCLK* 			TMRxCLK=定时器时钟频率,单位MHz* @param	arr: 自动重装载值* @param	psc: 预分频器数值* @retval	无*/
void gtmr_tmrx_pwm_chy_init(uint16_t arr, uint16_t psc)
{GPIO_Config_T gpio_init_struct;TMR_BaseConfig_T tmr_init_struct;TMR_OCConfig_T tmr_oc_init_struct;/* 使能时钟 */GTMR_TMRX_PWM_CLK_ENABLE();				/* 使能通用定时器时钟 */GTMR_TMRX_PWM_CHY_GPIO_CLK_ENABLE();	/* 使能PWM输出引脚端口时钟 *//* 配置PWM输出引脚 */gpio_init_struct.pin	= GTMR_TMRX_PWM_CHY_GPIO_PIN;	/* PWM输出引脚 */gpio_init_struct.mode	= GPIO_MODE_AF;					/* 复用功能模式 */gpio_init_struct.speed	= GPIO_SPEED_100MHz;			/* 高速 */gpio_init_struct.otype	= GPIO_OTYPE_PP;				/* 推挽输出 */gpio_init_struct.pupd	= GPIO_PUPD_DOWN;				/* 下拉 *//* 配置PWM输出引脚 */GPIO_Config(GTMR_TMRX_PWM_CHY_GPIO_PORT, &gpio_init_struct);/* 配置引脚复用功能 */GPIO_ConfigPinAF(	GTMR_TMRX_PWM_CHY_GPIO_PORT,GTMR_TMRX_PWM_CHY_GPIO_PIN_SOURCE,GTMR_TMRX_PWM_CHY_GPIO_AF);/* 配置通用定时器 */tmr_init_struct.countMode		= TMR_COUNTER_MODE_UP;	/* 向上计数 */tmr_init_struct.clockDivision	= TMR_CLOCK_DIV_1;		/* 时钟分频系数 */tmr_init_struct.period			= arr;					/* 自动重装载值 */tmr_init_struct.division		= psc;					/* 预分频器数值 */TMR_ConfigTimeBase(GTMR_TMRX_PWM, &tmr_init_struct);	/* 配置通用定时器 *//* 配置输出比较通道 */tmr_oc_init_struct.mode			= TMR_OC_MODE_PWM1;		/* PWM模式1 */tmr_oc_init_struct.outputState	= TMR_OC_STATE_DISABLE;	/* 使能PWM输出 */tmr_oc_init_struct.polarity		= TMR_OC_POLARITY_LOW;	/* 低电平有效 */tmr_oc_init_struct.pulse		= (arr + 1) >> 1;		/* PWM有效电平脉宽 */TMR_ConfigOC1(GTMR_TMRX_PWM, &tmr_oc_init_struct);		/* 配置输出比较通道1 *//* 使能通用定时器和PWM输出 */TMR_Enable(GTMR_TMRX_PWM);								/* 使能通用定时器 */TMR_EnableCCxChannel(GTMR_TMRX_PWM, GTMR_TMRX_PWM_CHY);/* 使能输出比较通道输出 */
}

从TMR14的初始化代码中可以看到,不仅配置了TMR14的自动重装载值和预分频器数值等基本参数,还配置了TMR14的输出比较通道1,由于需要使用GPIO引脚输出PWM,因此对应的GPIO引脚也配置了复用功能。
18.2.3 实验应用代码
本章实验的应用代码,如下所示:

int main(void)
{uint32_t ledpwmval = 0;uint8_t dir = 1;NVIC_ConfigPriorityGroup(NVIC_PRIORITY_GROUP_3);	/* 设置中断优先级分组为组3 */sys_apm32_clock_init(336, 8, 2, 7);					/* 配置系统时钟 */delay_init(168);										/* 初始化延时功能 */usart_init(115200);									/* 初始化串口 */gtmr_tmrx_pwm_chy_init(500 - 1, 84 - 1);			/* 初始化通用定时器PWM输出 */while (1){delay_ms(10);/* 根据方向修改ledpwmval */if (dir == 1){ledpwmval++;}else{ledpwmval--;}/* 当ledpwmval大于300时,方向改为递减 */if (ledpwmval > 300){dir = 0;}/* 当ledpwmval等于0时,方向改为递增 */if (ledpwmval == 0){dir = 1;}/* 修改通用定时器输出占空比 */TMR_ConfigCompare1(GTMR_TMRX_PWM, ledpwmval);}
}

从上面的代码中可以看到,在初始化完TMR14输出PWM后,就不断地改变TMR14通道1的比较值,以达到改变PWM占空比,又因为PWM由PF9引脚输出,PF9引脚连接至LED0,因此LED0的亮度也将随之改变,实现呼吸灯的效果。
18.3 下载验证
在完成编译和烧录操作后,可以看到板子上的LED0先由暗慢慢变亮,再由亮慢慢变暗,依次循环,实现了呼吸灯的效果。

相关文章:

【正点原子STM32连载】第十八章 通用定时器PWM输出实验 摘自【正点原子】APM32F407最小系统板使用指南

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第十…...

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…...

6.链路追踪-Zipkin

链路追踪(Distributed Tracing)是一种用于监视分布式应用程序的技术,通过收集和展示分布式系统中不同组件之间的调用和交互情况,帮助开发人员和运维团队理解系统中的请求流程、性能瓶颈和异常情况。 1.Zipkin Zipkin 是一个开源的…...

基于ACF,AMDF算法的语音编码matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .......................................................................... plotFlag …...

python 基础篇 day 1 初识变量和数据类型

文章目录 变量变量作用——用于存储和表示数据。变量命名规则命名法大驼峰小驼峰下划体n j i a x 通常作为临时变量使用 建议 变量种类全局变量(Global Variables)局部变量(Local Variables)静态变量(Static Variables…...

Window下部署使用Stable Diffusion AI开源项目绘图

Window下部署使用Stable Diffusion AI开源项目绘图 前言前提条件相关介绍Stable Diffusion AI绘图下载项目环境要求环境下载运行项目打开网址,即可体验文字生成图像(txt2img)庐山瀑布 参考 本文里面的风景图,均由Stable Diffusion…...

【MySQL】好好学习一下InnoDB中的页

文章目录 一. 前言二. 从宏观层面看页三. 页的基本内容3.1 页的数据结构3.2 用户空间内的数据行结构3.3 页目录 四. 问题集4.1 索引 和 数据页 有什么区别4.2 页的大小是什么决定的4.3 页的大小对哪些情况有影响4.4 一般情况下说的链表有哪几个4.5 如果页的空间满了怎么办4.6 如…...

git开发常用命令

版本回退 soft:git reset --soft HEAD^ 将版本库回退一个版本,且这次提交的所有文件都移动到暂存区 mixed(默认):git reset HEAD^ 将版本库回退一个版本,且这次提交的所有文件都移动到工作区,会…...

WEB APIs day5

一、window对象 BOM属于window对象 1.BOM(浏览器对象模型) bom里面包含着dom,只不过bom我们平时用得比较少,我们经常使用的是dom操作,因为我们页面中的这些标签都是在dom中取的,所以我们操作dom多一点。 window对象…...

html动态爱心代码【一】(附源码)

前言 七夕马上就要到了,为了帮助大家高效表白,下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐,可用于520,情人节,生日,表白等场景,可直接使用。 效果演示 文案修改 var loverNam…...

【仿写tomcat】六、解析xml文件配置端口、线程池核心参数

线程池改造 上一篇文章中我们用了Excutors创建了线程,这里我们将它改造成包含所有线程池核心参数的形式。 package com.tomcatServer.http;import java.util.concurrent.*;/*** 线程池跑龙套** author ez4sterben* date 2023/08/05*/ public class ThreadPool {pr…...

Android Studio 接入OpenCV最简单的例子 : 实现灰度图效果

1. 前言 上文 我们在Windows电脑上实现了人脸功能,接下来我们要把人脸识别的功能移植到Android上。 那么首先第一步,就是要创建一个Native的Android项目,并且配置好OpenGL,并能够调用成功。 这里我们使用的是openCV-4.8.0&#x…...

(1)、扩展SpringCache一站式解决缓存击穿,穿透,雪崩

1、问题描述 我们在使用SpringCache的@Cacheable注解时,发现并没有设置过期时间这个功能。 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @I...

Rancher使用cert-manager安装报错解决

报错: rancher-rke-01:~/rke/rancher-helm/rancher # helm install rancher rancher-stable/rancher --namespace cattle-system --set hostnamewww.rancher.local Error: INSTALLATION FAILED: Internal error occurred: failed calling webhook "webhook…...

Harvard transformer NLP 模型 openNMT 简介入门

项目网址: OpenNMT - Open-Source Neural Machine Translation logo: 一,从应用的层面先跑通 Harvard transformer GitHub - harvardnlp/annotated-transformer: An annotated implementation of the Transformer paper. ​git clone https…...

【数据结构OJ题】用栈实现队列

原题链接:https://leetcode.cn/problems/implement-queue-using-stacks/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 用两个栈实现,一个栈进行入队操作,另一个栈进行出队操作。 出队操作: 当出队的栈…...

通达信指标公式15:除权除息数据统计分析

#1.关于除权除息指标的介绍:本指标是小红牛原创指标之一,觉得有必要研究一下这个问题,所以就花时间整理一下这个指标相关内容,大家可以在本源码基础上,进一步优化自己的思路。本指标为通达信幅图指标,可以做…...

day-27 代码随想录算法训练营(19)回溯part03

39.组合总和 分析:同一个数可以选多次,但是不能有重复的答案; 思路:横向遍历,纵向递归(不同的是递归的时候不需要跳到下一个位置,因为同一个数可以选多次) class Solution { publ…...

CSDN编程题-每日一练(2023-08-22)

CSDN编程题-每日一练(2023-08-22) 一、题目名称:最长递增区间二、题目名称:K树三、题目名称:小Q的价值无向图一、题目名称:最长递增区间 时间限制:1000ms内存限制:256M 题目描述: 给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3。…...

使用 KubeBlocks 为 K8s 提供稳如老狗的数据库服务

原文链接:https://forum.laf.run/d/994 大家好!今天这篇文章主要向大家介绍 Sealos 的数据库服务。在 Sealos 上数据库后端服务由 KubeBlocks 提供,为用户的数据库应用保驾护航。无论你是在公有云还是本地环境中使用,Sealos 都能为…...

SFL212B-10-21-15、SFL212B-20-21-40喷嘴挡板伺服阀

SFL212B-05-21-10、SFL212B-10-21-15、SFL212B-20-21-40、SFL212-05-32-10、SFL212-10-32-15、SFL212-20-32-40、SFL212A-05-21-10、SFL212A-10-21-15、SFL212A-20-21-40喷嘴挡板力反馈伺服阀,外置伺服放大器,四通,带阀芯阀套的两级伺服阀&am…...

阿里云100元预算可选的云服务器配置2核2G3M带宽

阿里云服务器100元可以买到哪些配置?如果是一年时长,轻量应用服务器2核2G3M带宽一年108元,系统盘为50GB高效云盘。以前阿里云服务器ECS卖过35元一年、69元、88元、89元和99元的都有过,但是现在整体费用上涨,入门级云服…...

Linux问题--docker启动mysql时提示3306端口被占用

问题描述: 解决方法: 1.如果需要kill掉mysqld服务可以先通过 lsof -i :3306 2. 查询到占用3306的PID,随后使用 kill -15 PID 来kill掉mysqld服务。 最后结果...

2023年中秋月饼市场趋势分析(月饼京东销售数据分析)

中秋将至,月饼作为节令食品将再次掀起消费热潮。今年月饼市场的需求如何呢,是更受欢迎还是热度有所降低,结合数据我们一起来看今年月饼市场的销售表现。 在这里,我们分别选取了2022年第31周-32周和2023年第31周-32周(…...

A Survey on Model Compression for Large Language Models

本文是LLM系列文章,关于模型压缩相关综述,针对《A Survey on Model Compression for Large Language Models》的翻译。 大模型的模型压缩综述 摘要1 引言2 方法3 度量和基准3.1 度量3.2 基准 4 挑战和未来方向5 结论 摘要 大型语言模型(LLM…...

读取/加载 properties/yml 配置文件

大家好 , 我是苏麟 , 今天带来一个简单好用的东西 . 读取/加载 properties/yml配置文件 基于PropertiesConfiguration读取配置文件 引入依赖 <!--加载yml资源--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-b…...

UG\NX二次开发 创建中心线

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C++,Qt-CSDN博客 简介: 下面是在制图模块创建中心线的例子,用的是ufun函数。 效果: 代码: #include "me.hpp"#include <stdio.h> #include <string.h> #include <uf.h>…...

用java语言写一个网页爬虫 用于获取图片

以下是一个简单的Java程序&#xff0c;用于爬取网站上的图片并下载到本地文件夹&#xff1a; import java.io.*; import java.net.*;public class ImageSpider {public static void main(String[] args) {// 确定要爬取的网站URL和本地保存目录String url "https://www.…...

三数之和-LeetCode

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&a…...

ubuntu 对多CPU统一设置高性能模式

一、问题描述 之前在网上找到的CPU设置高性能模式&#xff0c;只能设置CPU0单个CPU&#xff0c;下述是对多核CPU统一设置工作模式。 二、软件安装与设置 执行下述命令sudo apt-get install indicator-cpufreq,然后重启电脑。此时&#xff0c;界面右上角会出现如下图标&#xf…...

志凌海纳 SmartX 携手灵雀云推出全栈云原生联合解决方案

近日&#xff0c;北京志凌海纳科技有限公司&#xff08;以下简称“SmartX”&#xff09;与北京凌云雀科技有限公司&#xff08;以下简称“灵雀云”&#xff09;联合推出全栈云原生联合解决方案&#xff0c;为客户提供从基础设施到容器云平台的一站式服务&#xff0c;加速客户云…...

排名前 6 位的数学编程语言

0 说明 任何对数学感兴趣或计划学习数学的人&#xff0c;都应该至少对编程语言有一定的流利程度。您不仅会更有就业能力&#xff0c;还可以更深入地理解和探索数学。那么你应该学习什么语言呢&#xff1f; 1.python 对于任何正在学习数学的人来说&#xff0c;Python都是一门很棒…...

arm:day6

实现UART通信&#xff1a; 1.键盘输入一个字符a,串口工具显示b 2.键盘输入一个字符串"nihao",串口工具显示"nihao" uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_uart.h" #include "stm32mp1xx_gpio.h" #in…...

MyBatis快速入门以及环境搭建和CRUD的实现

目录 前言 一、MyBatis简介 1.MyBatis是什么 2.MyBatis的特点 3.mybatis的作用 4.MyBatis的应用场景 5.MyBatis优缺点 二、相关概念 1.ORM概述 2.常见的ORM框架 3.什么是持久层框架 三、MyBatis的工作原理 1.框架交互 2.工作原理 ​编辑 四、MyBatis环境搭建 1…...

基于Pytorch实现的声纹识别系统

前言 本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM等多种先进的声纹识别模型&#xff0c;不排除以后会支持更多模型&#xff0c;同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法&#xff0c;使用了ArcFace Loss&#xff0c;ArcFace loss…...

Fast DDS (2)

1、结构&#xff1a; Fast DDS的架构如下图所示&#xff0c;可以看到以下不同环境的层模型&#xff1a; 应用层&#xff1a;利用Fast DDS API 在分布式系统中实现通信的用户应用程序。Fast DDS层&#xff1a;DDS 通信中间件的稳健实现。它允许部署一个或多个 DDS 域&#xff…...

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制if/else条件渲染

ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;使用if、else和else if渲染对应状态下的UI内容。说明&#xff1a;从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。一、使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句…...

飞天使-k8s基础组件分析-pod

文章目录 pod介绍pod 生命周期init 容器容器handlerpod中容器共享进程空间sidecar 容器共享 参考链接 pod介绍 最小的容器单元 为啥需要pod? 答: 多个进程丢一个容器里&#xff0c;会因为容器里个别进程出问题而出现蝴蝶效应&#xff0c;pod 是更高级的处理方式pod 如何共享相…...

css题库

什么是css&#xff1f; CSS 是“Cascading Style Sheet”的缩写&#xff0c;中文意思为“层叠样式表”&#xff0c;它是一种标准的样式表语言&#xff0c;用于描述网页的表现形式&#xff08;例如网页元素的位置、大小、颜色等&#xff09;。 为什么最好把 CSS 的 link 标签放在…...

中文医疗大模型汇总

【写在前面】随着大语言模型的发展&#xff0c;越来越多的垂直领域的LLM发不出来&#xff0c;针对医学这一垂直领域的LLM进行整理&#xff0c;放在这里&#xff0c;希望对大家有一定的帮助吧。还会继续更新&#xff0c;大家有兴趣的话可以持续关注。 更多关于中文医疗自然语言处…...

smiley-http-proxy-servlet 实现springboot 接口反向代理,站点代理,项目鉴权,安全的引入第三方项目服务

背景&#xff1a; 项目初期 和硬件集成&#xff0c;实现了些功能服务&#xff0c;由于是局域网环境&#xff0c;安全问题当时都可以最小化无视。随着对接的服务越来越多&#xff0c;部分功能上云&#xff0c;此时就需要有一种手段可以控制到其他项目/接口的访问权限。 无疑 反向…...

Java集合利器 Map Set

Map & Set 一、概念二、Map三、Set下期预告 一、概念 Map和Set是一种专门用来进行搜索的数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。它们分别定义了两种不同的数据结构和特点&#xff1a; Map&#xff08;映射&#xff09; &#xff1a;Map是一种键值对&…...

HJ106 字符逆序

描述 将一个字符串str的内容颠倒过来&#xff0c;并输出。 数据范围&#xff1a;1≤len(str)≤10000 1≤len(str)≤10000 输入描述&#xff1a; 输入一个字符串&#xff0c;可以有空格 输出描述&#xff1a; 输出逆序的字符串 示例1 输入&#xff1a; I am a student 输…...

sentinel的基本使用

在一些互联网项目中高并发的场景很多&#xff0c;瞬间流量很大&#xff0c;会导致我们服务不可用。 sentinel则可以保证我们服务的正常运行&#xff0c;提供限流、熔断、降级等方法来实现 一.限流&#xff1a; 1.导入坐标 <dependency><groupId>com.alibaba.c…...

【STM32】串口通信乱码(认识系统时钟来源)

使用 stm32f407 与电脑主机进行串口通信时&#xff0c;串口助手打印乱码&#xff0c;主要从以下方面进行排查&#xff1a; 检查传输协议设置是否一致&#xff08;波特率、数据位、停止位、校验位&#xff09;检查MCU外部晶振频率是否和库函数设置的一致 最终发现是外部晶振频…...

Java实现敏感词过滤功能

敏感词过滤功能实现 1.GitHub上下载敏感词文件 2.将敏感词文件放在resources目录下 在业务中可以将文本中的敏感词写入数据库便于管理。 3.提供实现类demo 代码编写思路如下&#xff1a;1.将敏感词加载到list中&#xff0c;2.添加到StringSearch中&#xff0c;3.校验&#x…...

大数据向量检索的细节问题

背景:现有亿级别数据(条数),其文本大小约为150G,label为字符串,content为文本。用于向量检索,采用上次的试验进行,但有如下问题需要面对: 1、向量维度及所需空间 向量维度一版采用768的bert系列的模型推理得到,openai也有类似的功能,不过是2倍的维度(即1536),至…...

如何让智能搜索引擎更灵活、更高效?

随着互联网的发展和普及&#xff0c;搜索引擎已经成为人们获取信息、解决问题的主要工具之一。 然而&#xff0c;传统的搜索引擎在面对大数据时&#xff0c;往往存在着搜索效率低下、搜索结果精准度不够等问题。 为了解决这些问题&#xff0c;越来越多的企业开始采用智能搜索技…...

C++set集合与并查集map映射,哈希表应用实例B3632 集合运算 1P1918 保龄球

集合的性质 无序性互异性确定性 B3632 集合运算 1 题面 题目背景 集合是数学中的一个概念&#xff0c;用通俗的话来讲就是&#xff1a;一大堆数在一起就构成了集合。 集合有如下的特性&#xff1a; 无序性&#xff1a;任一个集合中&#xff0c;每个元素的地位都是相同的&…...

easyexcel合并单元格底色

一、效果图 二、导出接口代码 PostMapping("selectAllMagicExport")public void selectAllMagicExport(HttpServletRequest request, HttpServletResponse response) throws IOException {ServiceResult<SearchResult<TestMetLineFe2o3Export>> result …...