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

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 处理库之一&#xff0c;广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能&#xff0c;支持注解、模块化设计和多种数据格式&#xff08;如 XML、YAML&#xff09;。本文将详细介…...

游戏引擎学习第143天

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

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…...

Nginx解决前端跨域问题

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

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

国产编辑器EverEdit - 宏功能介绍

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

图像滑块对比功能的开发记录

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

【计算机网络】Socket

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

Electron应用中获取设备唯一ID和系统信息

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

文件上传漏洞: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 分析源代码 &#xff0c;发现上传文件的存放路径可控 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 芯片&#xff0c;pin_to_pin兼容FPGAXC7K410T-2FFG900 &#xff0c;支持PCIeX8、64bit DDR3容量2GByte&#xff0c;HPC的FMC连接器&#xff0c;板卡支持PXIE标准协议&#xff0c;其中XJ3…...

使用Open WebUI下载的模型文件(Model)默认存放在哪里?

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Ollama部署LLM专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月21日21点21分 &#x1f004;️文章质量&#xff1a;95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…...

FPGA 配置原理

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

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...