自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (10)
  • 收藏
  • 关注

原创 OpenHarmony Liteos-m 内核内存管理机制探究

OpenHarmony Liteos-m内核采用优化后的TLSF内存管理算法,分为静态和动态内存管理。静态内存管理基于预定义大小的内存块,适合固定需求场景;动态管理则采用高效的分级空闲链表策略,将内存块按大小分为223个区间,通过位图标记快速定位合适空闲块。算法支持内存分割与合并,减少碎片,并具备多段非连续内存整合能力。初始化时创建包含池头、空闲节点和尾节点的内存池,申请时优先匹配最接近需求的空闲块。该设计在性能与碎片率间取得平衡,为嵌入式系统提供了高效的内存管理方案。

2025-07-04 13:38:41 839

原创 探究STM32L4在不同时钟配置下的功耗表现

STM32L4系列MCU通过动态电压/频率调节和多种低功耗模式实现了出色的能效表现。测试显示,在80MHz Range1模式下运行电流达11.8mA,而降至4MHz Range2模式时仅需0.59mA。该芯片提供7种低功耗模式,包含FlexPowerControl等技术,支持1.71V低电压工作,特别适合电池供电场景。测试采用OpenHarmony系统,验证了降低频率可显著节省功耗,Range2模式比Range1效率提升15%,专用低功耗运行模式效率更高。开发低功耗应用时,合理选择工作频率和电压范围是优化能

2025-06-30 18:41:42 1007

原创 OpenHarmony Liteos-m 内核低功耗调试

要启用功耗管理功能,需要使能对应的宏,一般定义在target_config.h中。除此之外,还有两个宏跟功耗管理模块息息相关。#else#endif我对这个宏的理解:源码中注释的解释是:在空闲任务中使能内核功耗管理组件。但是其实无论这个宏使能与否,OsPmNormalSleep这个接口都是在空闲任务中调用。不一样的是,这个宏使能后,将会调用完整的功耗管理机制(后面会说)。

2025-06-04 18:59:04 998

原创 STM32中的LPTIM使用说明

这个函数实现的功能是,在超时时间到达前,如果发生触发事件(例程中是PB6引脚触发),那么定时器清零重新计数,如果没有,则继续计数直到Period周期(其实就是ARR寄存器值)。计数寄存器的值(CNT)从0开始计数,当CNT的值等于CMP时,可触发一些操作(波形输出或者中断,取决于你的配置),此时CNT继续计数,当CNT的值等于ARR时,触发一些操作(波形输出或者中断,取决于你的配置)并且CNT归零。代码不多,也不复杂,由于手上的板子和官方开发板定义不同,所以自己用CubeMX生成了代码。

2025-05-14 18:48:31 648

原创 printf中的%*.*s使用问题

今天在项目中看到同事在printf中使用了%.*s,后面跟了两个参数。原以为是bug,没想到查了资料确实有这种用法。这种后面跟3个参数,第一个指定总宽度,第二个指定字符串输出长度,第三个是字符串指针。这种类似%5s这种用法,可以指定输出宽度,但是实测有问题,应该是跟我使用环境有关。指定字符串的输出长度。后面跟两个参数,第一个是字符串输出长度,第二个是字符串指针。以下是实测,测试环境MDK5 + STM32。

2025-04-15 16:26:34 260

原创 28BYJ-48步进电机的步距角为什么是5.625度 ?

我们先只看一层线圈的情况,例如只考虑上层线圈,转子16个磁极对应定子16的磁极。其实下层跟上层是一样的,只不过爪子的排列刚好跟上层交错一个间距,也就是22.5/2=11.25°。(其实是4个,上层两个,下层两个。这4个线圈共用一个抽头,每层的两个线圈绕线相反,所以产生的磁极也是相反的)这里借用一下视频的截图。首先,28BYJ-48 是个减速电机,里面集成了一个64:1的减速箱。这张图本身用于展示步进电机的原理是没有错的,但是这并不是28byj-48步进电机的构造图,用这幅图更是算不出5.625的步距角。

2025-01-11 21:45:53 759

原创 python中的格式化字符串

