摘要: IAR for ARM STM32F10X官方固件库: 链接: https://pan.baidu.com/s/1U6vfGqp9IhhkvVuDXcxTtQ 提取码: 9mcx IAR for ARM项目文件 下面是我自己写整理创建的IAR for ARM项目文件 链接: https://pan. 阅读全文
posted @ 2019-05-24 02:59 wadesss 阅读(5389) 评论(0) 推荐(0) 编辑
摘要: STM32简介 STM32系列是由意法半导体公司推出的ARM Cortex M内核单片机,从字面上来看,ST为意法半导体公司的缩写,M是Microcontrollers即单片机的缩写,32代表32位 芯片系列 STM32系列芯片分类 STM32后缀的型号说明 模块准备 STM8S103F3P6 ST 阅读全文
posted @ 2019-05-21 17:58 wadesss 阅读(18182) 评论(0) 推荐(0) 编辑
摘要: 以下为未来的学习大纲,每完成一个目标,我会将标题做成超链接到对应的博文以方便查看,但不保证不会更改大纲的目标,一切以实际开发学习后的心得体会为调整方向。 "一、STM32简介、选型及其目标" 主要介绍STM32,学习和项目实战时用的开发板和工具,最终学习目标等等。 "二、IAR for ARM中ST 阅读全文
posted @ 2019-05-18 05:40 wadesss 阅读(1112) 评论(0) 推荐(0) 编辑
摘要: 介绍 Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。 在Linux生态系统中,Systemd被部署到了大多数的标 阅读全文
posted @ 2017-08-10 21:39 wadesss 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 1. var表示“变量的类型是在编译时决定的”, var让你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型, var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参数类型定义成var2. dynamic表示“变量的类型是在运行时决定的”,动态语言运行时(dynamic language runtime DLR)是.NET Framework 4 Beta 1中的一组新的API,它提供了对c#中dynamic类型的支持, dynamic告诉编译器,根本就别理究竟是啥类型,运行时再推断不迟,dynamic类型并没有跳过类型校验,只是延迟到了运 阅读全文
posted @ 2013-07-18 20:49 wadesss 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 先看代码:#ifdef __DEBUG LPTSTR szBuffer = new TCHAR[128]; wsprintf(szBuffer, _T("Length: %d"), len); OutputDebugString(szBuffer); delete [] szBuffer;#endif __DEBUG当我F5调试时,有时候会报“Windows 已在 xxx.exe 中触发一个断点。其原因可能是堆被损坏...”查了一下,似乎是在使用wsprintf格式化字符串时,szBuffer指针的地址被改变,所以delete [] szBuffer会报错于是我将代码改.. 阅读全文
posted @ 2013-05-13 01:10 wadesss 阅读(1040) 评论(0) 推荐(0) 编辑
摘要: GetCurrentProcessID 得到当前进程的IDOpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPrivileges 修改要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Administrator或是被给予了相应的权限,就可以具有该权限。可是,就算我们用Administrator帐号对一个系统安全进程执行OpenProcess(PROCESS_ALL_ACCESS,FALSE, dwProc 阅读全文
posted @ 2013-04-13 20:53 wadesss 阅读(1770) 评论(0) 推荐(0) 编辑
摘要: 1、简介 INLINE HOOK原理: Inline Hook通过硬编码的方式向内核API的内存空间(通常是开始的一段字节,且一般在第一个call之前,这么做是为了防止堆栈混乱)写入跳转语句,这样,该API只要被调用,程序就会跳转到我们的函数中来,我们在自己写的函数里需要完成3个任务: 1)重新调整当前堆栈。程序流程在刚刚跳转的时候,内核API并没有执行完,而我们的函数需要根据其结果来进行信息过滤,所以我们需要保证内核API能在顺利执行完毕后返回到我们的函数中来,这就要求对当前堆栈做一个调整。 2)执行遗失的指令。我们向内核API地址空间些如跳转指令(jmp xxxxxxxx)时,势必要覆盖原 阅读全文
posted @ 2013-03-18 10:34 wadesss 阅读(1252) 评论(0) 推荐(0) 编辑
摘要: 在使用ClientDataSet控件时,在关联的TDBGrid控件插入不合法的字段,再执行ClientDataSet的ApplyUpdates方法,数据插入失败但在客户端没有报异常,try...except...end 无法捕捉到。在网上找到了几种解决方法第一种是在中间服务层的DataSetProvider控件中加入OnUpdateError事件在事件中加入如下代码:procedure TSvrProb.DataSetProvider1UpdateError(Sender: TObject; DataSet: TCustomClientDataSet; E: EUpdateError; Up. 阅读全文
posted @ 2013-03-15 17:33 wadesss 阅读(695) 评论(0) 推荐(0) 编辑
摘要: ******************************** 编 译 错 误 信 息 ********************************; not allowed before ELSE ElSE前不允许有“;”<clause> clause not allowed in OLE automation section 在OLE自动区段不允许“<clause>”子句<name> is not a type identifier <name>不是类型标识符<name> not previously declared as 阅读全文
posted @ 2013-03-14 20:22 wadesss 阅读(622) 评论(0) 推荐(0) 编辑