带移植说明的xmodem源码(STM32)//移植时,需要修改该函数//串口收发,实用查询方式。
voidxm_port_write(uint8*ch){ while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); USART1->DR=*ch;}//串口接收函数,需要移植sint8xm_port_read(uint8*ch){ if(USART_GetFlagStatus(USART1,USART_IT_RXNE)!=RESET) { *ch=USART_ReceiveData(USART1); return1; } return0;}//在定时中断里调用该函数//定时时间5msvoidxm_timer(void){ xmodem_timeout++;}
2025/1/29 3:13:31 4KB xmodem 源码 代码 移植
1
GJK计算碰撞代码的应用//-----------------------------------------------------------------------------//Torque3D//Copyright(C)GarageGames.com,Inc.////Thecorealgorithmsinthisfilearebasedoncodewritten//byG.vandenBergenforhisinterferencedetectionlibrary,//"SOLID2.0"//-----------------------------------------------------------------------------#include"core/dataChunker.h"#include"collision/collision.h"#include"sceneGraph/sceneObject.h"#include"collision/convex.h"#include"collision/gjk.h"//----------------------------------------------------------------------------staticF32rel_error=1E-5f;//relativeerrorinthecomputeddistancestaticF32sTolerance=1E-3f;//DistancetolerancestaticF32sEpsilon2=1E-20f;//ZerolengthvectorstaticU32sIteration=15;//Stuckinaloop?S32num_iterations=0;S32num_irregularities=0;//----------------------------------------------------------------------------GjkCollisionState::GjkCollisionState(){a=b=0;}GjkCollisionState::~GjkCollisionState(){}//----------------------------------------------------------------------------voidGjkCollisionState::swap(){Convex*t=a;a=b;b=t;CollisionStateList*l=mLista;mLista=mListb;mListb=l;v.neg();}//----------------------------------------------------------------------------voidGjkCollisionState::compute_det(){//Dotnewpointwithcurrentsetfor(inti=0,bit=1;i0)returnfalse;}}returntrue;}//----------------------------------------------------------------------------inlineboolGjkCollisionState::closest(VectorF&v){compute_det();for(ints=bits;s;--s){if((s&bits)==s){if(valid(s|last_bit)){ bits=s|last_bit;if(bits!=15) compute_vector(bits,v); returntrue;}}}if(valid(last_bit)){bits=last_bit;v=y[last];returntrue;}returnfalse;}//----------------------------------------------------------------------------inlineboolGjkCollisionState::degenerate(constVectorF&w){for(inti=0,bit=1;imState=this;mListb=CollisionStateList::alloc();mListb->mState=this;}//----------------------------------------------------------------------------voidGjkCollisionState::reset(constMatrixF&a2w,constMatrixF&b2w){VectorFzero(0,0,0),sa,sb;a2w.mulP(a->support(zero),&sa);b2w.mulP(b->support(zero),&sb);v=sa-sb;dist=v.len();}//----------------------------------------------------------------------------voidGjkCollisionState::getCollisionInfo(constMatrixF&mat,Collision*info){AssertFatal(false,"GjkCollisionState::getCollisionInfo()-Thereremainscalingproblemshere.");//ThisassumesthattheshapesdonotintersectPoint3Fpa,pb;if(bits){getClosestPoints(pa,pb);mat.mulP(pa,&info->point);b->getTransform().mulP(pb,&pa);info->normal=info->point-pa;}else{mat.mulP(p[last],&info->point);info->normal=v;}info->normal.normalize();info->object=b->getObject();}voidGjkCollisionState::getClosestPoints(Point3F&p1,Point3F&p2){F32sum=0;p1.set(0,0,0);p2.set(0,0,0);for(inti=0,bit=1;isupport(va);a2w.mulP(p[last],&sa);VectorFvb,sb;w2b.mulV(v,&vb);q[last]=b->support(vb);b2w.mulP(q[last],&sb);VectorFw=sa-sb;if(mDot(v,w)>0)returnfalse;if(degenerate(w)){++num_irregularities;returnfalse;}y[last]=w;all_bits=bits|last_bit;++num_iterations;if(!closest(v)||num_iterations>sIteration){++num_irregularities;returnfalse;}}while(bitssEpsilon2);returntrue;}F32GjkCollisionState::distance(constMatrixF&a2w,constMatrixF&b2w,constF32dontCareDist,constMatrixF*_w2a,constMatrixF*_w2b){num_iterations=0;MatrixFw2a,w2b;if(_w2a==NULL||_w2b==NULL){w2a=a2w;w2b=b2w;w2a.inverse();w2b.inverse();}else{w2a=*_w2a;w2b=*_w2b;}reset(a2w,b2w);bits=0;all_bits=0;F32mu=0;do{nextBit();VectorFva,sa;w2a.mulV(-v,&va);p[last]=a->support(va);a2w.mulP(p[last],&sa);VectorFvb,sb;w2b.mulV(v,&vb);q[last]=b->support(vb);b2w.mulP(q[last],&sb);VectorFw=sa-sb;F32nm=mDot(v,w)/dist;if(nm>mu)mu=nm;if(mu>dontCareDist)returnmu;if(mFabs(dist-mu)sIteration){++num_irregularities;returndist;}y[last]=w;all_bits=bits|last_bit;if(!closest(v)){++num_irregularities;returndist;}dist=v.len();}while(bitssTolerance);if(bits==15&&mu<=0)dist=0;returndist;}
2024/11/12 17:21:22 50KB GJK 碰撞
1
适合于arm1176-mtk3353的导航,品牌有神游,迪瑞特,别克车机系列导航mtk3360的应该也行,把刷机包里剩下的文件拷贝到格式化为fat的1g-4g的TF卡(注:用工具刷过的5个文件不要考),插入机器后轻捅复位键,刷入整套软件包:mcu及导航app软件1、将T卡插入机器卡槽内,注意别插反,2、插入T卡后准备固件升级,①、请插上座充,然后点击机器底壳上面的复位键(RESET)。
②、点击复位键按开机键开机,机器自动进入升级界面。
③、升级大概需要2分钟左右,升级完毕后机器重新启动开机换面,重启后进入主界面。
2024/10/23 17:24:48 46.19MB wince 导航 mtk3353 升级包
1
它具有计时功能。
此秒表有两个按键(reset,start)按下reset键后,秒表清零,按下start键后,开始计时,再次按下start键后,停止计时,用FPGA开发板上的两个七段数码管显示时间(以秒为单位),计时由0到59循环。
高级要求(可选):实现基本要求的前提下,增加一个按键(select),用于轮流切换两个七段数码管分别显示百分之一秒,秒,分钟。
规格说明:1.通过按下reset键(异步复位),将秒表清零,准备计时,等检测到start键按下并松开后,开始计时。
如果再次检测到start键按下并松开后,停止计时。
通过不断检测start键,来确定秒表是否开始计时2.在秒表计时时,七段数码管能够循环的由00…59,00…59…。
3.开始默认两个七段数码管显示秒,在检测到select键按下并松开后,数码管切换到显示分钟,再次检测到select键按下并松开后,数码管切换到显示百分之一秒,当再次检测到select键按下并松开后,数码管切换到重新显示秒。
4.在秒表停止时,数码管依然能够正常切换显示百分之一秒,秒,分钟。
5.本实验使用FPGA板:basys3(建project时,需要选择该芯片的型号)。
1.3MB VHDL
1
实际项目已验证OK,使用者根据实际情况调试dSPIN_Regs_Struct_Reset这个函数参数即可,注释很清晰,如果觉得有用,麻烦点个赞,谢谢
1
亲测可用。
华美A2路由器不死breed。
可以替代原来的uboot。
可以用openwrt刷。
也可以用编程器刷。
记得先保存eeprom。
刷完按住reset开机,可以通过192.168.1.1进入
2024/6/18 21:43:12 81KB Breed Hame
1
国产的新编的vbs脚本病毒生成器1.0版,本程序通过采集用户的各项输入、选择,产生符合需要的vbs脚本病毒,属于傻瓜式的vbs病毒制造程序。
从此以后,要制造vbs脚本病毒不用再学编程了!(当然还是懂点编程为妙:-))。
需要注意的是,请您不要运行产生的vbs病毒!另外,产生病毒的同时,本程序也产生一个恢复文件,叫做"reset.vbs",万一您不慎运行了病毒,可以运行它解毒!怎麽样?想得够周到吧!
2024/3/27 3:54:53 538KB 病毒生成器
1
挺好的1024点FFT的verilog源码,输入数据的前三个是没有用的,被reset掉了,所以等6个周期读入周期就是对的
2024/3/18 15:17:38 18KB RTL verilog 1024FFT
1
单元测试打桩开源库cpp-stub使用手册中文版本,这是从git上直接下载的,git上下载的源代码在arm上调用Stub.reset方法会引发段错误,在资源cpp-stub开源代码(下载地址:https://download.csdn.net/download/zhao_sh/15051839)有解决该bug的源代码下载。
1
设计一个通用寄存器组,满足以下要求:①通用寄存器组中有4个16位的寄存器。
②当复位信号reset=0时,将通用寄存器组中的4个寄存器清零。
③通用寄存器组中有1个写入端口,当DRWr=1时,在时钟clk的上升沿将数据总线上的数据写入DR[1..0]指定的寄存器。
④通用寄存器组中有两个读出端口,由控制信IDC控制,分别对应算术逻辑单元的A口和B口。
IDC=0选择目的操作数;
IDC=1选择源操作数。
⑤设计要求层次设计。
底层的设计实体有3个:通用寄存器组数据输入模块包括4个16位寄存器,具有复位功能和允许写功能;
一个4选1多路开关,负责选择寄存器的读出。
一个2路数据分配器实现数据双端口输出,顶层设计构成一个完整的通用寄存器组。
2024/1/29 1:58:14 525KB 组成原理
1
共 26 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