其中{}内冒号(:)的前面指定占位符,可以是数字,可以是字符,也可以省略(连后面的:一起省略)。但是占位符不能混用,要么都用数字,要么都用字符,要么都省略。用数字的话,可以指定顺序。用字符的话,后面必须指定字符的值。冒号后面指定显示格式,这个可以参考上面的链接。我的理解是,这个方式同第二种方式大体相同,但写法更简洁,并且最重要的是支持表达式。第一种方式,是使用%操作符,很类似C语言中的转义字符。另外,同第二种方式一样,它也支持一些可选的格式控制字符。第二种方式,是使用字符串对象的format()方法。

2024-06-17 19:27:30 378

原创 python中反向索引的问题

我原本认为,start必须小于end,然后在start到end的区间里,按照step步长取值,step为正,就是从start到end方向取值,step为负,就是从end到start方向取值。取数永远是从start到end,start是可以大于end的,但是这个时候必须是倒序,所以step必须是负值,如果step是正,则返回值是空的。但是,n[:-3:-1]结果应该是什么,我原本的理解是,从头取到第-3个数(不包含),倒序排列,应该是[6,5,4,3,2,1,0]. 但是,实际的结果是[9,8].

2024-06-13 18:21:18 669 1

原创 M0内核单片机中断向量重映射

前段时间,做了个项目,使用了华大HC32L110,一开始没什么,一切顺利。但是做OTA在线升级时,发现了一些问题。不同于M3内核的MCU,M0内核没有中断向量的寄存器(华大是M0+内核,有些网友说M0+是有这个寄存器的,这个我暂时没验证,稍后找资料看看),所以无法重定向中断向量。这就有点麻烦了,岂不是做不了固件升级了?赶紧在网上搜索解决方案,结果发现了ST的STM32F0系列的解决方法,简单来说就是利用地址重映射的功能,让应用程序段的固件能找到正确的中断向量。所以赶紧试一下,what !华大M0+MCU

2022-05-19 10:18:32 2115 5

原创 在485接口上实现SDI-12协议,你调通了吗?

前一段时间调试了一个雷达水位计,输出接口有RS485和SDI-12,协议没有modbus,只有SDI-12.因为我们的设备只有RS485接口,所以只能选择使用485连接。SDI-12的软件协议也比较简单,写完以后与雷达水位计联调却发现始终不通。纠结一番后,查阅了水位计厂家的资料,最后问题终于解决。期间我也在网上查询过,发现很多网友也有同样的问题,协议没问题,串口设置也没有问题,但是就是不通,为了避免更多的人再掉到这个坑里,现将我的经验分享给大家。首先简单介绍下SDI-12协议。这个协议不同于RS

2022-01-15 14:28:02 6592 1

原创 最大功率点跟踪MPPT

太阳能电池最大功率点跟踪MPPT(Maximum Power Point Tracking)技术能够保证在负载或环境光照强度变化时,光伏电池一直保持最大输出功率,以最大化太阳能利用率。从太阳能板的I/V伏安特性曲线(绿线)中可以看出,曲线与纵轴的交点为太阳能板的短路电流ISC,与横轴的交点为开路电压VOC,太阳能板的ISC和VOC均随着光照强度的增加而上升,其输出电流IPANEL随着输出电压VPANEL经过一个先缓后急的逐渐下降过程。当我们把电压与电流相乘,以输出电压为自变量,可以得到太阳能板的P/V伏

2020-12-11 14:12:44 12595

原创 小程序data-*自定义变量名注意要用小写

今日调试小程序时,被data-*这种自定义变量卡了半天,最后发现自定义名称不管你用没用大写,最后在参数传入的时候都是小写。列如:我定义了一个名为inValue的变量,其中V是大写字母。但是JS中直接调用的话,就会提示undefine。控制台打印,发现传入的变量名全部变成小写:所以为了防止出错,最好在页面和js文件中,统一使用小写的变量名。...

2020-11-11 00:10:43 599

转载 模板字符串(反引号字符串)的使用说明

模板字面量 是允许嵌入表达式的字符串字面量。你可以使用多行字符串和字符串插值功能。它们在ES2015规范的先前版本中被称为“模板字符串”。语法`string text``string text line 1 string text line 2``string text ${expression} string text`tag `string text ${expression} string text`描述模板字符串使用反引号(` `) 来代替普通字符串中的用双引号和.

2020-11-06 13:49:51 1948

转载 微信小程序setData的使用

