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

原创 不能错过的 Modebus-RTU 协议源码,助你一步到位
这份源码程序大小在8K左右,内存不足的单片机可以只使用部分功能码,只需要修改如下宏定义为 1 即可, 为 0 的时候不会编译相关代码。这些也是按需修改的地方#define RtuFrameMaxLen (32) //这个数值决定数据内存的大小,适当选择。
2023-12-26 14:57:53
2254
6
原创 CRC8校验算法源码——C语言版
本文以CRC8实际代码为例启发各位读者,如何编写一个CRC的校验算法。让各位读者直接跳过繁琐的原理说明阶段,快速应用到工程当中
2024-06-12 09:35:24
3316
原创 如何消除*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS。如何消除函数未使用的警告
WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS的消除方法函数定义了,但是没有使用
2024-05-27 18:31:15
1211
原创 C语言关于void类型的指针作为函数形参在使用时需要注意的坑
关于void*类型指针的说明,资料甚少,包括《C和指针》这本书籍也只是一笔带过,还有《C专家编程》和《C陷阱与缺陷》等专业的C语言书记,都没有提到这一点,网上也没搜到这一块好的资料,就将本人实际使用过程中的遇到的问题和经验分享出来,void*类型指针虽然可以包容任意类型的指针参数,但是在函数内部不能无所顾忌的随意使用,仍然要注意传递的参数的类型.
2024-03-20 15:56:22
662
2
原创 C语言 switch case 语句优化方案其一
这是一个用于计时的函数,细心的朋友应该可以发现,这段代码还隐藏一段 if 语句的优化方案,那就是当case语句较少的时候还能接收,假如很多的时候就会难以维护,这里提供一种思维。
2024-01-17 14:59:32
766
原创 Keil5,ARM编译器 软件优化注意事项
优化C代码中的环路终止循环是大多数程序中的常见结构。由于大量的执行时间通常花费在循环中,因此值得关注时间关键循环。如果不谨慎地编写,环路终止条件可能会导致大量开销。在可能的情况下:使用简单的终止条件。写入倒计时到零循环。使用类型的计数器。测试与零的相等性。单独或组合遵循这些准则中的任何或全部准则可能会产生更好的代码。下表显示了用于计算n!的例程的两个示例实现,它们共同说明了环路终止开销。第一个实现使用递增循环计算 n!,而第二个例程使用递减循环计算n!。表7-1 递增和递减循环的C代码。
2024-01-06 17:07:17
2005
原创 Keil5 ARM CC编译错误和警告解释大全(4),序列号3000-3730
Keil5 ARM CC编译错误和警告解释大全(4),序列号3000-3730
2024-01-06 16:23:29
835
原创 keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
2024-01-06 16:21:41
1161
原创 Keil 5 ARMCC编译错误和警告解释大全(2) 序列号1000-2000
Keil 5 ARMCC编译错误和警告解释大全(2) 序列号1000-2000
2024-01-06 16:20:01
1741
原创 Keil C51的编译器限制
Cx51 编译器体现了下面列出的一些已知限制。在大多数情况下,对 C 语言的组件没有限制;例如,您可以在switch块中指定无限数量的符号或case语句。如果有足够的地址空间,则可以定义数千个符号。
2024-01-06 14:49:40
760
原创 C语言 三目运算符 内进行赋值操作时必须要知道的细节
C语言三目运算符的第二个表达式进行赋值操作时必须要加括号的,否则会报错。或者使用这种方式赋值 m &= (1==2 ? m |= 0xf2 : 0x01);
2023-12-30 11:29:03
480
1
原创 C语言中,字节对齐,内存对齐的影响范围
至此,我们已经不难看出,结构体内的成员变量的优化方式,是以最先遇到的最大的那个数据类型来对齐的,但是呢,假如它的前一段或者后一段有剩余没有使用的,那么更小的数据就会被放入这个缝隙,当这个缝隙填满之后,再开辟一个新的和最大数据类型大小一致的空间,无论你的最大类型的数据位置是在前,在后,还是在中间,都是以它来进行对齐。如果你不希望造成更多的空间浪费,建议你将最小的数据类型定义时放在最前面,最大的放在最后面。当然,这个忠告仅对那些不能使用 #pragma pack(1) 指令的编译器生效。
2023-12-29 11:22:59
822
原创 C语言中的符号位对数据的影响。
C语言中有一个容易踩坑的陷阱就是数据类型的转换,无论是新手还是老手,使用变量的过程中如果不知道这个问题,或者忘记注意这方面的问题,就会导致莫名奇妙的bug,本文将使用printf函数非常直观的揭露你的数据如何让你在不知情的情况下悄悄变化的。
2023-12-23 13:53:04
500
1
原创 keil5如何编写较为精确的软件延时时间&keil5仿真时如何查看程序运行时间,彻底搞明白软件延时
在嵌入式程序中,大家经常会用到软件延时这种函数,但是大多数人并不清楚自己的软件延时时间是否真的准确,都是从别人的代码那里复制的,或者向老一辈继承的经验值,但是他们的经验值不一定适合你的工程,在有些对时序要求特别严格的应用场合,不精确的时间就会导致很多奇奇怪怪的问题,博主在本篇就会告诉大家一个使用keil5的仿真调试查看时间的方法。然后一步一步教你如何确认自己项目的软件延时时间。
2023-12-07 19:26:36
2996
2
原创 74HC1650通用高效率驱动代码,15行代码永久搞定74HC165,值得祖传的74HC165驱动代码,附芯片硬件连接
15行代码永久搞定74HC165,值得祖传的74HC165驱动参考代码,再也不需要看手册了,拿来直接用
2023-12-07 14:26:40
2325
6
原创 keil5编译报错*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS的解决办法
多个公共定义错误如何解决?
2023-12-06 09:32:13
5281
2
原创 单片机为什么一直重启,为什么不能正常工作
当你的程序怎么调也找不到问题,但是就是不能正常运行,串口不能正常使用等问题,检查很多遍既没有发现逻辑错误,也没有发现语法错误,不妨检查一下你的程序是否超过了单片机的容量。
2023-11-29 20:32:16
671
1
原创 STM32定时器PWM输出之DMA调节占空比&直流无刷电机驱动器的VE管脚驱动代码&一文教你学会调节预分频器值和频率和占空比。
PWM输出举例讲解,源码说明,STM32单片机控制无刷电机驱动器VE管脚源码,简短易懂。
2023-11-20 17:05:26
2327
1
原创 keil5报“没有字段”错误 的解决方式
keil5报错:error: #136: struct "" has no field "PBout"
2023-11-18 12:41:16
3889
1
原创 solidworks草图中剪裁实体命令
强劲剪裁命令有两种方式:1.选择一条线的端点单击,鼠标向线内点击就会删除这段,向线外移动再点击可以延长这段线,如果单击的不是一条线的端点,而是一条直线的中间部分,则软件会视为点击了最靠近这个点击部分的一端的端点2.选择强劲剪裁后按住鼠标左键会出现一条灰色的细实线,这条灰色的细实线会将所有碰到的实体线段,全部剪掉,碰谁谁没,非常好用。
2023-10-31 14:10:28
2023
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人