TMS320F28P550SJ9学习笔记6:SCI所有寄存器__结构体寄存器方式配置 SCI通信初始化__库函数发送测试
继续学习如何使用结构体寄存器的方式配置这款单片机的外设,这里配置SCI通信的初始化
但SCI gpio 的初始化还是调用的库函数比较方便,它的发送部分页调用了库函数
有关收发方面的逻辑,我会在之后重新自己写一次
文章提供测试代码讲解、完整工程下载、测试效果图
目录
系统时钟频率:
SCI通信 SCICCR寄存器的配置:
SCI通信 SCICTL1寄存器的配置:
SCI通信 SCICTL2寄存器的配置:
SCI通信 SCIFFCT寄存器的配置:
SCI通信 SCIFFRX寄存器的配置:
SCI通信 SCIFFTX寄存器的配置:
SCIHBAUD 和 SCILBAUD 配置:
SCI通信 SCIPRI寄存器的配置:
SCI通信 SCIRXBUF 寄存器的配置:
SCI通信 SCIRXEMU寄存器的配置:
SCI通信 SCIRXST 寄存器的配置:
SCI通信 SCITXBUF寄存器的配置:
SCI 初始化 配置总览:
主函数应用:
测试结果图:
完整工程下载:
系统时钟频率:
SYSCLK 是 150Mhz
@LSPCLK = 37.5 MHz (150 MHz SYSCLK)
SYSCLK可以在device.h文件查阅到
SCI通信 SCICCR寄存器的配置:
手册第2842页:
这里直接通过我的配置以及注释来查看应用:
// SciaRegs、ScibRegs、ScicRegs 分别配置三组SCI通信端口SciaRegs.SCICCR.bit.ADDRIDLE_MODE=1; // 多处理器协议模式 0:空闲模式 1:地址位模式SciaRegs.SCICCR.bit.LOOPBKENA=0; // 禁用环路回测模式(自己的TX 连接 自己的RX)SciaRegs.SCICCR.bit.PARITY=1; // 奇偶校验 0:odd 1:Even ( 如果有的话 )SciaRegs.SCICCR.bit.PARITYENA=0; // 禁用奇偶校验SciaRegs.SCICCR.bit.SCICHAR= 7 ; // 字符长度:8SciaRegs.SCICCR.bit.STOPBITS=0; // 0:1位停止位 1:2位停止位//SciaRegs.SCICCR.bit.rsvd1
SCI通信 SCICTL1寄存器的配置:
手册2844页:
SciaRegs.SCICTL1.bit.RXERRINTENA=1; // 使能接收错误中断//SciaRegs.SCICTL1.bit.SWRESET=0; // 0:复位重置SCI通信 1:复位之后的启用 (复位不影响之前对其 波特率寄存器 之类的设定)SciaRegs.SCICTL1.bit.SLEEP=0; // 监听睡眠标志,多处理器配置,被设置1时,接收器仍工作但不更新接收缓冲区就绪位,即使接收到地址位,也需要手动置0SciaRegs.SCICTL1.bit.TXENA=1; // 1:启用传输器 0:禁用传输器//SciaRegs.SCICTL1.bit.TXWAKE // 控制数据发送功能 (一般不需要手动设定)SciaRegs.SCICTL1.bit.RXENA=1; //接收使能: 0:防止接收到的字符传输到SCIRXEMU和SCIRXBUF接收器缓冲区 1:将接收到的字符发送到SCIRXEMU和SCIRXBUF// RXENA 位能够禁用SCI接收器,停止接收数据,但不会阻止 RXERRINTENA 位控制的中断
SCI通信 SCICTL2寄存器的配置:
手册第2847页:
SciaRegs.SCICTL2.bit.RXBKINTENA=1; // 1:启用接收器缓冲区/中断 0:禁用 控制由RXRDY标志或BRKDT标志(SCIRXST.6和.5位)引起的中断请求//SciaRegs.SCICTL2.bit.TXRDY //[只读] 当该位被设置时,表示发送数据缓冲区寄存器SCITXBUF已准备好接收下一个字符。将数据写入SCITXBUF会自动清除该位。 //SciaRegs.SCICTL2.bit.TXEMPTY //[只读] 值为0h时,表示发射器缓冲区或移位寄存器或两者都载有数据;值为1h时,表示发射器缓冲区和移位寄存器均为空SciaRegs.SCICTL2.bit.TXINTENA=1; // 1:启用TXRDY中断 0:禁用TXRDY中断 (传输完成的中断)
SCI通信 SCIFFCT寄存器的配置:
手册2860页:
//SciaRegs.SCIFFCT.bit.ABD // [只读] O:自动波特率检测未完成。'A'或'a'字符未成功接收 1h:自动波特率硬件在SCI接收寄存器中检测到'A'或'a'字符。自动检测完成//SciaRegs.SCIFFCT.bit.ABDCLR=1; // 写入1可以清除位于15的ABD标志 写入0对ABD标志位无效,读取时会返回0SciaRegs.SCIFFCT.bit.CDC=0; // 值为0时,禁用自动波特率对齐 值为1时,启用SciaRegs.SCIFFCT.bit.FFTXDLY=10; // 定义从FIFO发送缓冲区到发送移位寄存器之间的传输延迟 最小延迟为0个波特率时钟周期,最大延迟为256个波特率时钟周期
SCI通信 SCIFFRX寄存器的配置:
手册2858页:
SciaRegs.SCIFFRX.bit.RXFFIENA=1; // 1:启用 RX FIFO接收中断 0:禁用SciaRegs.SCIFFRX.bit.RXFFIL=5; // 接收FIFO中断级别位 可以设定的值范围是从0到31SciaRegs.SCIFFRX.bit.RXFFINTCLR=0; // 1:清除接收FIFO中断 , 0: 对RXFIFINT标志位没有作用//SciaRegs.SCIFFRX.bit.RXFFOVF // [只读] 0:接收FIFO没有溢出 1:表示接收FIFO溢出 表示FIFO中接收的单词超过16个,且第一个接收到的单词丢失SciaRegs.SCIFFRX.bit.RXFFOVRCLR=0; // 0:对RXFFOVF标志位无效 1:清除RXFFOVF标志位SciaRegs.SCIFFRX.bit.RXFFST=10; // 接收FIFO有16个字//SciaRegs.SCIFFRX.bit.RXFIFORESET // 0:将FIFO指针写0以重置为零,并保持重置状态 1:重新启用接收FIFO操作//SciaRegs.SCIFFRX.bit.RXFFINT // [只读] 0:表示RXFIFO中断尚未发生 1:表示RXFIFO中断已经发生
SCI通信 SCIFFTX寄存器的配置:
手册2856页:
SciaRegs.SCIFFTX.bit.SCIFFENA=1; // 1:启用SCI FIFO增强功能 0:禁用//SciaRegs.SCIFFTX.bit.SCIRST=0; // 写0操作将引起软件复位,并复位TXFFINT和RXFFINT,从而清除TX/RX FIFO的内容。SCI将保持复位状态,直到写入1。SciaRegs.SCIFFTX.bit.TXFFIENA=1;SciaRegs.SCIFFTX.bit.TXFFIL=5; // 发送FIFO中断级别位 //SciaRegs.SCIFFTX.bit.TXFFINT // [只读] 0:TXFIFO中断未发生 1:TXFIFO中断发生//SciaRegs.SCIFFTX.bit.TXFFINTCLR=0; // 0:对TXFIFINT标志位无效 1:清除位于第7位的TXFFINT标志SciaRegs.SCIFFTX.bit.TXFFST=10; //发送FIFO有16个字//SciaRegs.SCIFFTX.bit.TXFIFORESET // 0:将FIFO指针写0以重置为零,并保持重置状态 1:重新启用发送FIFO操作
SCIHBAUD 和 SCILBAUD 配置:
2846页:
2847页:
unsigned char scihbaud = 0;unsigned char scilbaud = 0;Uint32 scibaud = 0;scibaud = lspclk / (8 * baund) - 1;scihbaud = scibaud >> 8;scilbaud = scibaud & 0xFF;SciaRegs.SCIHBAUD.all=scihbaud;SciaRegs.SCILBAUD.all=scilbaud;
SCI通信 SCIPRI寄存器的配置:
手册2862页:
// 决定了当仿真暂停时(例如,调试器命中断点)会发生什么。//外设可以继续它正在做的任何事情(自由运行模式),或者如果处于停止模式,//它可以立即停止,也可以在当前操作(当前接收/传输序列)完成后停止。SciaRegs.SCIPRI.bit.FREESOFT = 1; // 0:立即停止暂停 1:在停止之前完成当前的接收/传输序列 2或3: 自由运行
SCI通信 SCIRXBUF 寄存器的配置:
手册2854页:
//SciaRegs.SCIRXBUF.bit.SAR // [只读] 接收字符位//SciaRegs.SCIRXBUF.bit.SCIFFFE // [只读] SCI FIFO帧错误标志位 0:表示在接收字符时没有发生帧错误(位7-0) 1:接收字符时发生了帧错误(位7-0)//SciaRegs.SCIRXBUF.bit.SCIFFPE // [只读] 0:接收字符时没有发生奇偶校验错误 1:接收字符时发生了奇偶校验错误
SCI通信 SCIRXEMU寄存器的配置:
手册2852页:
//SciaRegs.SCIRXEMU.bit.ERXDT // [只读] 接收仿真缓冲数据
SCI通信 SCIRXST 寄存器的配置:
手册2850页:
//SciaRegs.SCIRXST.bit.BRKDT // [只读] 中断条件发生时会被设置 0:无中断发生 1:中断发生//SciaRegs.SCIRXST.bit.FE // [只读] SCI会在没有找到预期的停止位时设置这个位 0:没有检测到帧错误 1:检测到帧错误//SciaRegs.SCIRXST.bit.OE // [只读] 0:未检测到overrun错误 1:检测到overrun错误//SciaRegs.SCIRXST.bit.PE // [只读] 0: 无奇偶校验错误/奇偶校验被禁用 1:奇偶校验错误//SciaRegs.SCIRXST.bit.RXERROR // [只读] 0: 无错误标志设置 1:错误标志设置 该错误标志不能直接清除,只能主动的软件复位、通道复位(SCIRST)或系统复位来清除。//SciaRegs.SCIRXST.bit.RXRDY // [只读] 0: SCI RXBUF中没有新字符 1:字符准备好从SCI RXBUF读取//SciaRegs.SCIRXST.bit.RXWAKE // [只读] 多处理器模式下的 接收器唤醒检测标志 0: 未检测到接收器唤醒条件 1:检测到接收器唤醒条件
SCI通信 SCITXBUF寄存器的配置:
手册 2856页:
//SciaRegs.SCITXBUF.bit.TXDT // 传输数据缓冲区 可以读写
SCI 初始化 配置总览:
前面的配置有些会有点问题,但注释基本都对的,这里直接贴出我配好的SCI初始化函数:
然后它的引脚初始化方面我还是使用了库函数的形式初始化,简短一些
//初始化SCI 通信 void Init_SCIA(uint32_t baund,uint32_t lspclk) {// SciaRegs、ScibRegs、ScicRegs 分别配置三组SCI通信端口//SciaRegs.SCICCR.bit.ADDRIDLE_MODE = 1; // 多处理器协议模式 0:空闲模式 1:地址位模式SciaRegs.SCICCR.bit.LOOPBKENA = 0; // 禁用环路回测模式(自己的TX 连接 自己的RX)SciaRegs.SCICCR.bit.PARITY = 1; // 奇偶校验 0:odd 1:Even ( 如果有的话 )SciaRegs.SCICCR.bit.PARITYENA = 0; // 禁用奇偶校验SciaRegs.SCICCR.bit.SCICHAR = 7 ; // 字符长度:8SciaRegs.SCICCR.bit.STOPBITS = 0; // 0:1位停止位 1:2位停止位//SciaRegs.SCICCR.bit.rsvd1SciaRegs.SCICTL1.bit.RXERRINTENA = 1; // 使能接收错误中断SciaRegs.SCICTL1.bit.SWRESET = 1; // 0:复位重置SCI通信 1:复位之后的启用 (复位不影响之前对其 波特率寄存器 之类的设定)//SciaRegs.SCICTL1.bit.SLEEP = 0; // 监听睡眠标志,多处理器配置,被设置1时,接收器仍工作但不更新接收缓冲区就绪位,即使接收到地址位,也需要手动置0SciaRegs.SCICTL1.bit.TXENA = 1; // 1:启用传输器 0:禁用传输器//SciaRegs.SCICTL1.bit.TXWAKE // 控制数据发送功能 (一般不需要手动设定)SciaRegs.SCICTL1.bit.RXENA = 1; // 接收使能: 0:防止接收到的字符传输到SCIRXEMU和SCIRXBUF接收器缓冲区 1:将接收到的字符发送到SCIRXEMU和SCIRXBUF// RXENA 位能够禁用SCI接收器,停止接收数据,但不会阻止 RXERRINTENA 位控制的中断SciaRegs.SCICTL2.bit.RXBKINTENA = 1; // 1:启用接收器缓冲区/中断 0:禁用 控制由RXRDY标志或BRKDT标志(SCIRXST.6和.5位)引起的中断请求//SciaRegs.SCICTL2.bit.TXRDY // [只读] 当该位被设置时,表示发送数据缓冲区寄存器SCITXBUF已准备好接收下一个字符。将数据写入SCITXBUF会自动清除该位。//SciaRegs.SCICTL2.bit.TXEMPTY // [只读] 值为0h时,表示发射器缓冲区或移位寄存器或两者都载有数据;值为1h时,表示发射器缓冲区和移位寄存器均为空SciaRegs.SCICTL2.bit.TXINTENA = 1; // 1:启用TXRDY中断 0:禁用TXRDY中断 (传输完成的中断)//SciaRegs.SCIFFCT.bit.ABD // [只读] O:自动波特率检测未完成。'A'或'a'字符未成功接收 1h:自动波特率硬件在SCI接收寄存器中检测到'A'或'a'字符。自动检测完成//SciaRegs.SCIFFCT.bit.ABDCLR = 1; // 写入1可以清除位于15的ABD标志 写入0对ABD标志位无效,读取时会返回0SciaRegs.SCIFFCT.bit.CDC = 0; // 值为0时,禁用自动波特率对齐 值为1时,启用SciaRegs.SCIFFCT.bit.FFTXDLY = 10; // 定义从FIFO发送缓冲区到发送移位寄存器之间的传输延迟 最小延迟为0个波特率时钟周期,最大延迟为256个波特率时钟周期SciaRegs.SCIFFRX.bit.RXFFIENA = 1; // 1:启用 RX FIFO接收中断 0:禁用SciaRegs.SCIFFRX.bit.RXFFIL = 5; // 接收FIFO中断级别位 可以设定的值范围是从0到31SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // 1:清除接收FIFO中断 , 0: 对RXFIFINT标志位没有作用//SciaRegs.SCIFFRX.bit.RXFFOVF // [只读] 0:接收FIFO没有溢出 1:表示接收FIFO溢出 表示FIFO中接收的单词超过16个,且第一个接收到的单词丢失SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // 0:对RXFFOVF标志位无效 1:清除RXFFOVF标志位//SciaRegs.SCIFFRX.bit.RXFFST = 10; // 接收FIFO有16个字SciaRegs.SCIFFRX.bit.RXFIFORESET = 1; // 0:将FIFO指针写0以重置为零,并保持重置状态 1:重新启用接收FIFO操作//SciaRegs.SCIFFRX.bit.RXFFINT // [只读] 0:表示RXFIFO中断尚未发生 1:表示RXFIFO中断已经发生SciaRegs.SCIFFTX.bit.SCIFFENA = 1; // 1:启用SCI FIFO增强功能 0:禁用SciaRegs.SCIFFTX.bit.SCIRST = 1; // 写0操作将引起软件复位,并复位TXFFINT和RXFFINT,从而清除TX/RX FIFO的内容。SCI将保持复位状态,直到写入1。SciaRegs.SCIFFTX.bit.TXFFIENA = 1;SciaRegs.SCIFFTX.bit.TXFFIL = 5; // 发送FIFO中断级别位//SciaRegs.SCIFFTX.bit.TXFFINT // [只读] 0:TXFIFO中断未发生 1:TXFIFO中断发生SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1; // 0:对TXFIFINT标志位无效 1:清除位于第7位的TXFFINT标志//SciaRegs.SCIFFTX.bit.TXFFST = 10; //发送FIFO有16个字SciaRegs.SCIFFTX.bit.TXFIFORESET = 1; // 0:将FIFO指针写0以重置为零,并保持重置状态 1:重新启用发送FIFO操作unsigned char scihbaud = 0;unsigned char scilbaud = 0;Uint32 scibaud = 0;scibaud = lspclk / (8 * baund) - 1;scihbaud = scibaud >> 8;scilbaud = scibaud & 0xFF;SciaRegs.SCIHBAUD.all=scihbaud;SciaRegs.SCILBAUD.all=scilbaud;// 决定了当仿真暂停时(例如,调试器命中断点)会发生什么。//外设可以继续它正在做的任何事情(自由运行模式),或者如果处于停止模式,//它可以立即停止,也可以在当前操作(当前接收/传输序列)完成后停止。SciaRegs.SCIPRI.bit.FREESOFT = 1; // 0:立即停止暂停 1:在停止之前完成当前的接收/传输序列 2或3: 自由运行//SciaRegs.SCIRXBUF.bit.SAR // [只读] 接收字符位//SciaRegs.SCIRXBUF.bit.SCIFFFE // [只读] SCI FIFO帧错误标志位 0:表示在接收字符时没有发生帧错误(位7-0) 1:接收字符时发生了帧错误(位7-0)//SciaRegs.SCIRXBUF.bit.SCIFFPE // [只读] 0:接收字符时没有发生奇偶校验错误 1:接收字符时发生了奇偶校验错误//SciaRegs.SCIRXEMU.bit.ERXDT // [只读] 接收仿真缓冲数据//SciaRegs.SCIRXST.bit.BRKDT // [只读] 中断条件发生时会被设置 0:无中断发生 1:中断发生//SciaRegs.SCIRXST.bit.FE // [只读] SCI会在没有找到预期的停止位时设置这个位 0:没有检测到帧错误 1:检测到帧错误//SciaRegs.SCIRXST.bit.OE // [只读] 0:未检测到overrun错误 1:检测到overrun错误//SciaRegs.SCIRXST.bit.PE // [只读] 0: 无奇偶校验错误/奇偶校验被禁用 1:奇偶校验错误//SciaRegs.SCIRXST.bit.RXERROR // [只读] 0: 无错误标志设置 1:错误标志设置 该错误标志不能直接清除,只能主动的软件复位、通道复位(SCIRST)或系统复位来清除。//SciaRegs.SCIRXST.bit.RXRDY // [只读] 0: SCI RXBUF中没有新字符 1:字符准备好从SCI RXBUF读取//SciaRegs.SCIRXST.bit.RXWAKE // [只读] 多处理器模式下的 接收器唤醒检测标志 0: 未检测到接收器唤醒条件 1:检测到接收器唤醒条件//SciaRegs.SCITXBUF.bit.TXDT // 传输数据缓冲区 可以读写//初始化SCI引脚GPIO_SetupPinMux(28, GPIO_MUX_CPU1, 1);GPIO_SetupPinOptions(28, GPIO_INPUT, GPIO_PUSHPULL);GPIO_SetupPinMux(29, GPIO_MUX_CPU1, 1);GPIO_SetupPinOptions(29, GPIO_OUTPUT, GPIO_ASYNC); }
主函数应用:
主要看俩部分内容:一个是怎么调用初始化的,还有一个是调用库函数发送
但这个官方例程的库函数发送有些问题,并不好用,
我会在之后的文章自己重写一个相关函数
测试结果图:
完整工程下载:
https://download.csdn.net/download/qq_64257614/90463861
相关文章:

