- 博客(16)
- 收藏
- 关注
原创 嵌入式开发技巧:舍弃标志位,用宏定义函数实现程序单次运行
如果复杂一点的程序想实现单次执行,用标志位的话就会让程序就会变得非常不美观,可读性也变得更差了,非常的不优雅。那如果我使用宏定义函数实现单次执行
2025-10-20 20:52:13
201
原创 BMS电池管理系统学习笔记_SOC算法
什么是SOC?SOC其实就是电池的电量。求SOC值就是求电池现在还剩百分之几的电量。例如 100% 表示满电,0% 表示电量耗尽。
2025-10-19 21:26:47
1195
原创 FreeRTOS与队列集(九)
队列集的意义就是防止你用太多队列导致程序很看起来很乱,所以OS系统加了个队列集的功能,能更加好管理队列。在队列集中,创建完队列和队列集之后,还需将队列添加到队列集之中,这是值得注意的。由于湿度采集、CO2浓度采集任务和温度任务的逻辑完全一致,这里我只放,两个例程的温度任务供大家比较。对比两个代码,内容几乎一模一样,只是xQueueSend函数的第一个参数的句柄变了。内容简单,和队列的内容是差不多的,话不多说,直接看一篇例程就学会了。接下来写一段队列集的例程,同时和上面文章的队列例程进行对比。
2025-10-08 08:59:17
339
原创 FreeRTOS与软件定时器(七)
软件定时器需要用到回调函数,本质上软件定时器回调函数也是一个系统性任务,他和Task任务稍有不同,软件定时器更注重周期性的运行。与Task任务相比,软件定时器比Task任务更适合传感器周期性采集数据。
2025-10-07 18:14:04
449
原创 FreeRTOS_API模块综合应用篇(八)
接下来,我将把这几大核心的API知识模块通过一个全面的、典型的应用场景,把他们全部串联联系起来,让大家能在自己的项目中更加协调熟练的使用这些API函数模块。
2025-10-07 18:13:52
1303
原创 FreeRTOS与事件标志组(六)
事件标志组也是:本质上就是用一个uint32_t的变量,将事件标志以位的形式储存在变量里面,进行判断和读取写入。由于内容比较简单,直接上例程,看一遍例程就能懂了
2025-10-06 12:11:59
403
原创 FreeRTOS与互斥锁(五)
互斥锁就是互斥信号量,二者本质相同。互斥信号量是一种特殊的二值信号量,用于实现线程间的互斥访问。在FreeRTOS等系统中,互斥锁的实现就是基于互斥信号量的机制。更多关于信号量的详细内容可参考相关技术博客。
2025-10-06 12:09:14
189
原创 嵌入式寄存器开发技巧:常见字节操作、掩码操作
(如英文有多少个字母、中文有多少个汉字)。如某个编码标准下,一个英文字母占用多少字节,一个汉字占用多少字节。ASCII编码下,1个英文字母占 1个字节(8位);GB2312编码下,1个汉字占2个字节(16位);UTF-8编码下,1个汉字占3个字节(24位);
2025-09-16 18:49:49
871
原创 BMS电池管理系统学习笔记_STM32通信BQ芯片
该项目以朱有鹏老师的BMS项目为基础进行学习。以TI公司的BQ7692003PWR电源管理芯片为中心进行的BMS电池管理系统项目。本项目的笔记以梳理框架和总结一些模块的重要内容为主,因此笔者对部分内容不会进行详细的介绍。
2025-09-10 15:21:40
1361
原创 FreeRTOS与硬件定时器中断(二)
/接收到二值信号量为1,有资源,函数运行完成,开始运行下一条函数,并且1->0。/*没有资源时,即二值信号量为零,xSemaphoreTake()函数阻塞,portMAX_DELAY表示一直阻塞,直到有资源运行完成*//* 创建二值信号量,初始值为0,放在 创建主任务函数之前*/void Task1(void *pvParams)//任务1 /*如果按键按下,就释放二值信号量*/3.创建二值信号量xTimerSemaphore = xSemaphoreCreateBinary();
2025-07-21 15:22:08
872
原创 FreeRTOS与延时函数(一)
TIM6/TIM7 是 "Basic Timer",仅存在于 High-density(如 STM32F103xC/D/E)或 XL-density 系列。STM32F103C8T6 属于 "Medium-density" 系列(数据手册标注为。CubeMX 的型号支持基于官方数据手册,因此不会显示 TIM6/TIM7。两个任务同时运行,都会延时1000ms。
2025-07-21 14:25:22
488
原创 解决了Keil编译非常慢的问题,从编译11分钟变成了8秒钟
摘要: 作者遇到Keil编译RTOS+LVGL工程耗时11分钟的问题,排查过程一波三折:先后排除Keil配置、重装软件、微软电脑管家干扰等因素,甚至尝试改用VSCode(仍慢30秒)。最终通过禁用非必要系统服务(需隐藏Microsoft服务)解决,编译时间缩短至8秒。推测是后台软件冲突导致,虽未确定具体原因,但系统优化后两月未复发。副作用仅为部分软件(如Steam壁纸)开机自启失效,需手动恢复。提醒操作时谨慎勾选选项,避免基础功能丢失。
2025-06-15 16:33:16
14757
54
原创 Keil5环境快速搭建,基于江协,学习笔记
2.新建一个文件夹“Keil5”,用于放Keil5的系统文件。8.更改为如下的MDK路径(和C51的路径相同)7.安装STM32环境,下载Keil5 MDK。复制CID放到注册机里面点击Generate。6.破解成功,Keil5 C51环境安装完成。安装C51环境,再安装STM32环境。4.管理员身份打开Keil5。1.keil5 C51下载。至此,Keil环境安装完成。5.对Keil5进行破解。
2025-06-14 15:51:41
517
原创 嘉立创EDA PCB布线要求笔记
1.采用差分对等距等长布线 2.晶振电路外侧打一圈过孔(隔离信号) 3.放置禁止布线层(即阻止顶层底层这个区域铺铜)4.要远离板框边缘和安装孔 5.布线添加泪滴。快捷键TAB:设置布线的线宽,一般默认10mil(0.254mm)线宽。图7:违法DRC,无法放置导线。快捷键shift+x:交叉选择。快捷键q:更换mil和mm单位。图3:走线应该在135度左右。图2:电容摆放位置的要求。图1:PCB布线要求。图6:电源线加宽规则。
2025-06-14 14:53:05
2172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