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 公司的…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...

WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...