+(UIView*_Nullable)az_gradientViewWithColors:(NSArray*_Nullable)colorslocations:(NSArray*_Nullable)locationsstartPoint:(CGPoint)startPointendPoint:(CGPoint)endPoint;-(void)az_setGradientBackgroundWithColors:(NSArray*_Nullable)colorslocations:(NSArray<NSN
2024/4/14 1:07:25 5.15MB OC 工具类 封装 Extension
1
#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineLED_DATP0sbitLED_SEG0=P2^7;sbitLED_SEG1=P2^6;sbitLED_SEG2=P2^5;sbitLED_SEG3=P2^4;#defineTIME_CYLC100//12M晶振,定时器10ms中断一次我们1秒计算一次转速//1000ms/10ms=100#definePLUS_PER10//码盘的齿数,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈#defineK1.65//校准系数unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchardataDisbuf[4];//显示缓冲区uintTcounter=0;//时间计数器bitFlag_Fresh=0;//刷新标志bitFlag_clac=0;//计算转速标志bitFlag_Err=0;//超量程标志voidDisplayFresh();//在数码管上显示一个四位数voidClacSpeed();//计算转速,并把结果放入数码管缓冲区voidinit_timer();//初始化定时器T0\T1voidDelay(uintms);//延时函数voidit_timer0()interrupt1/*interruptaddressis0x000b*/{TF0=0;//定时器T0用于数码管的动态刷新TH0=0xC0;TL0=0x00;Flag_Fresh=1;Tcounter++;if(Tcounter>TIME_CYLC){Flag_clac=1;//周期到,该重新计算转速了}}voidit_timer1()interrupt3/*interruptaddressis0x001b*/{TF1=0;//定时器T1用于单位时间内收到的脉冲数//要速度不是很快,T1永远不会益处Flag_Err=1;//如果速度很高,我们应考虑另外一种测速方法:T测速法}voidmain(void){Disbuf[0]=0;//开机时,初始化为0000Disbuf[1]=0;Disbuf[2]=0;Disbuf[3]=0;init_timer();while(1){if(Flag_Fresh){Flag_Fresh=0;DisplayFresh();//定时刷新数码管显示}if(Flag_clac){Flag_clac=0;ClacSpeed();//计算转速,并把结果放入数码管缓冲区Tcounter=0;//周期定时清零TH1=TL1=0x00;//脉冲计数清零}if(Flag_Err)//超量程处理{Disbuf[0]=0x9e;//开机时,初始化为0000Disbuf[1]=0x9e;Disbuf[2]=0x9e;Disbuf[3]=0x9e;while(1){DisplayFresh();//不再测速等待复位i}}}}//在数码管上显示一个四位数voidDisplayFresh(){P2|=0xF0;LED_SEG0=0;LED_DAT=table[Disbuf[0]];Delay(1);P2|=0xF0;LED_SEG1=0;LED_DAT=table[Disbuf[1]];Delay(1);P2|=0xF0;LED_SEG2=0;LED_DAT=table[Disbuf[2]];Delay(1);P2|=0xF0;LED_SEG3=0;LED_DAT=table[Disbuf[3]];Delay(1);P2|=0xF0;}//计算转速,并
2024/3/2 19:19:54 400KB 光电传感器、测速、protus、pcb
1
//***************************************************voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data){HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(REG_Address);//内部寄存器地址,请参考中文pdfHMC5883_SendByte(REG_data);//内部寄存器数据,请参考中文pdfHMC5883_Stop();//发送停止信号}//********单字节读取内部寄存器*************************ucharSingle_Read_HMC5883(ucharREG_Address){ucharREG_data;HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(REG_Address);//发送存储单元地址,从0开始HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress+1);//发送设备地址+读信号REG_data=HMC5883_RecvByte();//读出寄存器数据HMC5883_SendACK(1);HMC5883_Stop();//停止信号returnREG_data;}//******************************************************////连续读出HMC5883内部角度数据,地址范围0x3~0x5////******************************************************voidMultiple_read_HMC5883(void){uchari;HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress);//发送设备地址+写信号HMC5883_SendByte(0x03);//发送存储单元地址,从0x3开始HMC5883_Start();//起始信号HMC5883_SendByte(SlaveAddress+1);//发送设备地址+读信号for(i=0;i<6;i++)//连续读取6个地址数据,存储中BUF{BUF[i]=HMC5883_RecvByte();//BUF[0]存储数据if(i==5){HMC5883_SendACK(1);//最后一个数据需要回NOACK}else{HMC5883_SendACK(0);//回应ACK}}HMC5883_Stop();//停止信号Delay5ms();}//初始化HMC5883,根据需要请参考pdf进行修改****voidInit_HMC5883(){Single_Write_HMC5883(0x02,0x00);//}
2024/2/2 6:29:11 73KB HMC5883L QMC5883L
1
C#5.0引入async/await关键字,旨在简化异步编程模型,抛去语法糖就是Net4.0的Task+状态机。
其实在处理异步编程使用Task还是挺简单的,不过既然推出了新的语法糖,难免会尝试一下,然而在使用中却没想象中那么单纯。
以下针对ASP.NET应用程序实际使用过程中的一些总结,包括异常捕获、死锁、应用程序崩溃,实际使用过程中一不注意就可能掉坑里了。
异常捕获async方法有三种返回类型:void、Task、Taskasyncvoid该方式声明的方法是无法使用catch捕获异常的,所以以下代码的try、catch并没什么卵用。
2024/1/28 9:20:58 74KB .NET AS async
1
网上不是很好找的资料哦,我们自己做的。
这是C程序:#include#defineucharunsignedcharsbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;ucharRRR,flg,KKK;//RRR用于调速控制;
flg=0正转;
flg=1反转;flg=2不转;
KKK为P1的状态寄存ucharloop[2][4]={{0x0c,0x06,0x03,0x09},{0x09,0x03,0x06,0x0c}};voidloop1(void);voidloop2(void);voidstep(void);main(){uchari,j;TMOD=0x10;TL1=0xe0;TH1=0xb1;IE=0;while(1){if(KKK!=P1)//当P1的值发生变化,触发采集信号loop1();if(flg!=2){for(i=0;i<=3;i++){P0=loop[flg][i];for(j=0;j<=RRR;j++) {step();} }}}}voidstep(void)//产生20MS的单位步时间{TF1=0;TR1=1;while(TF1==0);TR1=0;TL1=0xe0;TH1=0xb1;}voidloop1(void)//采集顺时针或逆时针信号,P1.6=1,顺时针,P1.7=1,逆时针{KKK=P1;//暂存P1的状态if(P1_6==1){flg=0;loop2();}elseif(P1_7==1){flg=1;loop2();}elseflg=2;}voidloop2(void){if(P1_0==1)RRR=5;elseif(P1_1==1)RRR=8;elseif(P1_2==1)RRR=11;elseif(P1_3==1)RRR=14;elseif(P1_4==1)RRR=17;elseif(P1_5==1)RRR=20;}
1
intmain(void){u16t;u16len;u16times=0;delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);//串口初始化为115200LED_Init();//LED端口初始化KEY_Init();//初始化与按键连接的硬件接口while(1){if(USART_RX_STA&0x8000;){len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度printf("\r\n您发送的消息为:\r\n\r\n");for(t=0;t<len;t++){USART_SendData(USART1,USART_RX_BUF[t]);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束}printf("\r\n\r\n");//插入换行USART_RX_STA=0;}else{times++;if(times0==0)printf("请输入数据,以回车键结束\n");if(times0==0)LED0=!LED0;//闪烁LED,提示系统正在运行.delay_ms(10);}}}
2023/12/16 20:02:36 1.99MB STM32 UART
1
***********************************************************ccsubroutinecamclyc该子程序的功能是形成修正剑桥模型的塑性应力-应变矩阵cc************************************************************subroutinecamcly(empr,void,sig,cep,mtriax,printer,kappa,pois,1lamda,blade,patm,nelast,ifail,iter,nummat,ielem)implicitreal*8(A-H,O-Z)dimensionsig(4),dfdsig(4),ce(4,4),dmatx(4,4),cep(4,4),dd(4)dimensionvoid(1),empr(nummat,1)real*8matriax,lamda,kappa
2023/11/12 14:37:55 3KB 剑桥
1
用C-Free5软件写的,主函数为Int类型。
在其他软件上可能要改成void,算法方面没有什么问题。
如果要缓冲池满就把生产者M1的数改的比消费者M2的高,要缓冲池空则相反。
2023/11/3 18:45:50 2KB C语言 PV操作 生产者消费者
1
spi主机程序STM32CubeMx生成Hal库DMA发送接收intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration--------------------------------------------------------*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();MX_SPI5_Init();/*USERCODEBEGIN2*/// HAL_UART_Receive_DMA(&huart1,rxBuffer,BUFFER_SIZE); /*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){ HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET); spi_tx[0]=6; spi_tx[1]=7; spi_tx[2]=8; spi_tx[3]=9; memset(spi_rx,0,BUFFER_SIZE); HAL_SPI_TransmitReceive_DMA(&hspi5,spi_tx,spi_rx,BUFFER_SIZE); HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET); HAL_Delay(1000);/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}/*USERCODEEND3*/}
2023/11/1 6:11:26 33.37MB spi DMA 主机 STM32CubeMX
1
关于UCOSII实时操作系统第一讲初识uCOSII41、uCOSII单任务实验:42、uCOSII多任务实验:63、任务状态之间的转换:94、空闲任务和统计任务简介:95、任务的三要件:9程序代码、私有堆栈、任务控制块96、任务控制块TCB(P80)97、创建任务98、任务的栈空间109、栈的增长方向:10第二讲调度运行机制111、任务挂起和恢复112、任务挂起、恢复的状态转换133、时钟节拍ISR154、时钟节拍函数OSTimtick()165、延时系统调用16第三讲任务管理uCOSII171、任务删除172、任务请求删除实验193、在源码中增加打印信息一般步骤244、OSTaskDelReq()函数理解流程图25第四讲互斥性信号量管理261、优先级反转262、信号量SEM使用263、互斥信号量Mutux使用294、关于信号量程序分析325、关于互斥信号量分析326、OSMutexPend()函数流程图337、OSMutexPost()函数流程图33第五讲消息邮箱341、基本概念342、对于OSMboxPend()理解343、对于OSMboxPost()理解344、消息邮箱管理一般程序355、使用OSMboxQuery()386、OSMboxPend()函数Timeout等待超时程序387、OSMboxPost()函数邮箱状态为FUll程序408、关于OSTimeTickHook(void)使用41第六讲信号量集431、信号量集案例432、OSFlagPend()源码463、OSFlagPost()源码51第七讲动态内存541、内存管理基本概念542、内存管理基本概念543、内存管理案例544、案例分析695、教学案例:71
2023/10/25 17:58:17 1.46MB UCOSII
1
共 57 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