1、设置数据可以设置一个或同时多个data数据 this.setData({ test:'hello world!', info:'data',})console.log(this.data.test) // 结果 =》 “hello world!”console.log(this.data.info) // 结果 =》“data”2、用setData() 设置/修改 对象或数组 里某个属性的值比如修改 下面medias 对象里 id的值...

2020-11-06 11:14:24 1675

转载 微信小程序低功耗蓝牙能力

在无线通信领域,蓝牙是最基础又常用的能力。蓝牙组网十分简单,两设备间做个配对就可以建立起连接,其通信距离理论值为10米至100米以内,是近距离通信应用场景的首选。今天我们想跟大家分享小程序连接蓝牙的能力。目前蓝牙最为普遍的两种规格为蓝牙基础率/增强数据率 (BR/EDR) 和低功耗 (LE) 蓝牙。蓝牙基础率/增强数据率 (BR/EDR) 是经典的蓝牙协议,常用在对数据传输带宽有一定要求的场景上,比如需要传输音频数据的蓝牙音箱等;低功耗 (LE) 蓝牙是从蓝牙4.0...

2020-11-03 10:14:16 1178

转载 微信小程序UI组件库合集

第一款:官方WeUI组件库,地址 https://developers.weixin.qq.com/miniprogram/dev/extended/weui/预览码:第二款:ColorUI:地址 https://github.com/weilanwl/ColorUI预览码: 第三款:vantUI(又名:ZanUI):地址 https://youzan.github.io/vant-weapp/#/intro预览码:第四款:MinUI: 地址...

2020-10-29 17:40:04 965

原创 微信小程序之画布的旋转,你搞懂了吗?

最近在学习微信小程序的时候,学习到画布时,旋转功能把我有点搞糊涂了。因为我一直以为,旋转的是画布,但其实,旋转的坐标系。坐标系方向为:画布向右为x,向左为-x,向上为-y,向下为y程序示例如下: ctx.translate(width/2,height/2) //重新定位坐标原点为画布中心 ctx.rotate( 30 / 180 * Math.PI); //画布旋转30° ctx.beginPath(); //绘制线条1 ctx.moveT

2020-10-22 11:03:56 1775

原创 微信小程序变量赋值失败

本人一直以来都是C程序员,最近有需求,需要做个微信小程序,其中有不少坎坷。C语言编程和高级语言相比,思维逻辑还是有些不一样的。例如今天遇到的问题,我在onload函数中给一个变量赋值,紧接着要使用,但发现变量依旧是空的,代码如下: onLoad: function (options) { news.limit(5).get({ success:res=>{ this.setData({newsList:res.data}) } })

2020-10-20 17:36:28 3485 1

c#基础教程

不错的c#基础教程,讲解的C#的一些基本内容,适合新手入门。

2012-07-11

ARM v8-m 架构参考手册

最新ARM V8-m架构参考手册,英文版。2018年12月14日最新修行版。

2019-01-22

信可MC20通信模块硬件手册+AT指令+TCPIP指令集

深圳信可MC20通信模块技术资料。内含硬件手册+AT指令+TCPIP指令集。

2022-05-25

移远EC20通信模块AT指令集

上海移远EC20的AT指令集文档。内含AT\FILE\GNSS\FTP\MMS\SMTP\SSL\TCPIP等多个功能模块的指令集。

2022-05-25

移远通信模块程序烧录工具。QFlash_V4.4

用于移远的通讯模块的固件烧录。

2022-05-25

keysight/安捷伦数字万用表操作和维护指南。

keysight(安捷伦)数字万用表操作和维护指南。内含SCPI编程参考。可用于安捷伦设备的编程指导。

2022-05-25

M0内核MCU中断向量重映射【完整boot程序】

华大HC32L110单片机的boot程序。里面重新定向了中断地址。(注意修改你的app的偏移地址),同时还集成了DFU,简单修改就可实际应用了。这个boot不仅仅用于华大单片机,应该能广泛适用于所有M0\M0+内核的MCU。

2022-05-19

VB2010串口编程实例

vb2010编写的串口通信实例,可以将接收的数据以ascii,16进制,10进制的方式显示。测试时可以短接串口2,3pin,形成回环测试。

2016-06-01

s3c2440的CAMERA操作控制程序OV9650摄像头

S3C2440 控制0V9650摄像头的程序

2012-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除