- 浏览: 375808 次
- 性别:
- 来自: 苏州
-
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
参考资料
http://download.csdn.net/download/BlueMap/2518291
http://www.cppblog.com/sandy/archive/2008/08/18/59260.html
http://www.codeproject.com/Articles/108529/LeakDiag-An-Effective-Memory-Leak-Analysis-Tool
写一个定时抓log的AP:LeakDiagAutoLog.exe
LeakDiag使用手记
1.在IDE工程选项里面配置Release版本也生成调试信息,发布时,将pdb文件和exe文件一起发布。
2.程序运行后,打开LeakDiag,设置Symbol path
3.定期Log下目标进程的内存分配情况,通过LDGraph打印分配增长情况,来发现内存泄漏
优点:同hookapi方法,非侵入式修改,无需做任何代码改动。跟踪全面。可视化分析堆栈一览无余!
缺点:对性能有影响,hook分配加锁,遍历堆栈。但是不会占用目标进程的自身内存。
安装好,默认是在c:\leakdiag
然后写一个测试程序来测试
在LeakDiag中选择aaa.exe
然后选择Windows Heap Allocator来跟踪heap的使用,按start开始,等一会按log,然后再stop
会在c:\leakdiag\Logs下面生成一个log
关键的部分是
其中numallocs是分配的次数,size是每次分配的大小,frame则是leak的时候的call stack
这里的stack只显示了binary,是因为symbol没有配好
把对应的pdb文件路径加到[Tools]-[Option]-Symbol search path,就能得到
由test.cpp line 8引起的memory leak.
http://download.csdn.net/download/BlueMap/2518291
http://www.cppblog.com/sandy/archive/2008/08/18/59260.html
http://www.codeproject.com/Articles/108529/LeakDiag-An-Effective-Memory-Leak-Analysis-Tool
写一个定时抓log的AP:LeakDiagAutoLog.exe
BOOL CLeakDiagAutoLogDlg::DoAutoLogging() { CString strData; m_pMsgEdit->GetWindowText(strData); HWND m_pHwnd = ::FindWindow(NULL, _T("LeakDiag")); if (m_pHwnd != NULL) { HWND m_pHwnLogBtnCtrl = ::FindWindowEx(m_pHwnd, NULL, _T("Button"), _T("Log")); if (m_pHwnLogBtnCtrl != NULL) { long id = ::GetDlgCtrlID(m_pHwnLogBtnCtrl); ::PostMessage(m_pHwnd, WM_COMMAND, MAKELONG(id, BN_CLICKED), NULL); } else { strData += _T("m_pHwnLogBtnCtrl is NULL\r\n"); m_pMsgEdit->SetWindowText(strData); return FALSE; } } else { strData += _T("m_pHwnd is NULL!\r\n"); m_pMsgEdit->SetWindowText(strData); return FALSE; } return TRUE; // HWND m_pHwnStartControl = ::FindWindowEx(m_pHwnd, NULL, _T("Button"), _T("Start")); // ASSERT(m_pHwnStartControl != NULL); // long id = ::GetDlgCtrlID(m_pHwnStartControl); // ::PostMessage(m_pHwnd, WM_COMMAND, MAKELONG(id,BN_CLICKED), NULL); } void CLeakDiagAutoLogDlg::OnBnClickedRunBtn() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (0 == m_dwTimeSpan) { m_dwTimeSpan =1; } CEdit* pEdit = static_cast<CEdit*>(GetDlgItem(IDC_RUN_BTN)); if (!m_bTimer) { SetTimer(1, UINT(m_dwTimeSpan*1000), NULL); m_bTimer = TRUE; pEdit->SetWindowText(_T("Stop")); } else { KillTimer(1); m_bTimer = FALSE; pEdit->SetWindowText(_T("Start")); } UpdateData(FALSE); } void CLeakDiagAutoLogDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: Add your message handler code here and/or call default CTime cTime = CTime::GetCurrentTime(); CString strTime = cTime.Format("[%Y-%m-%d %H:%M:%S] ");//display YYYY:MM:DD HH:MM:SS switch (nIDEvent) { case 1: { if (DoAutoLogging()) { CString strData; CString strTemp; strTemp.Format("[RUN = %ld] DoAutoLogging", ++m_dwTotalRun); m_pMsgEdit->GetWindowText(strData); strData += strTime; strData += strTemp; strData += "\r\n"; m_pMsgEdit->SetWindowText(strData); } break; } case 2: default: { break; } } CDialog::OnTimer(nIDEvent); }
LeakDiag使用手记
1.在IDE工程选项里面配置Release版本也生成调试信息,发布时,将pdb文件和exe文件一起发布。

2.程序运行后,打开LeakDiag,设置Symbol path

3.定期Log下目标进程的内存分配情况,通过LDGraph打印分配增长情况,来发现内存泄漏

优点:同hookapi方法,非侵入式修改,无需做任何代码改动。跟踪全面。可视化分析堆栈一览无余!
缺点:对性能有影响,hook分配加锁,遍历堆栈。但是不会占用目标进程的自身内存。
安装好,默认是在c:\leakdiag

然后写一个测试程序来测试
#include <stdio.h> #include <windows.h> int main() { while(1) { char *c = new char[10]; printf("%s",c); Sleep(1000); } return 0; }
在LeakDiag中选择aaa.exe
然后选择Windows Heap Allocator来跟踪heap的使用,按start开始,等一会按log,然后再stop
会在c:\leakdiag\Logs下面生成一个log
关键的部分是
<LEAKS ver="1.25.28.2201"> <STACK numallocs="05" size="048" totalsize="0240"> <STACKSTATS> <SIZESTAT size="048" numallocs="05"/> <HEAPSTAT handle="340000" numallocs="05"/> </STACKSTATS> <FRAME num="0" dll="aaa.exe" function="" filename="" line="" addr="0x407a72" offset="0x00007A72" /> <FRAME num="1" dll="aaa.exe" function="" filename="" line="" addr="0x402ff2" offset="0x00002FF2" /> <FRAME num="2" dll="aaa.exe" function="" filename="" line="" addr="0x402df9" offset="0x00002DF9" /> <FRAME num="3" dll="aaa.exe" function="" filename="" line="" addr="0x402dd6" offset="0x00002DD6" /> <FRAME num="4" dll="aaa.exe" function="" filename="" line="" addr="0x40112f" offset="0x0000112F" /> <FRAME num="5" dll="aaa.exe" function="" filename="" line="" addr="0x401038" offset="0x00001038" /> <FRAME num="6" dll="aaa.exe" function="" filename="" line="" addr="0x401269" offset="0x00001269" /> <FRAME num="7" dll="KERNEL32.dll" function ="GetSortTablesFileInfo" offset="0xC" filename="" line="" addr="0x7C5989D5" /> <STACKID>00524008</STACKID> </STACK> </LEAKS>
其中numallocs是分配的次数,size是每次分配的大小,frame则是leak的时候的call stack
这里的stack只显示了binary,是因为symbol没有配好
把对应的pdb文件路径加到[Tools]-[Option]-Symbol search path,就能得到
<LEAKS ver="1.25.28.2201"> <STACK numallocs="06" size="048" totalsize="0288"> <STACKSTATS> <SIZESTAT size="048" numallocs="06"/> <HEAPSTAT handle="340000" numallocs="06"/> </STACKSTATS> <FRAME num="0" dll="aaa.exe" function ="_heap_alloc_base" offset="0xC2" filename="malloc.c" line="200" addr="0x407A72" /> <FRAME num="1" dll="aaa.exe" function ="_heap_alloc_dbg" offset="0x1A2" filename="dbgheap.c" line="378" addr="0x402FF2" /> <FRAME num="2" dll="aaa.exe" function ="_nh_malloc_dbg" offset="0x19" filename="dbgheap.c" line="248" addr="0x402DF9" /> <FRAME num="3" dll="aaa.exe" function ="_nh_malloc" offset="0x16" filename="dbgheap.c" line="197" addr="0x402DD6" /> <FRAME num="4" dll="aaa.exe" function ="operator new" offset="0xF" filename="new.cpp" line="24" addr="0x40112F" /> <FRAME num="5" dll="aaa.exe" function ="main" offset="0x28" filename="D:\Test\aaa\test.cpp" line="8" addr="0x401038" /> <FRAME num="6" dll="aaa.exe" function ="mainCRTStartup" offset="0xE9" filename="crt0.c" line="206" addr="0x401269" /> <STACKID>00524008</STACKID> </STACK> </LEAKS>
由test.cpp line 8引起的memory leak.
- LeakDiag内存泄漏检测工具leakdiag和配套图形化查看工具LDGrapher.zip (1.5 MB)
- 下载次数: 3
- How_To_Use_LeakDiag___LDGrapher.zip (655.8 KB)
- 下载次数: 1
- LeakDiagAutoLog.zip (847.6 KB)
- 下载次数: 1
- LeakDiagAutoLog_SRC.zip (915.5 KB)
- 下载次数: 0
发表评论
-
FreeRTOS
2022-03-05 16:31 259Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 423https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1354https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 489https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 587// this function create a bmp ... -
[轉] android默认debug.keystore的密码
2017-12-12 11:14 1078http://blog.csdn.net/leehong200 ... -
Android NDK搭建環境
2017-11-27 13:25 605https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5948583相关资料,整理中... -
Java反编译工具 - Java Decompiler
2017-06-21 20:14 495http://jd.benow.ca/ JD-GUI is ... -
JAVA环境变量配置
2017-06-19 13:56 375参考Link http://www.cnblogs.com/x ... -
Java高级应用之JNI
2017-06-19 09:00 614参考link http://www.cnblogs.com/l ... -
Windows7上使用VMWare搭建iPhone开发环境
2017-05-17 08:49 470Windows7上使用VMWare搭建iPhone开发环境 h ... -
C++实现ping功能
2017-04-18 11:21 2192基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9221 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1606OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1893ERROR_SUCCESS 0 (0x0) T ... -
WinCE 内存检测
2016-09-30 16:30 660Wince内存泄露检测工具Application Verifi ... -
开源Windows驱动程序框架
2016-09-17 21:35 885转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1938转自 http://blog.csdn.net/slixinx ...
相关推荐
DeepSeek行业应用实践报告-智灵动力【PPT全】
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于Android和TensorFlow Lite完成移动端机器学习相关应用的实现,包括使用已训练模型的机器学习应用和自主模型训练两部分。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
这是一个基于 PyQt5 和 TensorFlow 的多数字手写体识别程序,支持同时识别图片中的多个手写数字。以下是该文件的基本说明: 主窗口:包含加载图片、识别、清除按钮,以及图片显示区域和结果展示区域。 图片显示:支持显示原始图片和处理后的图片。 分割结果显示:显示分割出的每个数字图片。 结果展示:显示所有识别结果和置信度。
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
在云服务器上搭建MQTT服务器(超详细,一步到位)
资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
参考项目,评分9.8分
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于FX3U PLC控制多种变频器的RTU通信系统:硬件配置、程序编写、接线及参数说明,基于FX3U PLC与RTU通信技术,实现对西门子V20、台达VFD-M和三菱E700变频器的独立控制:硬件配置与程序详解,fx3u和西门子v20 台达vfd-m 三菱E700 rtu所需硬件:FX3U PLC,FX3U-485BD通信板,变频器。 功能:使用fx3u-485bd板,rtu通信控制西门子v20 台达VFD-M 三菱E700三种变频器正反转,停止,频率设定,加减速,以及对频率,电压,电流的读取,有运行指示,效果可以看视频,反应及时,运行可靠,三种变频器程序是单个的,非三台一起控制。 的内容包括程序,接线,参数说明 ,核心关键词: fx3u-485bd; 西门子v20; 台达VFD-M; 三菱E700; 通信控制; 正反转; 停止; 频率设定; 加减速; 读取; 运行指示; 视频; 程序; 接线; 参数说明,FX3U PLC控制多种变频器程序:程序、接线与参数说明
软件开发综合项目——辛德瑞拉婚纱礼服定制网站,使用SSM框架和Maven管理工具,开发环境为Eclipse Jee Photon,数据库使用MySQL.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
惠普436/437更换传输卷
erlang安装包,rabbmit安装环境
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
IDC报告 -中小型企业如何利用技术实现关键业务目标 数字化转型的后续步骤
主要介绍如何用HAL_SPI_TransmitReceive()函数实现对W25Q128 Flash存储器ID的读取。先介绍SPI是一种高速且简单的同步串行接口技术,由四根线((MOSI、MISO、SCLK和SS/CS))组成。接着介绍Flash ,它是串行闪存芯片,能提供更大存储容量。还提到STM32 HAL库简化了SPI编程,以正点原子精英V2开发板为例,给出开发环境及函数原型和参数。最后展示读取ID的代码示例,通过发送命令、接收数据并判断状态来获取ID。