- 博客(63)
- 收藏
- 关注
原创 基于mcu固件反汇编逆向入门示例-stm32c8t6平台
机缘巧合之下,有使用固件反汇编的经历,所以写下此文用作学习笔记。逆向分析相比于正向开发难度不是一个水平的,市场上有一些人专门从事逆向开发的工作,而且逆向开发需要懂汇编,不然逆向出来都是汇编代码,看不懂就没法还原代码了。逆向的人懂正向开发,正向开发的人不一定懂逆向开发,只有产品的价值性很高时才可能进行逆向开发,不然没必要逆向。毕竟逆向开发可能连固件都获取不到,main函数也找不到在哪,更别谈函数内的各种调用关系了。笔者在逆向方面也只是小白,只能做到抛砖引玉。更多深层次的东西还需要静下心来研究。!
2024-07-16 18:08:27
1818
原创 libmodbus开发库介绍
作为一个开源项目,libmodbus库还处于开发测试阶段,代码量还不十分庞大,文档和注释也不够全面,通过对libmodbus源代码的阅读过程,一方面可以进一步理解Modbus协议,同时也可以学习一个好的开源项目的代码组织及开发过程。③ modbus.c: 核心文件,实现Modbus协议层,定义共通的Modbus消息发送和接收函数各功。⑦ modbus-tcp.c: 通信层实现,TCP模式下相关的函数定义,主要包括TCP/IP网络的设置。modbus-tcp-private.h: TCP模式的私有定义。
2024-05-22 06:30:09
701
原创 经验分享智能产品从0到1全流程
分享一个智能产品从0到1的整个生命周期中需要经历哪些阶段,我这里以开发一个mini补光灯为例,深入探索各个阶段可能涉及的具体活动和考虑事项
2024-05-15 15:06:33
888
原创 经验分享打开keil工程下载按钮是灰色的解决办法
工程中有使用.lib的文件库,而且是一个私有的库,类似这种祖传的工程,一般是能用则用,不能用则弃之不用。选择了之后重新编译一下,可以看到load按钮正常,不再是灰色的,可以可以直接使用。打开一个工程发现download的按钮是灰色的,这种是怎么回事呢?在网络上找了一圈,找到类似的解决方案,解决方式如下:找到对应的配置。
2024-05-13 15:47:52
2240
原创 Modbus通讯协议初学
顾名思义,它是一个bus,即总线协议。比如串口协议、IIC协议、SPI都是通讯协议。你接触到这种协议,相信你所处的行业是工业方面或者你的产品用于工业。
2024-05-12 16:29:53
702
原创 基于stm32的spi从机实验HAL库编程
在微控制器的世界中,串行外设接口(SPI)是一种广泛使用的接口,它允许设备之间进行快速通信。在这篇文章中,我将介绍如何使用STM32的硬件抽象层(HAL)库来编程一个SPI从机。我们将通过一个实验来理解SPI在实际应用中的运作方式,并且深入了解STM32的编程方法。
2024-05-09 18:14:28
2281
1
原创 [MDK] 介绍STM32使用C和C++混合编程的方法
搞单片机编程大多数还是使用MDK编程,自己对MDK这个软件也比较熟悉,在网络寻找资料时,发现有一些大佬会用c++来写单片机程序,很是高大上,于是笔者也想研究一下,于是有了这篇文章,使用stm32的内部flash进行编程,在芯片内部flash的最后一个page上进行存储一些数据。
2024-05-08 17:00:42
3019
原创 基于stm32的USB虚拟U盘+FATFS+W25Q64
本文主要结合自己的编程经验有了这篇文章,能够实现简单的USB模拟U盘的实验。在本次实验中,将使用STM32作为从设备使用USB的MSC类,在W25Q64存储ic上移植FATFS。
2024-05-05 20:02:45
5020
4
原创 基于stm32的USB的CDC类虚拟串口(VCP)简单通讯F429验证
新手学习,在不久之前的F4的实验中,不能成功实现USB模拟串口的通讯实验,于是在网络上寻找了一下资料,结合自己的编程经验有了这篇文章,能够实现简单的USB串口通讯了。
2024-05-01 23:08:45
2303
原创 基于stm32的USB模拟UART的尝试F429
使用usb接口进行接口通讯实验。usb是一个复杂的外设,笔者并没有深入研究,我这里也只是进行简单记录,设计一个实验将USB发来的数据。
2024-04-29 21:49:50
918
原创 基于stm32的UART高效接收DMA+IDLE编程示例
当我们使能 IDLE 中断后,它并不会立刻产生,而是:至少收到 1 个数据后,发现在一个字节的时间里,都没有接收到新数据,才会产生 IDLE 中断。我们使用 DMA 接收数据时,确实可以提高 CPU 的效率,但是“无法预知要接收多少数据”,而我们想尽快处理接收到的数据。可以使用IDLE 中断。这样,UART 接收到一个数据就会触发中断,在中断程序里读取 RDR 得到数据,存入程序的接收 buffer。记录项目学习,学习在项目中进行的UART编程,体验串口的高效接收,设计一个实验,实现串口的接收。
2024-04-21 19:38:55
2350
1
原创 基于STM32G030F6部分芯片烧录程序后无法识别也不运行之救砖笔记
基于STM32G030F6部分芯片烧录程序后无法识别也不运行之救砖笔记
2024-04-11 15:45:49
2428
2
原创 基于keil下的多文件夹打包生成LIB库的操作步骤
在一些情况中,刚踏入新公司接触到新工程时,公司的一些老手不太方面展示源码,会在工程中添加lib的文件,这些打包的lib库文件中,或者是针对性优化的代码,或者是屎山代码,或者是量产打包的代码,或者是基于保密之类的留一手,或者是祖传代码,或者是别的什么缘由,总之在给定的工程中是能用的,就是看不到对应的源码,这个lib库怎么来的,今天就以一个工程进行展示。
2024-04-02 20:28:19
1918
1
原创 基于单片机bootloader的随笔
一直觉得做产品开发需要得考虑一些安全策略,一般的设计固件时会进行bootloader设计,而设计一个高效且安全的定制Bootloader需要考虑以下几个关键因素:首先确保Bootloader自身的安全性,例如通过以下措施:加密:使用加密算法确保固件在传输和烧写过程中的安全性。Bootloader需要能够解密接收到的固件。数字签名:通过签名验证确保烧录的固件是经过授权的。Bootloader应验证固件签名的合法性后才能烧录。锁定Bootloader:在生产烧录完成后,可以锁定Bootloader以防止未授权的
2024-03-29 13:52:08
824
转载 解决Error: Flash Download failed - Target DLL has been cancelled,由于CUBEMX配置出现的问题
(3)系统存储器: 系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST厂家在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。(2)SRAM: 芯片内置的RAM区, 就是内存,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
2024-03-26 15:21:58
13262
1
原创 关于使用jlink弹窗出现The connected J-Link is defective,Proper operation cannot be guaranteed......
问题出现的原因是keil5的J_Link驱动是最新版本的。也就是和keil的驱动不配套。大家的J_Link大多数都是某宝买的,基本都是山寨货,所以更新J_Link固件到最新版本据网上说大概率会废掉你的J_Link,所以我们用降低keil的J_Link驱动版本来解决这个问题。双击运行,如果之前成功替换了驱动文件,会在对话框中显示一个新的DLL驱动文件,这个文件的版本就是我们替换到keil的驱动文件版本。J_Link在使用之前都安装过驱动,我们只需要用这个驱动文件夹下的文件替换keil文件夹下的文件就行了。
2024-03-23 14:49:02
4321
原创 FreeRTOS学习第10篇--队列使用示例
本文目标:FreeRTOS学习第10篇–队列使用示例按照本文的描述,可以进行简单的使用队列。本文实验条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5。
2024-03-14 21:47:08
1075
1
原创 Nwatch在stm32上的移植
NWatch是一个很漂亮的、基于STM32的开源手表项目,我这次学习是为了配合使用FreeRTOS而进行学习的。官方链接为:作者博客:https://blog.zakkemble.net/diy-digital-wristwatch/
2024-03-10 20:09:07
1005
原创 环形缓冲区在stm32上的使用
环形缓冲区是一种数据结构,它允许在缓冲区中存储和检索数据,而不需要进行复杂的索引管理。这在嵌入式系统中非常有用,尤其是在处理串行通信时,如使用 USART。以下是一个简单的指南,可以帮助初学者开始使用环形缓冲区首先,您需要定义环形缓冲区的数据结构和初始化函数。1024/* 环形缓冲区的大小 *//* 缓冲区空间 *//* 写地址 *//* 读地址 */
2024-03-10 19:59:43
749
原创 FreeRTOS学习第8篇--同步和互斥操作引子
下载代码到板子上,可以看到计算的结果在第一行中进行显示,在第二行那里显示了计算这么多个数所需要的时间,打印任务PrintTask在计算任务CalcTask没计算完时也抢占cpu资源,导致计算会有些慢,这里我根据计算的结果,简单粗暴的加了相应的延迟vTaskDelay(3000);当然这只是一种例子,有一定的缺陷,当作学习使用。在本次实验中,设计两个两个任务,任务PrintTask负责打印一些信息,任务CalcTask进行计算,当计算任务完成计算时,将结果传递给任务PrintTask进行显示。
2024-02-25 19:48:28
498
1
原创 markdown绘制流程图相关代码片段记录
上一个代码示例中,B{“冰箱小不小?”} 这里的描述文字加了引号,是因为其中包含特殊字符(问号),用引号包裹防止出错为节点取名为 A B C 不太合适,如果节点很多时往往容易混淆,不方便后续使用和阅读(编程时命名的重要性)。建议起有意义的名字,除上述带箭头线段 --> 外,还有带箭头虚线线段 -.->、 带箭头加粗线段 ==>、不带箭头线段 —A B C D 这些字符是为节点取的名字,这个名字可以在之后反复利用(在编程里这相当于定义变量)上述 -->是带箭头线段,–>|不小| 是加了描述文字的带箭头线段。
2024-02-17 16:59:31
1107
原创 FreeRTOS学习第7篇--周期性延迟和相对性延迟函数
这个函数适合实现周期性的延时操作,它可以保证任务以固定的频率执行,不受其他因素的干扰。vTaskDelay是相对延时函数,它指定的是从调用该函数后开始计算的延时时间,单位是系统节拍时钟周期。这个函数适合需要固定时间间隔的延时操作,但是它可能受到其他任务和中断的影响,导致下一次执行的时间不准确。下载代码到板子上,使用vTaskDelay的相对延迟函数时,我显示的时间差始终是稳定的,我使用vTaskDelayUntil的绝对延迟时,我显示的时间差就有部分变化。这个两个的函数使用举例可以看我下面的代码片段。
2024-01-17 23:23:46
1089
原创 FreeRTOS学习第6篇–任务状态挂起恢复删除等操作
本文目标:学习与使用FreeRTOS中的几项操作,有挂起恢复删除等操作。按照本文的描述,应该可以跑通实验并举一反三。本文实验条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5。
2024-01-07 21:29:26
576
原创 FreeRTOS学习第5篇--任务优先级
下载代码到板子上,一开始时,这三个任务的优先级都是osPriorityNormal级别的,都在按部就班的运行各自的功能函数,但是当我在IRReceiver_Task任务中按下相应的按键时,把对应的优先级任务提高之后,这三个任务中就只有一个高优先级的任务在执行了,直接霸占了cpu资源,让另两个任务都没法得到执行,连IRReceiver_Task后续也不执行了。不过有时也记不住,直接看封装层的信息比较好,在文件cmsis_os2.h中定义了相关的优先级,看英文意思就是越往后优先级就越高的。
2023-12-26 21:54:15
2246
原创 FreeRTOS学习第4篇--任务使用参数
使用这个g_LCDCanUse全局变量,来进行简单的保护,因为OLED屏在刷新的屏幕的时候会用到i2c,等一个任务使用完了,另一个任务接着使用,这是简单粗暴的使用,仅供学习参考。我这里使用一个TaskPrintInfo结构体来传入一个坐标值和一个字符串,我的这个PrintTask中,最深的栈只有96字节,我这里创建任务时使用128的任务栈,也就是512字节,绰绰有余,不必但是死机等问题。创建3个优先级相同的PrintTask任务,在任务中,使用OLED显示任务的执行次数。
2023-12-10 14:36:52
915
转载 基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)
VOFA+是一款直观、灵活、强大的插件驱动高自由度的上位机,在与电气打交道的领域里,如自动化、嵌入式、物联网、机器人等,都能看到VOFA+的身影。同时滤波算法各式各样,原理也各不相同,希望读者朋友在实际的工程项目中,不要盲目的追求各种牛逼的滤波算法,其实适合该工程的滤波就是好滤波。(1)测量范围:测量范围对于 ADC 来说就好比尺子的量程,ADC 测量范围决定了你外接的设备其信号输出电压范围,不能超过 ADC 的测量范围(比如,STM32系列的 ADC 正常就不能超过3.3V)。
2023-12-04 17:50:49
3826
转载 STM32 ADC采样不准怎么办
首先,找到芯片的datasheet,是所使用的那款芯片的数据手册,因为同一系列的不同芯片,可能存在区别。VREFINT_DATA:ADC读取VREFINT(内部参考电压通道ch17)得到的值,每次采样序列,将ch17一并采集,用来后续的AD值补偿计算。VREFINT_CAL:使用前述的读取语句data1 = VREF_CAL;VREFINT_CAL:芯片出厂时固化在存储器中的。VREFINT_DATA:前述,内部参考电压通道(ch17)读出的值;ADC_DATAx:你需要测量的通道,使用ADC读出;
2023-12-01 15:32:56
1705
原创 关于使用stm32下载不进程序的各种奇葩记录
还有一种情况是,程序中软件忘记配置SWD接口调试了,导致识别不到芯片,那么需要解决办法就需要一点手速了,用镊子或者跳线把STM32的NRST引脚拉低,并一直使STM32处于复位状态,然后单击KEIL的DOWNLOAD按钮,因为这时候MCU一直处于复位,所以当我们DOWNLOAD下载代码时,立刻松手让MCU的NRST引脚拉高,这就可以成功下载了,如果松手太慢则会下载失败!(3)使用4线SWD接口连接,但是之前下载的程序却没有配置SWD接口,没有连接仿真器和MCU的RESET信号就无法再下载;
2023-11-21 18:03:29
1707
转载 通信协议解析神器:函数指针
每增加一个功能,则多编写一个功能函数,除此之外,还需要在协议解析处改动,需要改很多地方,非常的不方便.以下介绍一下利用函数指针,实现回调函数形式解析协议。这两个文件只是这种方法的模板,只要你愿你可以为你的所有模块功能都按照用例那样配置属于每个模块的独有回调群。由于以上代码是用world手撸的(公司外网限制,没办法),如有错误还请留言,如有更好的改良方案,欢迎留言讨论!用户只需要增加协议的cmd、用户函数、将两个参数注册进注册表中进行邦定,当相应的协议到来时即可调用相应的用户函数,极大拓展了程序的可扩展性。
2023-11-18 13:48:14
89
本科毕业设计 基于Haar特征与AdaBoost算法的人脸检测的实现.zip
2024-03-19
本科毕业设计《多智能体博弈兵棋推演理论与验证平台设计》.zip
2024-03-19
毕设项目:基于协同过滤算法的校园跳蚤系统设计与实现.zip
2024-03-19
MATLAB课程设计-基于Retinex理论的图像去雾算法研究.zip
2024-03-19
毕设题目:关于HEVC帧间预测测试AMP模式的快速算法.zip
2024-03-19
毕设仿真项目的绘图程序,包含人工势场法的基本与改进算法,通过 qt 绘制展示结果.zip
2024-03-19
毕业设计源码-基于Spark的Kmeans聚类算法优化.zip
2024-03-19
毕业设计项目,基于深度学习的实时语义分割算法研究,python实现.zip
2024-03-19
毕业设计——基于A star和PSO算法自动布线算法的设计与实现.zip
2024-03-19
毕业设计-人脸跟踪,使用肤色分割或adaboost进行周期性人脸检测,并用camshift算法实现跟踪.zip
2024-03-19
毕业设计:最短路径算法实现,Dijkstra算法,双向Dijkstra算法,CH算法,SILC算法.zip
2024-03-19
毕业设计——jpeg算法优化(基于python实现).zip
2024-03-19
毕业设计:实现了UE4和airsim环境下无人机自主导航和目标跟踪的强化学习算法.zip
2024-03-19
毕业设计:基于遗传算法实现智能组卷的在线考试系统(springboot+VUE,前后端分离).zip
2024-03-19
毕业设计:基于噪声数据集处理的K-means聚类算法实现.zip
2024-03-19
毕业设计:基于图神经网络的异构图表示学习和推荐算法研究.zip
2024-03-19
毕业设计:基于深度网络的垃圾识别与分类算法研究.zip
2024-03-19
毕业设计:基于C++的AP聚类算法设计与实现.zip
2024-03-19
毕业设计:基于OpenCV&外部特征的个体鱼识别算法研究.zip
2024-03-19
毕业设计,一个饭店管理系统,亮点是用余弦相似度算法写了个推荐菜的功能.zip
2024-03-19
stmg0-spi-receive.rar
2024-05-09
USB-MSC-FATFAS.rar
2024-05-05
stm32f429BI-usb-cdc.rar
2024-05-01
stm32f429BI-usb-cdc-bug.rar
2024-04-29
stm32f103c8t6-usart-dma-idle-recevie.rar
2024-04-22
Facility-H5-use-uart-dma-idle.rar
2024-04-21
Facility-H5-use-freertos.rar
2024-04-16
这个是一个stm32f4系列的一个新建工程的demo.rar
2024-03-30
Facility-H5.rar
2024-03-30
毕业设计:蚁群算法实现vrp问题java版本.zip
2024-03-19
嵌入式Liunx应用程序开发笔记-代码.zip
2024-03-19
一种基于属性和图神经网络的推荐算法——本科生毕设.zip
2024-03-19
毕业设计项目:使用辅助文本信息的短文本聚类算法,基于LDA实现,采用非对称alpha参数.zip
2024-03-19
基于协同过滤算法的学习资源个性化推荐系统(硕士毕设).zip
2024-03-19
毕业设计代码,机械臂凯恩方法建模,控制算法.zip
2024-03-19
毕业设计:基于容器的企业服务器初始化部署-程序设计.zip
2024-03-19
毕业设计:基于差分隐私保护技术的协同过滤推荐系统设计与实现.zip
2024-03-19
毕业设计:基于OpenCV的细胞计数算法设计.zip
2024-03-19
关于#学习freertos使用时发生中断卡死#的问题,如何解决?
2023-04-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人