- 博客(47)
- 收藏
- 关注

原创 不能错过的 Modebus-RTU 协议源码,助你一步到位
这份源码程序大小在8K左右,内存不足的单片机可以只使用部分功能码,只需要修改如下宏定义为 1 即可, 为 0 的时候不会编译相关代码。这些也是按需修改的地方#define RtuFrameMaxLen (32) //这个数值决定数据内存的大小,适当选择。
2023-12-26 14:57:53
2350
6
原创 为什么测量手机充电电流时,采集低端,用四芯的USB线带数据的充电,其分流电阻上的电压就小,两芯的线只有电源和地的就正常呢?
【摘要】在USB充电电流测量中,发现四芯线分流电阻电压(0.001V)远低于两芯线(0.1V)。根本原因是四芯线的屏蔽层等额外接地路径分流了大部分电流,导致测量值异常。解决方案包括切断并联路径、改用高端测量或使用专业测试仪。该现象揭示了多芯线缆电流路径复杂性对测量的重要影响,为电源管理设计提供了关键经验。
2025-07-30 15:32:38
629
原创 IO口模拟串口发送程序示例
源代码,我添加了t_dat = 0xaa;用于测试,应用中要删掉,这种方式是软件死延时,使用者应该根据项目情况,确认是否要关闭中断,中断的打断会导致发送数据出错。这种软件串口的波特率上限根据单片机的性能决定,其io口开关速度要能达到才行。本文列举一个51单片机时钟为6Mhz的成功通讯例程,其不懂原理的小白可以问AI。
2025-07-16 10:49:36
309
原创 U盘内的压缩文件资料在不同电脑里显示的文件不一样的问题
造成这种差异的原因是解压压缩软件的差异,微软自带的解压缩软件的算法并不全面,你需要重新下载一个合适的解压缩软件,再用这个新的解压缩软件打开就可以了。有的人说是文件夹隐藏的问题,这种情况就显示隐藏的文件夹就好了,本文说的是另一种情况。举例:下图是在一台新的笔记本电脑中,这个压缩文件显示的内容,解压出来也还是这个内容。但是,实际上这个文件里存放的是下图的这个内容。
2025-07-02 11:00:13
243
原创 另一种Keil提示RTE未启用的解决方式
这个时候可能的原因就是你激活了C51,但是没有激活ARM,激活方式就不用我再叙述了,激活之后安装MDK,这时候你再打开keil工程的时候那个选项就不再是灰色了,并且也不需要手动去启用。网上有如下图所示的 keil 提示RTE未启用的解决方式,是要到设置界面去点击按钮去启动,但是有一种情况存在就是那个选项按钮是灰色的,你无法通过这个方式去解决这个问题。
2025-07-02 10:47:57
157
原创 CRC8校验算法源码——C语言版
本文以CRC8实际代码为例启发各位读者,如何编写一个CRC的校验算法。让各位读者直接跳过繁琐的原理说明阶段,快速应用到工程当中
2024-06-12 09:35:24
3831
原创 如何消除*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS。如何消除函数未使用的警告
WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS的消除方法函数定义了,但是没有使用
2024-05-27 18:31:15
1338
原创 C语言关于void类型的指针作为函数形参在使用时需要注意的坑
关于void*类型指针的说明,资料甚少,包括《C和指针》这本书籍也只是一笔带过,还有《C专家编程》和《C陷阱与缺陷》等专业的C语言书记,都没有提到这一点,网上也没搜到这一块好的资料,就将本人实际使用过程中的遇到的问题和经验分享出来,void*类型指针虽然可以包容任意类型的指针参数,但是在函数内部不能无所顾忌的随意使用,仍然要注意传递的参数的类型.
2024-03-20 15:56:22
720
2
原创 C语言 switch case 语句优化方案其一
这是一个用于计时的函数,细心的朋友应该可以发现,这段代码还隐藏一段 if 语句的优化方案,那就是当case语句较少的时候还能接收,假如很多的时候就会难以维护,这里提供一种思维。
2024-01-17 14:59:32
793
原创 Keil5,ARM编译器 软件优化注意事项
优化C代码中的环路终止循环是大多数程序中的常见结构。由于大量的执行时间通常花费在循环中,因此值得关注时间关键循环。如果不谨慎地编写,环路终止条件可能会导致大量开销。在可能的情况下:使用简单的终止条件。写入倒计时到零循环。使用类型的计数器。测试与零的相等性。单独或组合遵循这些准则中的任何或全部准则可能会产生更好的代码。下表显示了用于计算n!的例程的两个示例实现,它们共同说明了环路终止开销。第一个实现使用递增循环计算 n!,而第二个例程使用递减循环计算n!。表7-1 递增和递减循环的C代码。
2024-01-06 17:07:17
2109
原创 Keil5 ARM CC编译错误和警告解释大全(4),序列号3000-3730
Keil5 ARM CC编译错误和警告解释大全(4),序列号3000-3730
2024-01-06 16:23:29
940
原创 keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
2024-01-06 16:21:41
1265
原创 Keil 5 ARMCC编译错误和警告解释大全(2) 序列号1000-2000
Keil 5 ARMCC编译错误和警告解释大全(2) 序列号1000-2000
2024-01-06 16:20:01
1902
原创 Keil C51的编译器限制
Cx51 编译器体现了下面列出的一些已知限制。在大多数情况下,对 C 语言的组件没有限制;例如,您可以在switch块中指定无限数量的符号或case语句。如果有足够的地址空间,则可以定义数千个符号。
2024-01-06 14:49:40
840
原创 C语言 三目运算符 内进行赋值操作时必须要知道的细节
C语言三目运算符的第二个表达式进行赋值操作时必须要加括号的,否则会报错。或者使用这种方式赋值 m &= (1==2 ? m |= 0xf2 : 0x01);
2023-12-30 11:29:03
497
1
原创 C语言中,字节对齐,内存对齐的影响范围
至此,我们已经不难看出,结构体内的成员变量的优化方式,是以最先遇到的最大的那个数据类型来对齐的,但是呢,假如它的前一段或者后一段有剩余没有使用的,那么更小的数据就会被放入这个缝隙,当这个缝隙填满之后,再开辟一个新的和最大数据类型大小一致的空间,无论你的最大类型的数据位置是在前,在后,还是在中间,都是以它来进行对齐。如果你不希望造成更多的空间浪费,建议你将最小的数据类型定义时放在最前面,最大的放在最后面。当然,这个忠告仅对那些不能使用 #pragma pack(1) 指令的编译器生效。
2023-12-29 11:22:59
873
原创 C语言中的符号位对数据的影响。
C语言中有一个容易踩坑的陷阱就是数据类型的转换,无论是新手还是老手,使用变量的过程中如果不知道这个问题,或者忘记注意这方面的问题,就会导致莫名奇妙的bug,本文将使用printf函数非常直观的揭露你的数据如何让你在不知情的情况下悄悄变化的。
2023-12-23 13:53:04
525
1
原创 keil5如何编写较为精确的软件延时时间&keil5仿真时如何查看程序运行时间,彻底搞明白软件延时
在嵌入式程序中,大家经常会用到软件延时这种函数,但是大多数人并不清楚自己的软件延时时间是否真的准确,都是从别人的代码那里复制的,或者向老一辈继承的经验值,但是他们的经验值不一定适合你的工程,在有些对时序要求特别严格的应用场合,不精确的时间就会导致很多奇奇怪怪的问题,博主在本篇就会告诉大家一个使用keil5的仿真调试查看时间的方法。然后一步一步教你如何确认自己项目的软件延时时间。
2023-12-07 19:26:36
3208
4
原创 74HC1650通用高效率驱动代码,15行代码永久搞定74HC165,值得祖传的74HC165驱动代码,附芯片硬件连接
15行代码永久搞定74HC165,值得祖传的74HC165驱动参考代码,再也不需要看手册了,拿来直接用
2023-12-07 14:26:40
2568
6
原创 keil5编译报错*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS的解决办法
多个公共定义错误如何解决?
2023-12-06 09:32:13
5537
2
原创 单片机为什么一直重启,为什么不能正常工作
当你的程序怎么调也找不到问题,但是就是不能正常运行,串口不能正常使用等问题,检查很多遍既没有发现逻辑错误,也没有发现语法错误,不妨检查一下你的程序是否超过了单片机的容量。
2023-11-29 20:32:16
733
1
原创 STM32定时器PWM输出之DMA调节占空比&直流无刷电机驱动器的VE管脚驱动代码&一文教你学会调节预分频器值和频率和占空比。
PWM输出举例讲解,源码说明,STM32单片机控制无刷电机驱动器VE管脚源码,简短易懂。
2023-11-20 17:05:26
2425
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人