TMS320F28P550SJ9学习笔记6:SCI所有寄存器__结构体寄存器方式配置 SCI通信初始化__库函数发送测试
继续学习如何使用结构体寄存器的方式配置这款单片机的外设,这里配置SCI通信的初始化 但SCI gpio 的初始化还是调用的库函数比较方便,它的发送部分页调用了库函数 有关收发方面的逻辑,我会在之后重新自己写一次 文章提供测试代码讲解、完整…...

详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!
以下是基于脚本实现MySQL一键安装与配置的详细方案,涵盖Linux主流系统(CentOS/Ubuntu)及Windows环境,结合自动化部署与高可用性扩展,旨在提升运维效率: 一、Linux系统(CentOS 7.x)一…...

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法
视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外,平台还支持用户自行上传视频文件,也可将上传的点播…...

增删改查 数据下载 一键编辑 删除
index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…...

【Go学习实战】03-2-博客查询及登录
【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…...

回溯算法(C/C++)
目录 一、组合问题 组合 组合剪枝 组合总和 III编辑 组合总和编辑 组合总和 II 电话号码的字母组合编辑 二、分割问题 分割回文串 复原 IP 地址 三、集合问题 子集 子集 II 非递减子序列 四、排列问题 全排列 全排列 II 五、棋盘问题 N 皇后 课程&#x…...

