当前位置: 首页 > 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) { …...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...