- 博客(29)
- 收藏
- 关注
原创 c++中class类中的四大常用默认函数
万字长文帮你搞懂类的四大常用默认函数,在c++中,有四个常用的默认函数以及两个不常用的。本文主要介绍这四种函数:构造函数、析构函数、拷贝构造、赋值重载。实现四种函数的注意事项、编译器默认生成与手动生成的差异,以及手动实现需要注意的坑。介绍了浅拷贝与深拷贝的区别以及如何实现深拷贝。
2023-10-03 11:10:24
1906
7
原创 龙芯1C102的时钟图
龙芯1C102上电后默认使用内部时钟,检测到外部时钟源(8MHz和32KHz)后切换。ADC时钟源由PMU分频产生,支持2/4分频;I2C时钟源推测为外部8MHz晶振,官方例程显示其分频配置基于8MHz时钟。部分外设时钟源需通过代码和手册交叉验证确认。
2025-09-28 16:16:25
233
原创 龙芯1C102定时器
龙芯1C102定时器采用简洁设计,32位计数寄存器在10MHz主频下最大计时约429.5秒(7分9.5秒)。核心机制是count计数器与compare寄存器匹配时触发中断,compare可自增步进值实现周期循环。需注意寄存器只能在定时器停止时修改,无影子寄存器功能。该定时器结构简单,包含计数、比较和配置三类基本寄存器。
2025-09-27 18:56:53
188
原创 龙芯1C102串口使用
文章摘要:介绍了串口通信中的关键寄存器结构和工作原理。重点解析了使用同一地址实现收发全双工的数据寄存器,以及FIFO控制寄存器通过设置触发值和超时机制优化中断效率。硬件通过维护发送/接收队列(8/16位寄存器)实现数据流连续传输,发送位移寄存器在空闲时自动从缓冲区推送数据。同时指出读取状态寄存器时需注意易失性,接收缓冲区存在数据覆盖风险。最后解释了采样窗口寄存器用于解决时钟误差导致的数据错位问题。
2025-09-27 15:55:08
364
原创 龙芯1C102使用VSCode编译问题
本文总结了基于VSCode开发LS1C102芯片时遇到的三个常见问题及解决方法:1)编译路径配置需在laide.makefile中修改;2)添加文件需在makefile中声明文件路径;3)解决代码提示错误需在c_cpp_properties.json中定义LS1C102宏。这些配置调整能有效解决编译路径、文件添加和条件编译显示问题,保证开发环境正常运行
2025-09-26 16:26:30
272
原创 关于为什么stm32的开漏输出可以读取引脚的数值
摘要:I2C通信中SDA线配置为开漏输出时仍可读取数据的原因在于硬件结构设计。硬件框图显示A路(输入)和B路(输出)在IO引脚处相连,输出信号会同时反馈到输入数据寄存器。因此即使配置为输出模式,通过读取输入寄存器仍能获取引脚状态,实现了开漏输出模式下的数据读取功能。实验验证了输入寄存器(IDR)和输出寄存器(ODR)的协同工作机制。(149字)
2025-07-28 12:09:55
276
原创 iic协议代码+讲解
本文详细介绍了IIC总线通信协议的关键要点,主要包括硬件电路设计和通信时序实现。硬件方面要求SCL与SDA线必须配置上拉电阻,设备需设置为开漏输出模式。时序部分重点解析了起始/停止信号、应答机制及数据收发时序,其中:1)起始信号通过SDA高→低跳变实现;2)数据在SCL高电平时读取,低电平时修改;3)每字节传输后必须跟随应答位。文章还提供了完整的IIC协议代码实现,包括起始/停止函数、字节读写函数及应答处理函数,为开发者实现IIC通信提供了实用参考。
2025-06-19 16:09:15
1163
原创 c++多态 详解
综上:如果满足多态,看指向对象的类型,调用这个类型的成员函数如果不满足多态, 看调用者类型,调用这个类型的成员函数解释:满足多态的情况下,我们定义Parent * p= new student,这个会调用Student的发生重写的函数我们定义Parent *p =new Parent ,这个会调用Parent中被重写的函数不满足多态的情况下,我们定义Student *s =new Student,这个会调用Student的函数。
2024-03-09 11:04:25
1566
1
原创 适配器模式
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总 结),该种模式是将一个类的接口转换成客户希望的另外一个接口。
2023-11-15 20:32:59
95
原创 c++模拟实现List
写本博客的目的接在记录学习过程,学习c++的新知识点,以及巩固以前学过的知识!!!整篇文章都比较大部分都扣的很细节,重点看
2023-11-15 19:22:49
149
原创 vector中模拟实现让我困惑好久的东西
那为什么赋值重载使用 vector<T>& operator=(vector<T> v) 不使用const vector<T> v修饰,可以接收const参数。因为这里是形参,而不是引用,引用才不可以这样使用,会导致权限放大,这里是拷贝了一份临时变量,修改临时变量当然不会影响到你传递进来的参数了。其原因是,它其实进去了赋值重载,只不过我们的赋值重载的参数为形参,没有使用引用,所以要先初始化形参,就会调用拷贝构造,等拷贝构造结束后,自然会进入赋值重载里面去。2023/11/12还在撰写中。
2023-11-12 20:38:42
107
1
原创 在其他文件中调用函数时,没有引用发生的错误
在其他文件中调用函数时,没有引用发生的错误。错误代码:0x00007FF7E58B2304 处(位于 测试用的项目.exe 中)引发的异常: 0xC0000005: 读取位置 0x000000002FD315D0 时发生访问冲突。
2023-07-24 16:25:56
215
1
原创 c语言-按位操作符的使用与例子
在c语言中按位操作符有四种 “&“ “|“ “^“ “~“按位与“&“仅当两个操作数为1时,结果才为1Eg: 0&0=0;0&1=0;1&1=1;按位或“|“两个操作数中至少有一个1时,结果就为1Eg:0&0=0;0&1=1;1&1=1;异或“^“两个操作数不相同时,结果为1Eg:0&0=0;0&1=1;1&1=0;可以看出操作数与0异或结果为其本身。操作数与其本身异或为0取反“~“将0置为1,1置为0.Eg: 0~ =1;1~=0;
2023-03-31 16:41:52
328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