自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 嵌入式状态机思想。

总结来说,状态机思想的核心是:通过状态、事件和转移的抽象,将时序逻辑转化为可管理的静态模型,从而控制系统复杂度,尤其适合具有清晰状态划分的场景。(1)状态机将系统行为拆解为有限的、离散的“状态”,每个状态代表系统在某一时刻的特定模式或条件。(1)动作(Action)的执行通常与状态绑定(进入状态、退出状态)或转移绑定。(1) 简化复杂性:将时序逻辑转化为静态的状态和规则,避免冗长的条件分支(如`if-else`嵌套)。(2)核心价值:分离“做什么”(动作)和“何时做”(状态逻辑),提高代码的可维护性。

2025-03-25 19:23:14 392

原创 C语言extern关键字

(1)用于声明全局变量或函数:在一个文件中声明一个全局变量或函数为“extern”,表示该变量或函数在其他文件中定义,这样就可以在当前文件中使用该变量或函数。“extern”关键字的主要作用是扩展变量和函数的可见性,使得它们可以在当前文件或模块中使用,即使它们在其他文件或模块中定义。(2)用于引用全局变量或函数:在当前文件中引用其他文件中已经定义的全局变量或函数。

2025-02-16 13:22:01 380

原创 C语言关键字volatile

volatile的意思是”易变的”,这个关键字主要是防止编译器对变量进行优化。即告诉编译器每次存取该变量的时候都要从内存去存取而不是使用它之前在寄存器中的备份。如上图代码所示,a = 1这个程序,先将1写入CPU,再从CPU中将1写入a所在的内存地址中;b = a是先从内存中将a的值取出到CPU,再从CPU将值存入b的内存地址中。// 内存(&a) -> CPU。// 为a,b申请内存。// CPU -> 内存(&a)// CPU -> 内存(&b)(a)关于编译器优化。

2025-02-14 13:34:55 310

原创 C语言static关键字

延长生命周期:局部变量通常在函数调用时创建,函数结束时销毁,在函数中static修饰的局部变量,生命周期会延长到该函数的整个运行期间,即在函数多次调用期间,static局部变量的值会保持上次调用结束时的值,不会被重新初始化。限定作用域:static全局变量被限制在当前源文件中其他文件无法访问该全局变量,防止命名冲突,增强模块化和封装化。隐藏变量:防止某源文件的全局变量被其他源文件随意修改和访问。限定函数的作用域:防止函数被其他源文件调用修改。保持变量的持久性:可以统计函数被调用的次数。实现文件级别的封装。

2025-02-13 10:17:16 405

原创 Can通信协议

总结:错误帧、过载帧、帧间隔都是由硬件自动完成的,没有办法用软件来控制,对于一般使用者来说,只需要掌握数据帧与遥控帧。所有节点都可以侦听到所有传输的报文,无法将报文单独发送给指定节点,所有节点都将始终捕获所有报文,但是can硬件能够提供本地过滤功能,让每个节点对报文有选择性的做出响应。2、can使用短报文,最大实用负载是94位,报文中没有任何明确的地址,相反,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址。3、can总线上有5种不同的报文类型:数据帧、远程帧、错误帧、过载帧、帧间隔。

2025-01-22 15:43:55 349

原创 USART、IIC、SPI协议区别与总结

UART与IIC,SPI两者最大的区别在于后面两者是同步,要有统一的时钟线,而UART不需要,接线方便,但收发双方需要配置相同的波特率,即设备需要有自己的时钟源。SPI编程简单,在设备不多,端口充足,对通信速度要求不高的场合可以应用,较长用来连接EEPROM,FLASH或液晶显示器。SPI优点:支持全双工,操作简单,数据传输速率较高,SPI没有定义速度限制,一般的实现通常能达到甚至超过10Mbps。UART优点:只使用两根线,不需要时钟信号,有一个奇偶校验位,只要双方设置后,就可以改变数据包的结构。

2025-01-07 14:28:54 432

原创 C语言指针,数组,函数总结学习笔记。(非基础)

const定义的指针,p是一个指向int常量的指针,即*p不可修改,防止p地址内的值*p被篡改。STUDENT arr[100]={{"Jack","男",20},{"Lucy","女",18},{"Lily","女",18}};分配空间的释放,如不释放会导致内存泄露(空间不能重复的释放)空间释放后指针p变为野指针,p=NULL,赋值为野指针。STUDENT s ={"Jack","男",{1997,1,1},{2017,9,1}};即p是指向int变量的常量,p不可修改。p不可修改,*p也不可修改。

2025-01-05 15:13:58 371 2

空空如也

空空如也

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

TA关注的人

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