事业单位建设网站/什么软件引流客源最快
5.1 定时器与计数器简介
定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器(计数器值)。如果系统时钟为 1 MHz
,定时器每 1 μs
计数一次。
计数器是一种对外部事件(如脉冲信号)进行计数的模块,而不是基于固定时钟。外部引脚每收到一个脉冲(如按键按下或传感器触发),计数值加 1 或减 1。
LPC1100系列Cortex-M0微控制器有2个32位和2个16位可编程定时器/计数器,都有捕获和匹配输出的功能。
捕获:捕获功能用于记录外部信号变化时定时器的当前值,常用于测量信号的频率、脉宽或相位差。当外部信号(如引脚电平变化)触发捕获事件时,定时器的当前值会被自动保存到捕获寄存器。
匹配输出:定时器的一种功能,当定时器的计数值达到预设的匹配值(Match Value)时,自动触发特定动作(如翻转引脚电平、产生中断等)。用户预先设置一个匹配值,当定时器计数值等于该值时,硬件会自动执行操作,无需 CPU 干预。
5.2 定时器工作流程
对于定时器,先设置预分频计数器的计数上限,预分频计数器每计满一次定时器就加一,定时器达到匹配就可触发相应事件。
设置 PR (分频值)的值(如 PR = 99),PC 从 0 开始计数。每来一个输入时钟脉冲,PC 加 1。当 PC = PR 时,PC 清零,并输出一个脉冲给定时器的主计数器。每接收到一个来自预分频器的脉冲,定时器的主计数器TC加 1。
5.3 定时器/计数器寄存器
有四种定时器 TMR32B0、TMR32B1、TMR16B0, TMR16B1
功能类似,就计的总数32位、16位的区别
5.3.1 定时器中断寄存器 TMR32/16BnIR
包含4个匹配中断和一个捕获中断标志位,有中断相应位置位变成1,没中断变0,写1可以清零中断,写零无效。
位 | 对应名 | |
0 | MR0中断 | 中断标志 |
1 | MR1中断 | |
2 | MR2中断 | |
3 | MR3中断 | |
4 | CAP0中断 | |
31:5 | 保留 |
5.3.2 定时器控制寄存器 TMR32/16BnTCR
位 | 功能 |
0 | 1使能,0禁能 |
1 | 写1定时器/计数器和分频在PCLK下一个上升沿复位, 复位状态直到该位重新写0才会改变 |
31:2 | 保留 |
5.3.3 定时器/计数器当前计数值 TMR32/16BnTC
预分频计数器计数到上限时,TC计数值加一,TC到上限没复位则32位会计数到0xFFFFFFFF然后翻转到0x00000000,没中断啥的一些情况,然后继续去计数了。
5.3.4 预分频寄存器 TMR32/16BnPR
指定预分频计数器的最大计数值
PR为0,每1个PCLK(48MHz时钟一个周期)TC计数加一
PR为1,每2个PCLKTC计数加一
5.3.5 预分频计数器 TMR32/16BnPC
对输入时钟脉冲进行计数的计数值,不用理会
5.3.6 匹配控制寄存器 TMR32/16BnMCR
位 | 功能 (1 产生对应效果, 0 无该特性) |
0 | MR0匹配时产生中断 |
1 | MR0匹配时复位TC |
2 | MR0匹配时TC和PC计数都停止 TCR[0]置0(定时器禁能了) |
3 | MR1匹配时产生中断 |
4 | MR1匹配时复位TC |
5 | MR1匹配时TC和PC计数都停止 TCR[0]置0(定时器禁能了) |
6 | MR2匹配时产生中断 |
7 | MR2匹配时复位TC |
8 | MR2匹配时TC和PC计数都停止 TCR[0]置0(定时器禁能了) |
9 | MR3匹配时产生中断 |
10 | MR3匹配时复位TC |
11 | MR3匹配时TC和PC计数都停止 TCR[0]置0(定时器禁能了) |
31:12 | 保留 |
5.3.7 匹配寄存器 TMR32/16BnMR0/1/2/3
自动与TC值相比较的,相等触发对应效果,不用理会
5.3.8 捕获寄存器 TMR32/16BnCCR
位 | 功能 (1 产生对应效果, 0 无该特性) |
0 | CAP0上升沿捕获,使TC内容装入CR0 |
1 | CAP0下降沿捕获,使TC内容装入CR0 |
2 | CAP0事件导致的装载产生中断 |
31:3 | 保留 |
5.3.9 捕获寄存器 TMR32/16BnCR0
引脚发生特定事件时存储TC内容,只读
5.3.10 外部匹配寄存器 TMR32/16BnEMR
位 | 功能 |
0 | EM0外部匹配0输出MAT0的状态 即TC与MR0匹配时的输出 |
1 | EM1外部匹配1输出MAT1的状态 |
2 | EM2外部匹配0输出MAT2的状态 |
3 | EM3外部匹配0输出MAT3的状态 |
5:4 | EMC0 00 无操作 01 输出低电平0 10 输出高电平1 11 输出电平翻转 |
7:6 | EMC1 以下同EMC0 |
9:8 | EMC2 |
10:11 | EMC3 |
15:12 | 保留 |
5.3.11 计数控制寄存器 TMR32/16BnCTCR
用于定时器与计数器模式之间的选择
位 | 值 | 描述 |
1:0 | 00 | 定时器模式:TC在PCLK上升沿计数 |
01 | 计数器模式:TC在选择的CAP输入的上升沿递增 | |
10 | 计数器模式:TC在选择的CAP输入的下降沿递增 | |
11 | 计数器模式:TC在选择的CAP输入的双边沿递增 | |
3:2 | 00 | CAP0引脚 |
其他 | 保留(貌似条件有限没有其他CAP引脚,所以上边选择也是就选择CAP0) | |
31:4 | 保留 |
5.3.12 PWM控制寄存器 TMR32/16BnPWMC
用于将匹配的输出设置为PWM输出,
大致可整两个匹配,分别控制占空比和周期
一个匹配寄存器调占空比,出现匹配时,PWM输出置为高电平,匹配前是低电平
一个匹配作为PWM周期,匹配时复位,高电平清零
具体小细节见书P136页。
位 | 功能 |
0 | 1 MAT0的PWM模式使能 0 MAT0受EM0控制 |
1 | 1 MAT1的PWM模式使能 0 MAT1受EM1控制 |
2 | 1 MAT2的PWM模式使能 0 MAT2受EM2控制 |
3 | 1 MAT3的PWM模式使能 0 MAT3受EM3控制 |
32:4 | 保留 |
5.4 呼吸灯
目标:
(1)利用16位定时器1实现定时1s,控制LPC1114微控制器的GPIO引脚PIO1_9状态反转(可以用中断方式也可以用匹配输出功能),此时LED灯Blinky闪烁频率为0.5Hz;
(2)设置16位定时器1工作在PWM模式,PIO1_9设置为PWM输出引脚,利用另外一个定时器定时(例如32位定时器0,设置每隔0.01s,或者更小)增大或者减小16位定时器1输出PWM的占空比(占空比改变的步长与32位定时器0的定时时间相配合,确定呼吸频率),实现PIO1_9上的LED灯渐亮渐灭的呼吸灯效果。
思路:
主要是两部分内容,第一部分直接SysTick也能实现,但是使用定时器就是要熟悉一下定时器怎么用,第二部分就是定时器的PWM占空比不断升高降低,这个是使用两个定时器,一个定时器实现翻转,另一个定时器实现改变第一个定时器的占空比,按时间依次增加或者减小即可。
这两部分内容可以直接使用按键切换,相当于两种模式,即闪烁模式和PWM呼吸灯模式,将上章写的Button中断改一下就行了
Button.c
#include "Button.h"
#include "TIMER.h"
int flag1 = 0, flag2 = 0; // 判断botton 和 wakeup 按键上一次状态//延时ms函数 // 太粗糙了,而且要根据机器指令与时钟周期关系调整,也就防抖延时用一下
__inline void delay_ms(uint32_t a) //约1ms延时函数
{ uint32_t i;while( a -- != 0){for(i = 0; i<5500; i++);}
}void WAKEUP_Init(void)
{LPC_SYSCON -> SYSAHBCLKCTRL |= (1UL << 6) | (1UL << 16); // 使能GPIO时钟和IO时钟// PIO1_4LPC_IOCON->PIO1_4 &= ~(0x1F); // 清除之前的配置LPC_IOCON->PIO1_4 |= 0x00; // 配置为GPIO功能LPC_GPIO1->DIR &= ~(1UL << 4);// 设置GPIO方向为输入LPC_GPIO1->IS &= ~(0x1 << 4); // 清除第 4 位,设置为边沿触发LPC_GPIO1->IBE &= ~(0x1 << 4); // 清除第 4 位,设置为单边沿触发LPC_GPIO1->IEV &= ~(0x1 << 4); // 清除第 4 位,设置为低电平触发LPC_GPIO1 -> IE |= (0x1<<4); // 使能端口中断LPC_IOCON->PIO1_4 |= (1UL << 5); // 使能滞后模式LPC_GPIO1->IC |= (1UL << 4); // 清除中断标志位NVIC_EnableIRQ(EINT1_IRQn); // 使能GPIO1中断
}void Button_Init(void)
{LPC_SYSCON -> SYSAHBCLKCTRL |= (1UL << 6) | (1UL << 16); // 使能GPIO时钟和IO时钟// PIO3_5LPC_IOCON->PIO3_5 &= ~(0x1F); // 清除之前的配置LPC_IOCON->PIO3_5 |= 0x00; // 配置为GPIO功能LPC_GPIO3->DIR &= ~(1UL << 5);// 设置GPIO方向为输入LPC_GPIO3->IS &= ~(0x1 << 5); // 清除第 5 位,设置为边沿触发LPC_GPIO3->IBE &= ~(0x1 << 5); // 清除第 5 位,设置为单边沿触发LPC_GPIO3->IEV &= ~(0x1 << 5); // 清除第 5 位,设置为低电平触发LPC_GPIO3 -> IE |= (0x1<<5); // 使能端口中断LPC_IOCON->PIO3_5 |= (1UL << 5); // 使能滞后模式LPC_GPIO3->IC |= (1UL << 5); //清除中断标志NVIC_EnableIRQ(EINT3_IRQn);
}// GPIO3_5的中断服务函数,处理BUTTON按键按下事件
void PIOINT3_IRQHandler(void)
{if((LPC_GPIO3->MIS & (1UL << 5)) == (1UL << 5))// 检查是否是PIO3_5的中断{ delay_ms(20); // 消抖while((LPC_GPIO3->DATA & (1UL << 5)) == 0);delay_ms(20);LPC_TMR16B1->PWMC ^= 1; //PWM状态翻转if(LPC_TMR16B1->PWMC == 0x01) // 如果要进PWM 模式{NVIC_EnableIRQ(TIMER_32_0_IRQn);//使能32位定时器中断TMR16B1_PWM_Mode(); }else // 如果要进闪烁灯模式{NVIC_DisableIRQ(TIMER_32_0_IRQn);//禁32位定时器中断TMR16B1_Blinky_Mode();}LPC_GPIO3->IC |= (1UL << 5); // 清除中断标志}
}
// GPIO1_4的中断服务函数,处理WAKEUP按键按下事件
void PIOINT1_IRQHandler(void)
{if((LPC_GPIO1->MIS & (1UL << 4)) == (1UL << 4)) // 检查是否是PIO1_4的中断{delay_ms(20);while((LPC_GPIO1->DATA & (1UL << 4)) == 0);delay_ms(20);LPC_GPIO1->IC |= (1UL << 4); // 清除中断标志}
}
TIMER.c
#include "TIMER.h"int flag = 1; // 递增递减标志 1递增 -1递减void TMR32B0_Init(void)//32位定时器0初始化 设置中断时间 MR0/SystemCoreClock *(PR + 1) = 0.01s
{LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 9);//使能32位定时器0的时钟LPC_TMR32B0->IR = 0x1F;//清除所有中断标志位LPC_TMR32B0->PR = 0;//设置分频系数LPC_TMR32B0->MCR = 3;//设置MR0匹配后复位TC并产生中断LPC_TMR32B0->MR0 = SystemCoreClock / 100 ; // 计数值LPC_TMR32B0->TCR = 0x01;//启动定时器NVIC_DisableIRQ(TIMER_32_0_IRQn);//开中断
}void TMR16B1_Init(void)
{LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 8) | (1UL << 16); // 16位定时器1时钟使能 | IO配置块时钟使能LPC_IOCON->PIO1_9 |= 0x01; // MAT0匹配IO1_9
}void TMR16B1_PWM_Mode(void)// PWM呼吸灯模式 1s 占空比0 -> 1 or 1 -> 0
{LPC_TMR16B1->TCR = 0x02;//定时器复位LPC_TMR16B1->PR = 99; // 分频系数LPC_TMR16B1->PWMC = 0x01;//设置MAT0为PWM输出LPC_TMR16B1->MCR = 0x02 << 9; //设置MR3匹配后复位TC;LPC_TMR16B1->MR3 = SystemCoreClock / 10000; // PWM周期设置为0.01s,设置中断时间LPC_TMR16B1->MR0 = LPC_TMR16B1->MR3 / 100;//MAT0初始化输出亮度1%LPC_TMR16B1->TCR = 0x01; // 启动定时器
}// 匹配输出翻转
void TMR16B1_Blinky_Mode(void) // 闪烁灯模式 1s翻转一次
{ LPC_TMR16B1->TCR = 0x02;//定时器复位LPC_TMR16B1->PR = 999; // 分频系数;LPC_TMR16B1->MCR = 2; // 设置MR0匹配后复位TC不产生中断;LPC_TMR16B1->MR0 = SystemCoreClock / 1000; // 定时1sLPC_TMR16B1->PWMC = 0x00;//设置MAT0不为PWM输出LPC_TMR16B1->EMR |= (3UL << 4);// MAT0外部匹配翻转LPC_TMR16B1->TCR = 0x01; //定时器启动
}void TIMER32_0_IRQHandler(void)//32位定时器0中断子程序
{static int duty = 0;if(LPC_TMR32B0->IR & 0x01)//判断是否MR0中断{LPC_TMR32B0->IR = 0x01; // 清除第一中断标志位duty += 1 * flag; // 更新占空比if(duty >= 100) {flag = -flag; // 递减 渐灭duty = 100; // 防止越界}if(duty <= 0) {flag = -flag; // 递增 渐亮duty = 1; // 防止越界}LPC_TMR16B1->MR0 = (uint32_t)(LPC_TMR16B1->MR3 * duty /100); // 设置占空比}
}
TIMER.h
#ifndef _TIMER_H_
#define _TIMER_H_#include <LPC11xx.h>void TMR32B0_Init(void);
void TMR16B1_Init(void);
void TMR16B1_PWM_Mode(void);
void TMR16B1_Blinky_Mode(void);#endif
main.c
#include <LPC11xx.h>
#include "LED.h"
#include "Button.h"
#include "TIMER.h"int main(void)
{Button_Init(); // Button初始化TMR16B1_Init(); //初始化16位B1定时器TMR32B0_Init(); // 初始化32位B0定时器TMR16B1_Blinky_Mode(); // 初始闪烁灯模式while (1){}
}
实验效果就是烧录后按下复位键,Blinky开始闪烁,按下Button是PWM,之后再按就会在两种模式之间切换。
相关文章:

五、定时器实现呼吸灯
5.1 定时器与计数器简介 定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器(计数器值)。如果系统时钟为 1 MHz,定时器每 1 μs 计数一次。 计数器是一种对外部事件(如脉冲信号ÿ…...

Elasticsearch的索引生命周期管理
目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的?如何监控和调整Elasticsearch ILM策略的性能? 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…...

【大模型理论篇】最近大火的DeepSeek-R1初探系列1
1. 背景介绍 这一整个春节,被DeepSeek-R1刷屏。各种铺天盖地的新闻以及老板发的相关信息,着实感受到DeepSeek-R1在国外出圈的震撼。 DeepSeek推出了新的推理模型:DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个在没有经过监督微调…...

【数据结构】(4) 线性表 List
一、什么是线性表 线性表就是 n 个相同类型元素的有限序列,每一个元素只有一个前驱和后继(除了第一个和最后一个元素)。 数据结构中,常见的线性表有:顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…...

【C++ STL】vector容器详解:从入门到精通
【C STL】vector容器详解:从入门到精通 摘要:本文深入讲解C STL中vector容器的使用方法,涵盖常用函数、代码示例及注意事项,助你快速掌握动态数组的核心操作! 一、vector概述 vector是C标准模板库(STL&am…...

OpenAI推出Deep Research带给我们怎样的启示
OpenAI 又发新产品了,这次是面向深度研究领域的智能体产品 ——「Deep Research」,貌似被逼无奈的节奏… 在技术方面,Deep Research搭载了优化后o3模型并通过端到端强化学习在多个领域的复杂浏览和推理任务上进行了训练。因没有更多的技术暴露…...

洛谷[USACO08DEC] Patting Heads S
题目传送门 题目难度:普及/提高一 题面翻译 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏。 贝茜让 N N N ( 1 ≤ N ≤ 1 0 5 1\leq N\leq 10^5 1≤N≤105) 头奶牛坐成一个圈。除了 1 1 1 号与 N N N 号奶牛外࿰…...

CSS 溢出内容处理:从基础到实战
CSS 溢出内容处理:从基础到实战 1. 什么是溢出?示例代码:默认溢出行为 2. 使用 overflow 属性控制溢出2.1 使用 overflow: hidden 裁剪内容示例代码:裁剪溢出内容 2.2 使用 overflow: scroll 显示滚动条示例代码:显示滚…...

Spring Boot项目如何使用MyBatis实现分页查询
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...

飞行汽车中的无刷外转子电机、人形机器人中的无框力矩电机技术解析与应用
重点:无刷外转子电机与无框力矩电机:技术解析与应用对比 在现代工业自动化和精密机械领域,无刷电机因其高效、低噪音和高可靠性而备受青睐。其中,无刷外转子电机和无框力矩电机更是以其独特的结构和性能特点,成为众多应用场景中的…...

FreeRTOS学习 --- 队列集
队列集简介 一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集 ! 作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让…...

【R语言】R语言安装包的相关操作
一、管理R语言安装包 1、安装R包 install.packages() 2、查看已安装的R包 installed.packages() 3、更新R包 update.packages() 4、卸载R包 remove.packages() 二、加载R语言安装包 打开R语言时,基础包(base包)会自动被加载到内存中…...

15.[前端开发]Day15-HTML+CSS阶段练习(网易云音乐四)
完整代码 01_网易云-header <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯1.登录-持久层 &…...

测试方案和测试计划相同点和不同点
在软件测试领域,测试方案与测试计划皆为举足轻重的关键文档,尽管它们有着紧密的关联,但在目的与内容层面存在着显著的差异。相同点: 1.共同目标:测试方案和测试计划的核心目标高度一致,均致力于保障软件的…...

c++提取矩形区域图像的梯度并拟合直线
c提取旋转矩形区域的边缘最强梯度点,并拟合直线 #include <opencv2/opencv.hpp> #include <iostream> #include <vector>using namespace cv; using namespace std;int main() {// 加载图像Mat img imread("image.jpg", IMREAD_GRAYS…...

Unity Shader Graph 2D - 角色身体电流覆盖效果
在游戏中,通常会有游戏角色受到“电击”的效果,此时游戏角色身体上会覆盖有电流,该效果能表明游戏角色的当前状态,让玩家能够获得更直观更好的体验。 那么如何实现呢 首先创建一个ShaderGraph文件,命名为Current,再创建对应的材质球M_Current。 基础的资源显示 老规矩,…...

【LLM-agent】(task4)搜索引擎Agent
note 新增工具:搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件…...

携程Java开发面试题及参考答案 (200道-下)
insert 一行数据的时候加的是什么锁?为什么? 在 MySQL 中,当执行 INSERT 操作插入一行数据时,加锁的情况会因存储引擎和具体的事务隔离级别而有所不同。一般来说,在 InnoDB 存储引擎下,INSERT 操作加的是行级排他锁(Row Exclusive Lock),以下详细说明原因。 行级排他…...

GWO优化SVM回归预测matlab
灰狼优化算法(Grey Wolf Optimizer,简称 GWO),是由澳大利亚格里菲斯大学的 Mirjalii 等人于 2014 年提出的群智能优化算法。该算法的设计灵感源自灰狼群体的捕食行为,核心思想是对灰狼社会的结构与行为模式进行模仿。 …...

QMK启用摇杆和鼠标按键功能
虽然选择了触摸屏,我仍选择为机械键盘嵌入摇杆模块,这本质上是对"操作连续性"的执着。 值得深思的是,本次开发过程中借助DeepSeek的代码生成与逻辑推理,其展现的能力已然颠覆传统编程范式,需求描述可自动…...

Unity实现按键设置功能代码
一、前言 最近在学习unity2D,想做一个横版过关游戏,需要按键设置功能,让用户可以自定义方向键与攻击键等。 自己写了一个,总结如下。 二、界面效果图 这个是一个csv文件,准备第一列是中文按键说明,第二列…...

基于物联网技术的实时数据流可视化研究(论文+源码)
1系统方案设计 根据系统功能的设计要求,展开基于物联网技术的实时数据流可视化研究设计。如图2.1所示为系统总体设计框图,系统以STM32单片机做为主控制器,通过DHT11、MQ-2、光照传感器实现环境中温湿度、烟雾、光照强度数据的实时检测&#x…...

list容器(详解)
1. list的介绍及使用 1.1 list的介绍(双向循环链表) https://cplusplus.com/reference/list/list/?kwlist(list文档介绍) 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭…...

Elasticsearch基本使用详解
文章目录 Elasticsearch基本使用详解一、引言二、环境搭建1、安装 Elasticsearch2、安装 Kibana(可选) 三、索引操作1、创建索引2、查看索引3、删除索引 四、数据操作1、插入数据2、查询数据(1)简单查询(2)…...

17.3.4 颜色矩阵
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 17.3.4.1 矩阵基本概念 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,类似于数组。 由…...

FPGA 时钟多路复用
时钟多路复用 您可以使用并行和级联 BUFGCTRL 的组合构建时钟多路复用器。布局器基于时钟缓存 site 位置可用性查找最佳布局。 如果可能,布局器将 BUFGCTRL 布局在相邻 site 位置中以利用专用级联路径。如无法实现,则布局器将尝试将 BUFGCTRL 从…...

机器学习10
自定义数据集 使用scikit-learn中svm的包实现svm分类 代码 import numpy as np import matplotlib.pyplot as pltclass1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, 0.9],[0.9, 1.2],[1.1, 1.7],[1.4, 1.1]])class2_points np.array([[3.2, 3.2],[3.7, 2.9],…...

【Block总结】CoT,上下文Transformer注意力|即插即用
一. 论文信息 标题: Contextual Transformer Networks for Visual Recognition论文链接: arXivGitHub链接: https://github.com/JDAI-CV/CoTNet 二. 创新点 上下文Transformer模块(CoT): 提出了CoT模块,能够有效利用输入键之间的上下文信息…...

linux库函数 gettimeofday() localtime的概念和使用案例
在Linux系统中,gettimeofday() 和 localtime() 是两个常用的时间处理函数,分别用于获取高精度时间戳和将时间戳转换为本地时间。以下是它们的概念和使用案例的详细说明: 1. gettimeofday() 函数 概念 功能:获取当前时间…...