物联网智慧农业一体化解决方案-可继续扩展更多使用场景
在智慧农业中,从种子、施肥、灌溉、锄地、农具管理、日常照料到蔬菜档案管理,以及与客户、供应商、市场的对接,可以通过物联网(IoT)、大数据、人工智能(AI)、区块链和云计算等技术,构建一个从生产到销售的全流程数字化、智能化农业生态系统。以下是实现方案和技术路径的…...

Jackson 详解
目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一,广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能,支持注解、模块化设计和多种数据格式(如 XML、YAML)。本文将详细介…...

游戏引擎学习第143天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并规划今天的内容 目前,我们正在进行声音混合的开发。我们已经写好了声音混合器,并且已经实现了一些功能,比如声音流播放和音量插值。过去一周我们做了很多工作,进展非常快。不…...

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决
介绍一下我的是ubuntu20.04.机载电脑是orinnx,通过源码烧写的系统。 首先打开终端,输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容, ONNX(Open Neural Network E…...

Nginx解决前端跨域问题
1. 理解 CORS 和同源策略 1.1 同源策略 同源策略是一种浏览器安全机制,用于阻止不同源(不同域名、协议或端口)的 Web 应用相互访问数据。它确保了 Web 应用的隔离性,防止恶意网站访问用户数据或执行不安全的操作。 同源策略下&…...

ReferenceError: assignment to undeclared variable xxx
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

国产编辑器EverEdit - 宏功能介绍
1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器,可以让用户愉快的从繁琐的工作中解放出来,其本质是对键盘和菜单的操作序列的录制,并不会识别文件的内容,属于无差别无脑执行。 特别是对一些有规律的重复按键动作,…...

图像滑块对比功能的开发记录
背景介绍 最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰…...

【计算机网络】Socket
Socket 是网络通信的核心技术之一,充当应用程序与网络协议栈之间的接口。 1. Socket 定义 Socket(套接字)是操作系统提供的 网络通信抽象层,允许应用程序通过标准接口(如 TCP/IP 或 UDP)进行数据传输。它…...

Electron应用中获取设备唯一ID和系统信息
让我创建一篇关于如何在Electron应用中获取设备唯一ID和系统信息,并在登录时使用这些信息的博客文章。我将确保步骤明确、条理清晰,适合初学者和有经验的开发者。 这篇博客应包含以下部分: 介绍 - 为什么需要获取设备信息前提条件和安装依赖…...

文件上传漏洞:upload-labs靶场11-20
目录 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-11 分析源代码 ,发现上传文件的存放路径可控 if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],st…...

