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

【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收

【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收

文章目录

  • 系统延时
  • GPIO配置
  • GPIO输出
  • SCI配置
  • SCI发送、接收
  • 测试
  • 附录:F28002x开发板上手、环境配置、烧录及TMS320F280025C模板工程建立
    • F28002x叙述
    • 烧录
    • SDK库文件说明
    • 工程建立
      • 更方便的路径导入
    • 调试

系统延时

在device.h中 有系统延时函数
该函数为微妙级延时:

#define DEVICE_DELAY_US(x) SysCtl_delay(((((long double)(x)) / (1000000.0L /  \(long double)DEVICE_SYSCLK_FREQ)) - 9.0L) / 5.0L)

所以可以包装一层毫秒延时:

void delay_ms(uint32_t ms)
{while(ms--){DEVICE_DELAY_US(1000);}
}

GPIO配置

C2000的GPIO库与常见的不同
取消了Pinmux设定 取而代之的是Pin Config
在使用GPIO时 需要用GPIO_setPinConfig函数进行设置
传参位于pin_map.h 该头文件只在配置函数中有效
如:

#define GPIO_31_GPIO31                  0x00081E00U
#define GPIO_31_CANA_TX                 0x00081E01U
#define GPIO_31_SPIB_SOMI               0x00081E03U
#define GPIO_31_OUTPUTXBAR8             0x00081E05U
#define GPIO_31_EQEP1_INDEX             0x00081E06U
#define GPIO_31_FSIRXA_D1               0x00081E09U
#define GPIO_31_EPWM1_B                 0x00081E0BU
#define GPIO_31_HIC_D10                 0x00081E0EU

其实就是取代了Pinmux功能

另外还要使用以下函数对其进行方向、功能、时钟配置

GPIO_setDirectionMode
GPIO_setPadConfig
GPIO_setQualificationMode

第一个传参为GPIO序号 第二个为选择的功能

如果是复用功能的话 上面这两种传参都会在device.h中被定义好
如:

//
// SCI for USB-to-UART adapter on FTDI chip
//
#define DEVICE_GPIO_PIN_SCIRXDA     28U             // GPIO number for SCI RX
#define DEVICE_GPIO_PIN_SCITXDA     29U             // GPIO number for SCI TX
#define DEVICE_GPIO_CFG_SCIRXDA     GPIO_28_SCIA_RX // "pinConfig" for SCI RX
#define DEVICE_GPIO_CFG_SCITXDA     GPIO_29_SCIA_TX // "pinConfig" for SCI TX

另外 设置模拟模式则使用GPIO_setAnalogMode 设置采样周期则使用GPIO_setQualificationPeriod 设置中断则使用GPIO_setInterruptPin
后三个函数根据需求设置 前面四个函数配置为基本配置

方向配置就是输入/输出(如果配复用模式 如UART的TX功能 那么也要配置这个为输出)

typedef enum
{GPIO_DIR_MODE_IN,                   //!< Pin is a GPIO inputGPIO_DIR_MODE_OUT                   //!< Pin is a GPIO output
} GPIO_Direction;

对于功能配置(推挽、开漏、上拉等等) 有以下:

#ifndef DOXYGEN_PDF_IGNORE
//*****************************************************************************
//
// Values that can be passed to GPIO_setPadConfig() as the pinType parameter
// and returned by GPIO_getPadConfig().
//
//*****************************************************************************
#define GPIO_PIN_TYPE_STD       0x0000U //!< Push-pull output or floating input
#define GPIO_PIN_TYPE_PULLUP    0x0001U //!< Pull-up enable for input
#define GPIO_PIN_TYPE_INVERT    0x0002U //!< Invert polarity on input
#define GPIO_PIN_TYPE_OD        0x0004U //!< Open-drain on output
#endif

对于时钟配置 有以下四种:

