- 博客(5)
- 收藏
- 关注
原创 STM32裸机开发中,使用USART+DMA+RingBuffer实现非阻塞发送
对于熟悉DMA的人,可以采用DMA进行发送,可以极大的提升发送效率。当然,DMA发送时,也要确保发送新消息时,上一条消息已经发送完毕。如果串口速率较小,发送量过大,同样为了等待上一条消息发送完毕而等待的延时也会比较长,因此,可以将需要发送的消息放入一块缓冲区,然后在任务中轮询DMA是否空闲,如果空闲,则将缓冲区中的数据放入DMA中发送;在printf函数中,将转换好格式的字符串塞入环形队列,即可去执行其他任务。这种发送方式耗时较长,对于有的项目中有大量的调试信息输出时,会有较长时间卡在发送过程中。
2025-02-25 11:34:48
166
原创 STM32F7/H7系列PHY芯片LINK UP,但是无法通信的一种情况
在STM32F7/H7系列编写PHY芯片驱动,读取寄存器得知PHY已经处于LINK UP状态,确认网口电路没问题的情况下,电脑ping不通单片机,调试模式下观察DMARxDscrTab内容没有变化。
2024-09-26 09:48:42
532
原创 基于STM32裸机的简单任务调度程序
通常在STM32上面进行裸机开发时,有的需要进行延时操作,常用的办法是使用systick计时并使CPU空转。当延时时间达到毫秒级的时候,这种方式会大幅度导致程序运行效率下降。本文采用一种仿照OSAL的任务队列的方法,当一个任务延时的时候,不耽误其他任务的运行。通常裸机程序没有内存管理,文章中的程序没有使用malloc函数。
2024-04-03 11:22:50
1158
2
原创 基于安培-时间积分算法的电池管理系统(BMS)简单方案
BMS,全称为Battery Management System,即电池管理系统,是针对各类电池(如锂离子电池、铅酸电池等)的智能化管理装置。BMS的主要功能包括电池状态监测、电池性能均衡、故障诊断与保护、电量计算与预测等多个方面。
2024-03-30 16:31:13
2563
1
原创 zstack 3.0打开睡眠模式
首先,只有在终端设备上才能使用睡眠模式。进入预编译选项,把xPOWER_SAVING的x去掉。在mainhanshu
2018-06-06 13:24:08
1001
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人