国产化板卡设计原理图:2330-基于FMC接口的JFM7K325T PCIeX4 3U PXIe接口卡
基于FMC接口的JFM7K325T PCIeX4 3U PXIe接口卡 一、板卡概述 本板卡基于 FPGAJFM7K325T 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXIE标准协议,其中XJ3…...

使用Open WebUI下载的模型文件(Model)默认存放在哪里?
🏡作者主页:点击! 🤖Ollama部署LLM专栏:点击! ⏰️创作时间:2025年2月21日21点21分 🀄️文章质量:95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…...

FPGA 配置原理
用户编程控制的FPGA 是通过加载比特位流配置内部的存储单元实现的。该存储单元就是所谓的配置单元,它必须在器件上电后进行配置,从而设置查找表(LUT)的属性、连线方式、IOB 电压标准和其它的用户设计。 1.配置帧 以Xilinx 公司的…...

企业级虚拟化数据库基础平台自动化部署项目
一、项目简介及准备工作 1.1.虚拟化平台简介 1.1.1.ESXi 8 是什么? 定义: ESXi 8 是 VMware 推出的最新版本 裸机虚拟化管理程序(Hypervisor),属于 VMware vSphere 产品线的核心组件。 核心功能: 在物理…...

关于elementui的时间组件与后端时间和oracle数据库时间的对应格式
前端: <el-date-pickerv-model"formInline.startTime"type"date"value-format"yyyy-MM-dd"placeholder"选择日期"> </el-date-picker> 后端: private String startTime; private String endTime…...