typedef enum
{GPIO_QUAL_SYNC,                     //!< Synchronization to SYSCLKGPIO_QUAL_3SAMPLE,                  //!< Qualified with 3 samplesGPIO_QUAL_6SAMPLE,                  //!< Qualified with 6 samplesGPIO_QUAL_ASYNC                     //!< No synchronization
} GPIO_QualificationMode;

一般而言 时钟就配置为GPIO_QUAL_ASYNC 即可 也就是异步
若配置为GPIO_QUAL_SYNC则会根据系统时钟对齐

GPIO输出

若配置为GPIO输出的话 则用以下函数 如GPIO31和34 对应开发板上的LED4 LED5

    //GPIO 31 34 OutputGPIO_setPinConfig(GPIO_31_GPIO31);GPIO_setDirectionMode(31, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(31, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(31, GPIO_QUAL_ASYNC);GPIO_setPinConfig(GPIO_34_GPIO34);GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(34, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(34, GPIO_QUAL_ASYNC);

同样 使用GPIO_writePinGPIO_setPortPins即可写入输出值 后者是一整个Port的输出函数
如:

    GPIO_writePin(31,0);GPIO_writePin(34,1);

其中 Port只有三种:

typedef enum
{GPIO_PORT_A = 0,                    //!< GPIO port AGPIO_PORT_B = 1,                    //!< GPIO port BGPIO_PORT_H = 7                     //!< GPIO port H
} GPIO_Port;

使用GPIO_togglePin则切换电平高低

	    GPIO_togglePin(31);GPIO_togglePin(34);

SCI配置

SCI与UART基本一致 但是多了一个Address模式
在这里插入图片描述

也就是多了一位地址位 该模式可以在SCI_setAddrMultiProcessorMode中开启
若不开启 就是普通模式
在这里插入图片描述
在这里插入图片描述
在使用时 可以直接当作UART来使用

在开发板上 默认使用的UART为SCIA的TX、RX 对应GPIO28、29
在这里插入图片描述
配置SCI前 需要先配置GPIO基本配置

    //// GPIO28 is the SCI Rx pin.//GPIO_setPinConfig(DEVICE_GPIO_CFG_SCIRXDA);GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_DIR_MODE_IN);GPIO_setPadConfig(DEVICE_GPIO_PIN_SCIRXDA, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_QUAL_ASYNC);//// GPIO29 is the SCI Tx pin.//GPIO_setPinConfig(DEVICE_GPIO_CFG_SCITXDA);GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(DEVICE_GPIO_PIN_SCITXDA, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_QUAL_ASYNC);

这里就是把TX配置为输出、RX配置为输入 其他默认

外设配置很简单调用SCI_setConfig函数配置波特率、时钟、数据即可
然后通过SCI_enableModule打开相应模式
再将通道复位清空即可

    SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200, (SCI_CONFIG_WLEN_8 |SCI_CONFIG_STOP_ONE |SCI_CONFIG_PAR_NONE));SCI_enableModule(SCIA_BASE);SCI_enableTxModule(SCIA_BASE);SCI_enableRxModule(SCIA_BASE);SCI_resetChannels(SCIA_BASE);SCI_performSoftwareReset(SCIA_BASE);

SCI发送、接收

发送有好几种方式 最常用的是SCI_writeCharArray

extern void
SCI_writeCharArray(uint32_t base, const uint16_t * const array,uint16_t length);

该方式为阻塞发送
对应阻塞接收为:

extern void
SCI_writeCharArray(uint32_t base, const uint16_t * const array,uint16_t length);

测试

代码如下:

