![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
Kr.Forver
知识见证真理
展开
-
什么是CAN总线?
CAN(Controller Area Network,控制器局域网)是一种用于数据通信的串行总线通信协议。它最初由德国的BOSCH公司开发,用于汽车电子控制单元(ECU)之间的通信。CAN协议在其他领域也被广泛应用,例如船舶、火车、航空、机械和医疗设备等。原创 2023-04-02 08:00:00 · 1277 阅读 · 7 评论 -
什么是modbus通信协议?
四、总结Modbus通信是工业自动化领域中最流行的通信协议之一。通过使用Modbus通信,可以实现设备之间的互联互通,提高生产效率和智能家居的便利性。在使用Modbus通信时,需要注意确定通信协议、选择物理媒介、配置设备参数、编写程序以及测试调试。通过以上步骤,可以成功实现Modbus通信。原创 2023-04-01 12:38:15 · 441 阅读 · 4 评论 -
rt-thread提示Cannot found RT-Thread root directory, please check RTT_ROOT
rt-thread提示Cannot found RT-Thread root directory, please check RTT_ROOT原创 2022-07-05 12:13:41 · 7018 阅读 · 0 评论 -
Astyle 适用实例
Astyle 适用实例:```shell# 格式化单个文件$ astyle --style=allman --indent=spaces=4 --indent-preproc-block --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --lineend=linux --convert-tabs --verbose 1.c# 格式化多个文件$ astyle --style=allman --inden原创 2022-01-11 17:50:30 · 5709 阅读 · 0 评论 -
pid负反馈闭环控制程序
一. 什么是PID比例-积分-微分(Proportion Integration Differentiation)的简称,PID是一个负反馈闭环控制系统。二. PID应用场景PID可以应用在对压力、温度、流量、液位等工艺变量要求维持在一定的数值上。三. PID的代码以及控制逻辑PID控制分两种,分别为位置式PID和增量式PID。1. 位置式PID位置式pid公式ek:Sv -Pv (目标值与当当前值的误差)2. 增量式PID增量式pid公式ek:Sv -Pv (目标值与当当前值的原创 2022-01-09 20:55:06 · 8823 阅读 · 19 评论 -
含泪总结,一定要注意有符号数与无符号数,或者无符号数之间的数学运算
兄弟们,血泪史告诉大家,一定要注意无符号数相减!!本猿在进行该条件判断的时候,发现在条件显然为假的时候,这个结果都为真。所以本猿很是苦恼,就开始了漫长的问题查找流程。1、首先我查看第一个值,该值是设置的电压值。是一个固定的数字。2、然后我查看第二个值的函数,这是一个获取当前ADC电压的函数。3、我发现第一个变量定义是int型,第二个返回值是uint型,而且第一个要比第二个大,这样相减的结果就不确定,可能是一个无符号的很大的数值,那么条件就一直满足。花费了本猿两个小时的时间!!!!!!!!!!!!原创 2022-01-05 21:21:17 · 5643 阅读 · 0 评论 -
c函数解耦原则
想要编写耦合性较低的代码,做时刻记住两个原则。1、隔离变化(1)代码功能中,不变的部分写进一个函数,变化的部分根据需求编写不同的函数;(2)执行时,只需把变化的函数做成参数传递给不变的函数里面,进行调用。这里主要用到函数指针来调用函数。2、降低复杂度(1)函数应该尽量精简,仅完成相对独立的简单功能;(2)函数的实现不应该太长,函数实现太长,应该反思能够如何修改(或拆分)使得函数更为精简、易懂。...原创 2021-12-17 17:16:18 · 6063 阅读 · 0 评论 -
常见的内存错误及对策
本文介绍了常见的内存错误及对策:问题:内存分配未成功,却使用了它解决办法:(1)如果是malloc或者new申请内存,那么在申请之后立即检查是为位NULL,如if(p == NULL)或if(p != NULL);(2)如果指针p是函数的参数,那就在函数的入口处使用assert(p != NULL)来进行检查。问题:内存分配成功,但是没有初始化就使用它解决办法:申请内存或者定义数组之后,立即进行初始化。问题:操作越过了内存的边界解决办法:防止出现多1少1的操作。问题:忘记释原创 2021-11-29 15:57:52 · 540 阅读 · 0 评论 -
高质量C语言编程——持续更新
1、避免嵌套过深,一般函数模块嵌套不超过4层;2、函数代码不要过长,可以用多个子函数;3、需要对函数参数做必要的合法检查;4、对函数的错误返回码要全面处理;5、标识符要清晰明了,有明确的含义;6、变量:一个字符——小写,多个字符——单驼峰;函数:双驼峰加下划线;宏定义:全大写加下划线;7、函数返回局部变量的值可以,但是不能返回局部变量的地址;8、因为宏替换多个语句时,宏直接替换可能会出错,加上大括号也有可能会出错,最终的解决办法是#define加do while(0)。那么完全不用担心使用原创 2021-11-26 15:40:28 · 5710 阅读 · 0 评论 -
vscode代码折叠与展开快捷键
vscode快捷键: 代码折叠:先按ctrl+k,再按ctrl+0 [注意0为数字0]代码展开:先按ctrl+k,再按ctrl+j原创 2021-11-13 14:48:38 · 933 阅读 · 0 评论 -
文件加密解密操作——源码开源
运行结果如下:b.c是a.c的加密文件,说明加密成功;a.c与c.c的文件内容一致,说明解密成功。原创 2021-11-03 16:39:23 · 6254 阅读 · 12 评论