- 博客(10)
- 收藏
- 关注
原创 C++ 的智能指针std::shared_ptr
在使用时当我们使用裸指针和智能指针指向同一个地址时,当我们将智能指针都删除后,裸指针所指向的内存也不复存在,但裸指针还存在,这时再次调用裸指针有可能发生不可预料的后果。在实际使用时可以考虑我们是否可以指向别的类,比如上面的Ball2,实际是不行的,在我们定义智能指针时,它的数据类型就已经被确定了,我们不能再修改它的数据类型了。在实际使用时以上代码中的.reset()函数,可以在该函数(方法)中添加新的成员变量,使智能指针指向一个新的同类的地址,代码如下。运行了两次析构,说明我们释放了两个Ball类的内存。
2023-05-28 22:38:05
208
1
原创 UCII源码分析二
第三种:在要使用临界区的函数中定义一个局部变量名叫cpu_sr,然后在进入临界区前将CPSR保存到cpu_sr中,然后在退出临界区时将cpu_sr恢复到CPU的CPSR中,以此来实现临界区中断状态保存和回复。重点是进行了临界区的定义,其规定了临界区的状态。(2)临界区相关的宏。
2023-05-08 23:03:42
309
原创 UCOSII 源码级学习
3.FreeRTOS可以有优先度一样的任务,这些任务是按时间片来轮流处理,uCOSII每个任务都只有一个独一无二的优先级。因此,理论上讲,FreeRTOS可以管理超过64个任务,而uCOS只能管理64个。2.uCOS的支持比FreeRTOS多,除操作系统外,FreeRTOS只支持TCP/IP,uCOS则有大量外延支持,比如FS,USB,GUI,CAN等的支持。除这些外,还支持Flag,MailBox。3.uCOS可靠性更高,而且耐优化,FreeRTOS在设置成中等优化的时候,就会出现问题。
2023-05-07 19:02:21
282
原创 C++编程规范 三
(1)类,结构,枚举,联合:大括号另起一行联合体union:联合体和结构体最大的区别在于,联合体的内存地址是统一的,联合体所有的成员占用同一块也就是成员变量中最大的一块内存地址。最大成员大小 不是 最大对齐数 的 整数倍 的时候,就要对齐到最大对齐数的整数倍。对于 数组来说,当我们计算 该数组所占内存空间大小的时候,不要拆分,把他看成一个整体,计算他 整个数组所占内存空间的 大小即可。下方为其占用内存的详细计算方式,假设int占用四个字节,5个为20个字节,longlong占8个字节int b[5]
2023-04-23 21:45:33
194
原创 C++编程规范(二)
T 代表简单的数据类型,不对资源拥有控制权,在析构函数中也没有需要释放的远远C 代表从Cbase上继承的类。该类不能从栈上定义变量,只能从堆上创建M 代表接口类 该类的函数名应采用Handle前缀,例如HandleTimerEvent,最好不使用下划线,M的虚函数应设计为纯虚数关于这句话的理解首先要理解什么是虚函x数,什么是纯虚函数。虚函数:为了允许用基类的指针来调用子类的这个函数的一种实现方式,他的基函数中也许也写了该函数的实现方式,但它通常不会被调用,例如下面的代码。
2023-04-21 22:35:17
63
原创 C++的编程规范(第一小节)
(1)代码简洁精炼,美观,可读性好(2)高效率(3)高复用,可移植性好(4)高内聚,低耦合(5)没有冗余(6)规范性,代码有规可循。(7)特殊排版、特殊语法、特殊指令,必须特别说明。
2023-04-17 23:11:26
166
1
原创 CAN(Controller Area Network)总线简介
CAN总线诞生之初主要是用在汽车中的各模块之间或和汽车主控之间进行通信的,它的连接方式如下。CAN通信的核心电子设备为ECU,CAN总线上一般挂载有许多的ECU相互之间可以进行通信连接,通过这种连接方式可以大大节省各器件通信时所需要用到的铜线,可以看看下方的对比。
2023-04-17 21:46:30
500
1
原创 SPI通信说明
本文详细介绍SPI的通信原理和特点,主要用途为学习。SPI是一种高速、、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。SPI是有主从机设备的,主机只允许有一个,从机可以有多个。SPI通信时需要用到四根线,单向传输时需要用到三根线,即单工模式。它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选)以下为一个标准的SPI连接方式:此为一主多从的连接方式,连接方式知道了下面我们了解一下通信过程。
2023-04-11 22:50:40
9053
1
原创 详解IIC的通信逻辑
思考为何时钟线一定是低电平呢,在上面的起始位和中止位中我们可以看到,都是在时钟线处于高电平时完成的,所以我们需要将发送的数据与起始位和终止位区分开,那让时钟线处于低电平时才允许SDA改变当前的状态就很好的解决了这个问题。可以看到我们在传输完起始位后传输的是地址位,通常为7位,还有1位读写信号位,它是如何传输的呢,首先我们需要在SCLK(时钟线)为低电平的时候传输数据,在时钟线为高电平时让外设读取数据,传输8位数据后会得到一个应答信号。半双工:允许A向B传输数据,允许B向A传输数据,但两者不能同时进行。
2023-04-09 23:08:44
613
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人