一周学会Flask3 Python Web开发-WTForms表单验证
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们可以通过WTForms表单类属性的validators属性来实现表单验证。 常用的WTForms验证器 验证器说明DataRequired(messageNo…...

qt open3dBPA重建
qt open3dBPA重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionBPA_triggered();//bpa重建 void MainWindow::...

Unity游戏开发中的网格简化与LOD技术(Mesh Simplification LOD)
在Unity游戏开发中,网格简化(Mesh Simplification)和LOD(Level of Detail)技术是优化渲染性能的关键手段,尤其在处理复杂场景和高精度模型时至关重要。以下是一套系统的实现方案与优化策略: 一、…...

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

纯html文件实现目录和文档关联
目录结构 效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>项目结题报告</title><style lang"scss">::-webkit-scrollbar {width: 6px;height: 6px;}::-webkit-scro…...

C# | 委托 | 事件 | 异步
委托(Delegate)和事件(Event) 在C#和C中,委托(Delegate)与事件(Event)以及函数对象(Function Object)是实现回调机制或传递行为的重要工具。虽然…...

数据结构——顺序表与链表
1. 基础介绍 1、线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素; (2)第一个数据元素没有前驱数据…...

【uniapp】图片添加canvas水印
目录 需求&背景实现地理位置添加水印 ios补充 需求&背景 需求:拍照后给图片添加水印, 水印包含经纬度、用户信息、公司logo等信息。 效果图: 方案:使用canvas添加水印。 具体实现:上传图片组件是项目里现有的ÿ…...