- 博客(15)
- 收藏
- 关注
原创 浅谈FreeRTOS的互斥锁和二值信号量
FreeRTOS中互斥锁和信号量的主要区别在于:互斥锁具有优先级继承机制,适用于任务间共享资源保护;信号量则用于任务同步或任务与中断交互。互斥锁的获取和释放必须由同一任务完成,不建议在中断中使用,因为可能导致中断阻塞。若必须在中断中使用互斥锁,可通过临界区保护(taskENTER_CRITICAL_FROM_ISR/taskEXIT_CRITICAL_FROM_ISR)来防止高优先级中断打断。信号量本质是特殊队列,仅传递消息不传递数据,可在任意位置使用。
2025-08-31 02:23:20
525
原创 STM32 classb库注意点
本文对比了GD32和STM32的IEC60730 ClassB安全库实现方式。GD32采用开源代码需签署保密协议,而STM32提供静态库文件(.a)可直接下载。文章详细介绍了STM32库文件的使用方法,包括添加文件、配置选项及编译注意事项,特别针对H7芯片提供了具体指导。同时分享了RAM检测配置经验,建议backup buffer初始设为32并逐步增大。最后指出该库缺少AD/IO检测功能,需自行实现,并提供了检测思路和错误处理建议。
2025-08-30 16:59:53
331
原创 jlink rtt调试
RTT(Real-Time Terminal)是SEGGER公司推出的嵌入式实时交互终端,能高速传输数据而不影响MCU实时性。它通过内存中的控制块管理数据读写,支持多通道配置(阻塞/非阻塞模式),性能远超传统调试方式(1μs/行)。移植时需将库文件加入工程,通过API实现多终端彩色打印(如SEGGER_RTT_printf)和指令接收(如SEGGER_RTT_GetKey)。注意缓冲区大小需匹配数据量,超长传输需修改配置文件,高频调试可结合Python脚本实现。
2025-08-30 01:23:28
807
原创 GD32串口+DMA,串口发送失败问题总结
通过单步调试,发现,在上一包数据没发送完时,再次给dma长度寄存器赋值,此时的长度寄存器会被置零,若在长度寄存器清零后,进入dma发送完成中断,出中断后,再打开dma通道,则会由于发送长度为零,导致无法继续发送数据,也就无法进入发送完成中断,dma通道将一直无法关闭。后来进行了重复发送的测试,未发现异常。针对此情况,对原来的流程做了如下修改,增加了一个发送完成中断标志位,当当到达任务时间后,检测发送完成标志位被置起,给buffer赋值,然后关闭dma通道,给dma发送长度寄存器赋值,然后再打开dma通道。
2024-09-03 20:21:06
1023
原创 计算机网络系统自学笔记1-计算机网络概述
抛开中间系统,假设主机A向主机B发送数据,首先用户数据在主机A交给应用层,应用层根据网络应用的不同或应用协议的不同,可能会添加部分数据信息(应用层头),这样就构成了这个协议的一个数据包,在OSI参考模型中称为协议数据单元(PDU),协议数据单元经过各网络层级后传输给物理层,物理层不再添加头尾信息,以比特流的形式发送出去。②控制信息主要包括:地址(标识发送端/接收端)、差错检测编码(用于差错检测或纠正,并不是所有协议都需要差错检测控制)、协议控制(实现协议功能的附加信息,如优先级、服务质量和安全控制等)
2023-06-28 00:32:50
228
原创 GD32硬件I2C的热插拔功能实现
另一方面,我们希望如果把设备重新连接好后可以恢复正常运行。这种需求若在使用软件I2C时很容易实现,但在使用硬件I2C时,由于在发生断连的情况时,会某寄存器的个别只读位置位,如GD32,在硬件I2C异常时,会有一个只读的错误位被置位,导致SCL和SDA被强制拉低,拉低后无法通过设置IO电平置位,因此在使用时需要先将I2C去使能等操作使那个只读错误位复位,然后通过写IO的方式拉高SCL和SDA,最后重新配置I2C寄存器即可。硬件I2C的速率更高,通过配置几个寄存器即可,使用较为简单,但不是所有的单片机都支持。
2023-03-11 16:26:22
667
原创 Python脚本接受串口数据并写入文本文档中
最近对产品进行某项压力测试时,需要分析产品打印的串口数据,这就需要将串口数据保存到一个文本文档中供我们分析与查看,这项保存数据到文本文档中的功能一般的串口助手(如sscom)是支持的,但是这类调试助手保存的数据一般不带时间戳,如果出现问题,很难去确认问题出现的时间以及及进一步分析问题原因。比较简单的方案便是使用Python来编写一个测试脚本,帮助我们将接收到的串口数据及时间戳保存到我们要求的文本文档中来。 一、安装pyserial模块 在使用串口前,首先需要安装pyserial串
2023-03-07 23:30:34
582
原创 PID模型优化(系统辨识工具箱及PID tuner)
主要简述了matlab系统辨识工具箱及PID tuner工具的使用,简化了PID调节的过程
2022-03-04 18:19:12
2380
2
原创 算法基础——PID
PID(Proportional Integral Derivative)控制是最早发展起来的控制策略之一,根据系统的误差,利用比例、积分、微分计算出控制量进行控制,以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
2022-03-04 17:59:06
523
原创 数据结构——队列
队列是常用的数据结构之一,是一个允许在一端进行插入操作,而在另一端进行删除操作的线性表。在嵌入式软件中主要应用于异步处理的buffer,例如,在CAN、SPI、UART等接口在中断接收到数据,存放在队列中(入队),而实际的处理解析(出队)将在其他线程或者任务中实现。
2022-03-04 17:49:48
138
原创 stateflow基本操作
背景Stateflow是一种图形化的设计开发工具,是有限状态机的图形实现工具,有人称之为状态流。主要用于simulink中控制和检测逻辑关系的。用户可以在进行simulink仿真时,使用stateflow来实现各个状态的切换,以解决复杂的逻辑问题。利用状态机原理、流图概念和状态转化图,stateflow能够对复杂系统的行为进行清晰、简洁的描述。打开stateflow模型在使用stateflow时,首先需要新建一个stateflow模型,常见的打开stateflow的方式主要有以下两类:命令行
2022-02-22 15:35:21
5163
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