/*** main.c*/
#include "device.h"
#include "driverlib.h"#include <stdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>//
// Globals
////
// Send data for SCI-A
//
uint16_t TX_Buf[2]={0xAA,0xBB};//
// Received data for SCI-A
//
uint16_t RX_Buf[2]={0xFF,0xFF};
//
// Function Prototypes
//
void Init_GPIO(void)
{//// GPIO28 is the SCI Rx pin.//GPIO_setPinConfig(DEVICE_GPIO_CFG_SCIRXDA);GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_DIR_MODE_IN);GPIO_setPadConfig(DEVICE_GPIO_PIN_SCIRXDA, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_QUAL_ASYNC);//// GPIO29 is the SCI Tx pin.//GPIO_setPinConfig(DEVICE_GPIO_CFG_SCITXDA);GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(DEVICE_GPIO_PIN_SCITXDA, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_QUAL_ASYNC);//GPIO 31 34 OutputGPIO_setPinConfig(GPIO_31_GPIO31);GPIO_setDirectionMode(31, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(31, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(31, GPIO_QUAL_ASYNC);GPIO_setPinConfig(GPIO_34_GPIO34);GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT);GPIO_setPadConfig(34, GPIO_PIN_TYPE_STD);GPIO_setQualificationMode(34, GPIO_QUAL_ASYNC);GPIO_writePin(31,0);GPIO_writePin(34,1);
}void Init_SCI(void)
{SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200, (SCI_CONFIG_WLEN_8 |SCI_CONFIG_STOP_ONE |SCI_CONFIG_PAR_NONE));SCI_enableModule(SCIA_BASE);SCI_enableTxModule(SCIA_BASE);SCI_enableRxModule(SCIA_BASE);SCI_resetChannels(SCIA_BASE);SCI_performSoftwareReset(SCIA_BASE);
}void delay_ms(uint32_t ms)
{while(ms--){DEVICE_DELAY_US(1000);}
}int main(void)
{//// Initializes system control, device clock, and peripherals//Device_init();Device_initGPIO();Init_GPIO();Init_SCI();//// Initializes PIE and clear PIE registers. Disables CPU interrupts.// and clear all CPU interrupt flags.//Interrupt_initModule();//// Initialize the PIE vector table with pointers to the shell interrupt// Service Routines (ISR).//Interrupt_initVectorTable();//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;delay_ms(10);SCI_writeCharArray(SCIA_BASE, TX_Buf, 2);while (1){delay_ms(500);GPIO_togglePin(31);GPIO_togglePin(34);SCI_readCharArray(SCIA_BASE, RX_Buf, 1);SCI_writeCharArray(SCIA_BASE, RX_Buf, 1);}}

配置好后运行
可以观测到串口回环以及每次的LED反转
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

附录:F28002x开发板上手、环境配置、烧录及TMS320F280025C模板工程建立

F28002x叙述

作为TI C28x架构的DSP 其属于C2000系列
其开发板套件如 F28002x LaunchPad 电路板自带XDS110 极大的方便了开发
在这里插入图片描述
对于其环境开发外 除安装IDE CCS外 还应安装SDK C2000WARE、UniFlash等
在这里插入图片描述
其中 红框为必要安装 蓝框为可选安装
Motor Control SDK (C2000WARE-MOTORCONTROL-SDK) 适用于各种三相电机控制应用,例如工业驱动器和伺服拓扑结构。Digital Power SDK (C2000WARE-DIGITALPOWER-SDK) 适用于开发针对各种交流/直流、直流/直流和直流/交流电源应用的数字电源系统。

F28002x连接PC后 需要安装C2000WARE(或其他TI自带XDS110驱动的SDK包)才能有XDS110驱动
在这里插入图片描述
成功安装后即可正常使用

烧录

通过UniFlash即可进行擦除和烧录
插上即可自动识别 通过XDS110进行操作
在这里插入图片描述
擦除:
在这里插入图片描述
在这里插入图片描述

烧录时 可选择bin、out等文件 这极大的方便了开发
.out文件可以由CCS直接编译而来 .bin文件则通过.out转换而来
(TI的MMWave系列芯片就不能直接烧录.out文件)
在这里插入图片描述
在这里插入图片描述
烧录时 建议先擦除再烧录
烧录的地址、位置 由工程编译后的.out文件决定

SDK库文件说明

在建立工程前 确保安装了C2000WARE
在C2000的SDK中 主要要用到这两个文件夹:
在这里插入图片描述
driverlib中存储了必要的头文件、lib文件(这里的文件可以不用拷贝)
在这里插入图片描述
其中 CCS下面的Debug和Release文件夹 则有两个不同的lib 分别在不同的情况下使用

device_support中则存放了cmd文件和SDK的头文件
在这里插入图片描述
分别位于common的cmd中和include中
其中 driverlib.hdevice.hdevice.c建议拷贝到工程中使用 即为库函数开发包(上面的driverlib也可以拷 但是没必要)
cmd文件在建立工程时会自动生成 但也可以根据需要拷贝其他文件或进行修改
这里常用的就是RAM_Link和Flash_Link
在这里插入图片描述

另外 还应拷贝f28002x_codestartbranch.asm文件 即start文件
Flash和RAM的区别就是烧录和运行的地址不同 如果要发布 则用Flash 如果只是调试 就用RAM
在这里插入图片描述
这两个cmd文件不能同时使用 可以根据工程配置Debug、Release来进行选择
在这里插入图片描述

如果要额外使用寄存器开发的话:
device_support下的headers文件夹则在寄存器开发中被使用
如果想通过寄存器(类似于标准库)的方式开发 而非TI推荐的库函数方式开发
则需要另外导入headers下的cmd和include
同样可以根据需要替换或修改cmd文件
在这里插入图片描述
如果要使用 则下面的头文件和源文件都要拷贝
在这里插入图片描述

工程建立

通过CCS进行工程建立
工程中额外加入device.h、device.c、driverlib.h和启动asm文件:
在这里插入图片描述
建立main.c并写入以下代码:

/*** main.c*/
#include "device.h"
#include "driverlib.h"#include <stdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>int main(void)
{//// Initializes system control, device clock, and peripherals//Device_init();Device_initGPIO();//// Initializes PIE and clear PIE registers. Disables CPU interrupts.// and clear all CPU interrupt flags.//Interrupt_initModule();//// Initialize the PIE vector table with pointers to the shell interrupt// Service Routines (ISR).//Interrupt_initVectorTable();//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;DEVICE_DELAY_US(1000);while (1){}}

cmd文件可以使用生成自带的文件 也可以在SDK中拷贝
在这里插入图片描述
其中 工程属性中 要选择小端格式ELF
在这里插入图片描述
并选择rts2800_fpu32_eabi.lib支持库文件
在头文件中 导入SDK包的位置
在这里插入图片描述

C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28002x\driverlib\inc
C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28002x\driverlib
${workspace_loc:/${ProjName}/Device}
${workspace_loc:/${ProjName}}
${PROJECT_ROOT}
${CG_TOOL_ROOT}/include

并在C2000 Link中导入lib文件和目录
在这里插入图片描述

rts2800_fpu32_eabi.lib
C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28002x\driverlib\ccs\Debug\driverlib.lib${CG_TOOL_ROOT}/lib
C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28002x\driverlib\ccs\Debug
${CG_TOOL_ROOT}/include

如果要为了方便 可以在这里添加变量
在这里插入图片描述
建立好后编译即可
在这里插入图片描述

更方便的路径导入

添加C2000Ware包后 更容易导入库
在这里插入图片描述

${COM_TI_C2000WARE_INCLUDE_PATH}
${COM_TI_C2000WARE_INSTALL_DIR}
${COM_TI_C2000WARE_INSTALL_DIR}/driverlib/f28002x/driverlib/inc
${COM_TI_C2000WARE_INSTALL_DIR}/driverlib/f28002x/driverlib
${workspace_loc:/${ProjName}/Device}
${workspace_loc:/${ProjName}}
${PROJECT_ROOT}
${CG_TOOL_ROOT}/include${COM_TI_C2000WARE_INSTALL_DIR}/driverlib/f28002x/driverlib/ccs/Debug/driverlib.lib${COM_TI_C2000WARE_INSTALL_DIR}/driverlib/f28002x/driverlib/ccs/Debug

调试

通过Load Program和XDS110下载后即可调试
在这里插入图片描述
在这里插入图片描述

相关文章:

【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收

【TI C2000】F28002x的系统延时、GPIO配置及SCI&#xff08;UART&#xff09;串口发送、接收 文章目录 系统延时GPIO配置GPIO输出SCI配置SCI发送、接收测试附录&#xff1a;F28002x开发板上手、环境配置、烧录及TMS320F280025C模板工程建立F28002x叙述烧录SDK库文件说明工程建…...

【PyQt】信号与槽机制

PyQt信号与槽机制详解 &#x1f680; 一、信号与槽类型 &#x1f50c; 1. 内置信号 &#x1f4e1; # 按钮点击信号 &#x1f5b1;️ QPushButton.clicked# 文本输入变化信号 ⌨️ QLineEdit.textChanged# 窗口关闭信号 &#x1f6aa; QWidget.closeEvent2. 自定义信号 ✨ c…...

STM32 是什么?同类产品有哪些

STM32 是什么&#xff1f; STM32 是由意法半导体&#xff08;STMicroelectronics&#xff09;推出的基于 ARM Cortex-M 内核 的 32 位微控制器&#xff08;MCU&#xff09;系列。它专为高性能、低功耗的嵌入式应用设计&#xff0c;广泛应用于以下领域&#xff1a; 工业控制&am…...

20250213编译飞凌的OK3588-C_Linux5.10.209+Qt5.15.10_用户资料_R1

20250213编译飞凌的OK3588-C_Linux5.10.209Qt5.15.10_用户资料_R1 2025/2/13 11:43 缘起&#xff1a;飞凌发布了高版本内核的适配OK3588-C的Buildroot的SDK&#xff1a;OK3588-C_Linux5.10.209Qt5.15.10_用户资料_R1。 但是编译异常了。 于是按照百度升级libc6&#xff0c;可以…...

【DeepSeek】DeepSeek R1 本地windows部署(Ollama+Docker+OpenWebUI)

1、背景&#xff1a; 2025年1月&#xff0c;DeepSeek 正式发布 DeepSeek-R1 推理大模型。DeepSeek-R1 因其成本价格低廉&#xff0c;性能卓越&#xff0c;在 AI 行业引起了广泛关注。DeepSeek 提供了多种使用方式&#xff0c;满足不同用户的需求和场景。本地部署在数据安全、性…...

AI知识库 - Cherry Studio

1 引言&#xff1a; 最近 DeepSeek 很火啊&#xff0c;想必大家都知道&#xff0c;DeepSeek 这个开源的模型出来后&#xff0c;因其高质量能力和R1 的思维链引发了大家本地部署的热潮。我也不例外&#xff0c;本地部署了一个 14B 的模型&#xff0c;然后把&#xff0c;感觉傻傻…...

【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错

挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上&#xff0c;虽然速度慢&#xff0c;但是好在容量大。大模型在工作&#xff0c;但是程序看起来有问题&#xff0c;导致系统卡死了&#xff0c;然后我重启了&#xff0c;然后报错&#xff1a;wrong fs type bad option &…...

OpenLayer创建第一个基础地图实例

OpenLayers创建第一个基础地图实例 OpenLayers 是一个开源的 JavaScript 库&#xff0c;用于在网页上显示交互式地图。它支持多种地图源&#xff0c;包括 OpenStreetMap、Google Maps、Bing Maps 等。本文将介绍如何使用 OpenLayers 创建一个基础地图实例。 1. 准备工作 在开…...

Git命令摘录

使用 Git 升级软件通常是指通过 Git 仓库获取软件的最新版本或更新代码。以下是详细的步骤和方法&#xff1a; 1. 克隆软件仓库 如果这是你第一次获取软件代码&#xff0c;可以使用 git clone 命令将远程仓库克隆到本地。 git clone <仓库地址> 例如&#xff1a; git cl…...

windows 通过docker 安装mysql

参考&#xff1a;Docker安装并使用Mysql&#xff08;可用详细&#xff09;_docker 安装mysql-CSDN博客 1. 拉取镜像&#xff1a;docker pull mysql:5.7 2. 查看镜像&#xff1a;docker image 3. 创建mysql 容器实例&#xff0c;并将data 目录挂载到本地d盘上 docker run --n…...

实现Tree 树形控件的鼠标拖拽功能

1.element中的el-tree实现可拖拽节点 通过 draggable 属性可让节点变为可拖拽 <el-tree :data"data" node-key"id" default-expand-all node-drag-start"handleDragStart" node-drag-enter"handleDragEnter" node-drag-leave"…...

同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展

1 2025开年&#xff0c;人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸&#xff0c;不仅在国内掀起了技术热潮&#xff0c;并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球&#xff0c;这不仅重塑了产业格…...

硬件学习笔记--42 电磁兼容试验-6 传导差模电流干扰试验介绍

目录 电磁兼容试验-传导差模电流试验 1.试验目的 2.试验方法 3.判定依据及意义 电磁兼容试验-传导差模电流干扰试验 驻留时间是在规定频率下影响量施加的持续时间。被试设备&#xff08;EUT&#xff09;在经受扫频频带的电磁影响量或电磁干扰的情况下&#xff0c;在每个步进…...

基于 Filebeat 的日志收集

在现代分布式系统中&#xff0c;日志数据作为关键的监控与故障排查依据&#xff0c;越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;生态系统中的应用&#xff0c;帮助开发者构建高效、稳定的日…...

Next.js 15【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护&#xff0c;旨在解决单页应用&#xff08;SPA&#xff09;和多页应用&#xff08;MPA&#xff09;在性能和 SEO 上的不足。 核心特性 服务端渲染&#xff08;SSR&#xff09;--…...

vue学习10

1.GPT和Copilot Copilot Tab接受 删除键&#xff0c;不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块&#xff0c;进行数据更…...

redis 缓存击穿问题与解决方案

前言1. 什么是缓存击穿?2. 如何解决缓存击穿?怎么做?方案1: 定时刷新方案2: 自动续期方案3: 定时续期 如何选? 前言 当我们使用redis做缓存的时候,查询流程一般是先查询redis,如果redis未命中,再查询MySQL,将MySQL查询的数据同步到redis(回源),最后返回数据 流程图 为什…...

【Vue3 入门到实战】16. Vue3 非兼容性改变

目录 1. 全局 API 的变化 2. 模板指令的变化 2.1 组件v-model用法 2.2 template v-for用法 2.3 v-if 和v-for 优先级变化 2.4 v-bind"object" 顺序敏感 2.5 v-on:event.native 被移除 3. 组件的变化 3.1 功能组件只能使用普通函数创建 3.2 SFC弃用功能属性…...

20250214 随笔 Elasticsearch(ES)索引数据 vs. 业务数据库冗余双写

Elasticsearch&#xff08;ES&#xff09;索引数据 vs. 业务数据库冗余双写的区别、优缺点分析 在高并发数据查询场景下&#xff0c;Elasticsearch&#xff08;ES&#xff09; 和 业务数据库冗余双写 都是常见的数据同步方案。它们主要区别在于数据存储方式、查询性能、数据一…...

c# textbox 设置不获取光标

[DllImport("user32",EntryPoint "HideCaret")] private static extern bool HideCaret(IntPtr hWnd); //需引入命名空间using System.Runtime.InteropServices; private void Txt_RecInfo_MouseDown(object sender, MouseEventArgs e) { …...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...