- 博客(79)
- 收藏
- 关注
原创 C语言 -- 动态数组&链表
将数组开辟到堆区,实现动态扩展。① 用户的数据类型无法确定;② 用户的数据无法确定创建在堆区还是栈区;③ 不管数据在堆区还是栈上,都是在内存中,就会有地址,只需维护数据的地址就行。
2022-09-04 21:03:24 1073
原创 C++基础知识(二十二)--- 查找算法
adjacent_find(开始迭代器,结束迭代器,谓词或函数对象);binary_search(开始迭代器,结束迭代器,对象,函数对象);binary_search(开始迭代器,结束迭代器,数值);adjacent_find(开始迭代器,结束迭代器);count(开始迭代器,结束迭代器,谓词或函数对象);count(开始迭代器,结束迭代器,数值);注意:数据必须要有序。
2022-08-22 22:34:06 175
原创 C++基础知识(十九)--- 函数对象
STL 中有以下实现“累加”功能的算法(函数模板),该模板的功能是对(first,last)中的每个迭代器 I 执行 val = op(val, *I),返回最终的 val。
2022-08-21 16:14:33 1320
原创 C++基础知识(十八)--- 容器案例
当我们给容器中插入元素时,容器内部实施了拷贝动作,而不是将原数据元素放入容器,也就是说我们提供的元素必须能够被拷贝。
2022-08-14 10:35:51 218
原创 C++基础知识(十七)--- pair&set&map
pair 对组是一个类,类中有两个公有的成员变量。pair 将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用 pair 的两个公有属性 first 和 second 访问。
2022-08-13 23:08:15 1450 2
原创 C++基础知识(十六)--- stack&queue&list
由于 list 是一个双向链表,迭代器必须能够前移、后移,所以 list 的迭代器是双向迭代器。list 容器是一个循环的双向链表。
2022-08-09 22:33:06 656
原创 C++基础知识(十五)--- deque 容器
vector 容器是单向开口的连续内存空间,deque 则是一种双向开口的连续线性空间。所谓的双向开口,是可以在头尾两端分别做元素的插入和删除操作。
2022-08-03 23:30:26 403
原创 C++基础知识(十四)--- vector容器
因为vector迭代器所需要的操作行为,如:operator->,operator++,operator+=等,普通指针天生具备。Vector 以两个两个迭代器 _Myfirst 和 _Mylast 分别指向配置得来的连续空间中目前已使用的范围,并以迭代器 _Myend 指向整块连续内存空间的尾端。......
2022-08-03 22:25:31 1437
原创 C++基础知识(十二)--- STL基本概念
容器各种数据结构,如vector,list等,用来存放数据,从实现角度来看,STL容器是一种模板类(classtemplate)。
2022-08-01 23:09:25 671
原创 C++基础知识(十)--- I/O
在iostream头文件中定义的类有ios,istream,ostream,iostream,istream等。
2022-07-31 12:32:19 481
原创 C++基础知识(十一)--- 文件读写
由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,所以它在fstream头文件中是没有像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象。
2022-07-31 12:30:56 1393
原创 C++基础知识(九)--- 类型转换 & 异常
C++的异常处理使得异常的引发和处理不必在一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。
2022-07-28 22:30:46 909
原创 C++基础知识(八)--- 模板
最初包含函数实现的地方,当原先的.h头文件改名为.hpp,并且其中引入了函数实现后,这里的全部屏蔽掉,即不使用该.cpp文件了)答类的成员函数默认申请为内联函数,在链接时,链接器会对重复的成员函数进行处理,只保留一份成员函数,所以不会报错。编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的时候对参数替换后的代码进行编译。不管是普通类继承类模板,还是类模板继承类模板,都必须告诉编译器父类的泛型数据类型是什么类型。函数或类是通用的,但是里面的数据类型是多种多样的。...
2022-07-27 08:25:08 609
原创 C++基础知识(七)--- 多态
所谓的接口,即把内部实现的细节封装起来,外部用户通过预留的接口可以使用接口的功能,而不需要知晓内部具体细节。C++中,通过类实现面向对象的编程,而在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口。不同派生类实现接口的方式也不尽相同。有继承;子类重写父类的virtual函数;函数返回值、函数名、函数参数,必须和父类中的虚函数一致。有继承;子类重新定义父类的同名成员(非virtual函数)...
2022-07-24 12:34:01 555
原创 C++基础知识(六)--- 继承
利用已有的数据类型来定义新的数据类型。一个B类继承于A类,或称从类A派生类B。则,类A称为基类(父类),类B称为派生类(子类)。
2022-07-19 08:44:05 411
原创 C++基础知识(四)---数组类、运算符重载
在调用函数时需要将实参对象完整地传递给形参,也就是建立一个实参的拷贝,系统是通过调用拷贝构造函数来实现的,这样就能保证形参具有和实参一样的值。
2022-07-16 10:41:25 1144
原创 C++基础知识(二)---重载、类和对象、构造析构
目录一. 函数重载(1)原理:(2)当函数重载遇上默认参数 (3)函数重载的实现原理二. C++调用C语言三. 类和对象(1)封装(2)struct 和 class 的区别:(3)面向对象程序例子eg:① 比较立方体② 点和园的关系四. 构造函数、析构函数(1)默认的构造函数和析构函数(2)如果构造函数中申请了堆区空间,则就要在析构函数中释放。(3)拷贝构造函数(4)匿名对象(了解)(5)拷贝构造函数的调用时机(6)构造函数的调用规则(7)深浅拷贝(8)多个对象的构造函数和析构函数8.1 类对象作为成员8.
2022-07-10 11:54:33 325
原创 C++基础知识(一)
命名空间 ::namespace A{ //A 是空间的名字 int a; void func() {}}(1)命名空间只能写在全局;(2)可以嵌套;namespace Aspace { int a = 1; namespace B { int b; }}(3)命名空间是开放的,可以随时加入新成员;(4)命名空间可以取别名;namespace newSpace = oldSpa...........
2022-07-04 22:06:22 446
原创 sizeof、strlen
int main(void){ char str1[] = {'1','2','0','3',0,0}; char str2[] = { '1','2','\0','3',0,0 }; char str3[] = "120300"; printf("sizeof(str1) = %d, strlen(str1) = %d\n", sizeof(str1), strlen(str1)); printf("sizeof(str2) = %d, strlen(str2).
2022-04-10 18:18:37 100
原创 状态机实现按键检测
需求:按键分短按、长按,需要带消抖。key.h#ifndef __KEY_H_#define __KEY_H_#include "main.h"#define KEY_ST PORT_GetBit(KEY_GPIO_PORT,KEY_GPIO_PIN)typedef enum{ NULL_KEY = 0, SHORT_KEY = 1, LONG_KEY}KEY_TYPE;extern KEY_TYPE key_type;
2022-04-06 23:46:55 828
原创 16位数与8位数的转换
在单片机编程里,遇到这样一个问题,涉及到位操作:字节 0 1 2 3 4 5 6 7 CAN-ID 0 1 2 3 0x68 地址 计数 充电电压 充电电流 充电温度 eg:当数据为02 00 5d c0 42 68 00 41时,表示:当前的输出为24V、17A,温度为65摄氏度。/*** @brief CAN向充电器发送设置充电电压、电流信息 * @param //...
2022-04-06 23:34:15 1128
原创 嵌入式软件开发框架--时间片轮询法
一.参考:嵌入式软件开发常用的三种架构/** * @brief 任务函数相关信息结构体定义. */typedef struct{ uint8 m_runFlag; /*!< 程序运行标记:0-不运行,1运行 */ uint16 m_timer; /*!< 计时器 */ uint16 m_itvTime; /*!< 任务运行间隔时间 */ vo.
2022-04-06 22:58:01 731
原创 Apple Media Service
AMSMR: watchMS:phoneAMS entities:AMS定义了3个不同的实体entities,每个entities具有各自不同的属性attributes:(1)Player :The currently active media app。该实体的attributes包括其名称、播放状态和播放音量等值。(2)Queue : The currently loaded playback queue,当前加载的播放队列。该实体的attributes包括其大...
2022-03-28 00:16:16 624
转载 嵌入式C语言基础知识--位操作(串口&IIC通信发送格式)
大端模式、小端模式、高字节序、低字节序、MSB、LSB编程知识_字节序_位操作内存的读写永远是从低地址开始读写,从低到高。大小端模式:以unsigned int value = 0x12345678为例,分别按照大端模式和小端模式存放在芯片中。内存地址 0x00000001 0x00000002 0x00000003 0x00000004 大端模式 0x12 0x34 0x56 0x78 小端模式 0x78 0x...
2022-03-19 22:25:13 2338
原创 BLE应用框架接口设计--前提
本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法。一.应用框架(Framework)我们熟知的Framework包括Android Framework、Linux QT、Windows MFC。应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调和函数接口的方式供应用开发人员调用以完成具体的需求。一般Framework完成的工作包括:任务分发、消息通信和UI等.
2022-03-16 14:03:16 447
原创 BLE低功耗蓝牙协议栈
目录一. BLE低功耗蓝牙协议栈(1)蓝牙核心协议(Bluetooth Core)(2)蓝牙应用层协议(Bluetooth Application)(3)BLE低功耗蓝牙核心协议层详解(Bluetooth Core)① 物理层(PHY)② 链路层(LL)③ 主机控制接口层(HCI)④ 通用访问配置文件层(GAP)⑤ 逻辑链路控制及自适应协议层(L2CAP)⑥ 安全管理层(SM)⑦ 属性协议层(ATT)⑧ 通用属性配置文件层(GATT)(4)ATT协议层中的
2022-03-14 18:11:06 9761 1
原创 STM32+CubeMX+Keil+HAL库
目录1. 设置GPIO:2. printf重定向3. Log信息格式4.个性化输出5. CubeMX+HAL打开串口中断6.打开外部中断7.时钟树基本操作8.通用定时器配置9. CubeMX配置定时器(1)将定时器的时钟设为72M(2)选择内部时钟(3)配置定时器(4)开启中断定时器中断回调函数:(平滑滤波)10.CubeMX配置pwm11.CubeMX配置spwm12.CubeMX配置ADC(1)轮询...
2022-02-27 01:06:14 1758
转载 CANOpen(一)-- CAN通信基础补充
【专栏】CANOpen系列教程CAN与CANOpen(一)_maifansnet的博客-CSDN博客_canopen《CANOpen轻松入门》--周立功目录1. CAN组成2.位填充3.优先级4. 位时序CAN总线波特率5.数据帧CAN既是一种总线,又是一种协议。CAN总线协议只定义了物理层和数据链路层,在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件或固件,只要了解如何调用相关的接口和寄存器,即可完成对CAN的控制。简单说,CA...
2022-02-21 14:37:16 6797 1
原创 Linux文件目录
常用的linux文件权限:444 r–r--r–600 rw-------644 rw-r–r--666 rw-rw-rw-700 rwx------744 rwxr–r--755 rwxr-xr-x777 rwxrwxrwx从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限。而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;通过4、2、1的组合,得到以下几种..
2022-02-13 19:28:28 415
原创 以太网口&arm&mos&推挽开漏&上下拉&高低边&时域频域傅里叶
目录1. 以太网网口简介MIIDMAMACPHY2. Arm2.1 什么是ARM内核:2.2 什么是ARM架构:2.3 什么是指令集:3. mos场效应管3.1 NMOS和PMOS3.2 Vcc、Vdd、Vss3.3 LDO3.4电源芯片选用LDO还是DC-DC?3.5TTL、CMOS4. 推挽输出和开漏输出5. 上拉、下拉6. 高、低边驱动7. 时域、频域、傅立叶分析8. Excel技巧Excel怎么将表格的一列乘..
2022-02-13 19:26:25 834
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人