自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS移植STM32F103RC

再在\FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_STM32F103_Keil目录下找到stm32f10x_conf.h文件拷贝到头文件目录include下,该头文件对裁剪整个FreeRTOS所需的功能的宏均做了定义,有些宏定义被使能,有些宏定义被失能,从而达到裁剪功能的目的。将FreeRTOS移植到STM32F103RC系列,首先需要一个Keil基础工程,在该工程的基础上添加文件,修改工程配置实现移植。其中,heap_x.c是内存管理的一种方式,选择其中一种即可。

2023-05-19 18:39:55 269

原创 STM32使用通用定时器PWM控制呼吸灯

基于STM32F103RCT6的PWM控制呼吸灯。

2023-04-25 22:07:49 742

原创 C++学习 模板和类模板

模板是针对C++泛型编程的重要部分,可以大大提高代码的复用性。建立一个通用类,类中的成员 数据类型可以不具体制定,用一个。MyArr.hpp 将类模板的声明及实现放在同一个文件中。类模板在模板参数列表中可以有默认参数。类模板中的模板参数列表可以有默认参数。模板不可以直接使用,它只是一个框架。普通类中的成员函数一开始就可以创建。类模板没有自动类型推导的使用方式。类模板使用只能用显示指定类型方式。类模板中的成员函数在调用时才创建。MyArr.cpp 测试函数。模板的通用并不是万能的。

2023-04-17 16:16:52 81

原创 C++学习 多态

静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名。静态多态的函数地址早绑定 - 编译阶段确定函数地址。动态多态的函数地址晚绑定 - 运行阶段确定函数地址。动态多态: 派生类和虚函数实现运行时多态。利于前期和后期的扩展以及维护。父类指针或引用指向子类对象。子类重写父类中的虚函数。

2023-04-17 14:28:06 64

原创 C++学习 运算符重载

如果类中有属性指向堆区,做赋值操作时会出现深浅拷贝问题,通过重载赋值运算符,可以在堆区开辟新的区域实现深拷贝,而不是简单的赋值操作。赋值运算符 operator=, 对属性进行值拷贝。c++编译器至少给一个类添加4个函数。默认拷贝构造函数,对属性进行值拷贝。默认构造函数(无参,函数体为空)默认析构函数(无参,函数体为空)

2023-04-17 14:20:18 36

原创 C++学习 构造函数和析构函数

构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造。解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次。程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次。如果用户定义拷贝构造函数,c++不会再提供其他构造函数。3.默认拷贝构造函数,对属性进行值拷贝。2.默认析构函数(无参,函数体为空)

2023-04-17 14:15:20 39

原创 C++学习 类的分文件实现

point.h点类的头文件,只保留点类的成员函数声明,实现放在另一个文件中。point.cpp 在成员函数前加上其所属类的作用域,并完成成员函数的实现。通过对类的分文件实现,可以在大型项目中使我们的代码更加易于阅读和维护。mian.cpp测试文件。

2023-04-17 14:09:09 216

原创 C++学习 类

C++中的class和C语言中的struct很像,但是二者的区别在C++中 struct和class唯一的。C++认为==万事万物都皆为对象==,对象上有其属性和行为。类在设计时,可以把属性和行为放在不同的权限下,加以控制。C++面向对象的三大特性为:==封装、继承、多态==在设计类的时候,属性和行为写在一起,表现事物。将属性和行为作为一个整体,表现生活中的事物。struct 默认权限为公共。class 默认权限为私有。将属性和行为加以权限控制。private 私有权限。public 公共权限。

2023-04-17 14:01:44 37

原创 数据结构学习 链式队列的C语言实现

头结点总是指向队首元素,执行三次入队操作后,队首元素值为21,队尾元素值为24。执行一次出队操作后,原先的队首元素21出队,头结点指向新的队首22,得到出队元素的值value为21。函数实现LinkQueue.c。头文件LinkQueue.h。测试函数test.c。

2023-04-10 14:01:30 56

原创 数据结构学习 队列的C语言实现

通过取模可以实现对队列的循环访问。函数实现Queue.c。头文件Queue.h。测试函数test.c。

2023-04-09 20:05:36 32

原创 数据结构学习 链式栈的C语言实现

释放动态空间时也可以不使用二级指针,将linkstack_free定义为返回值为结构体指针linkstack类型的函数,在调用函数时使用头结点指针接收返回值NULL即可。函数实现LinkStack.c。头文件LinkStack.h。测试函数test.c。

2023-04-08 22:33:52 34

原创 数据结构学习 顺序栈的C语言实现

需要注意的是,栈是由高地址向低地址生长的,也就是说栈底是高地址,栈顶是低地址,出栈入栈操作都只能对栈顶进行。函数实现stack.c。头文件stack.h。测试部分test.c。

2023-04-08 14:46:23 61

原创 数据结构练习 单链表的区间翻转(代码与实现原理)

剩余部分分为两部分,指针head指向剩余部分的前半部分最后一个结点,指针rest指向剩余部分的后半部分第一个结点。图中p->next是该单链表的头结点,指向该单链表的第一个结点1(p指向的其实是一个数据域为0的结点,这个结点的指针域存放的是这个单链表头结点)首先生成了一个1-> 2-> 3-> 4-> 5的单链表,通过link_reverse函数将该单链表的第2到第4个节点进行翻转。当temp指向的已经是待翻转部分的最后一个元素时,翻转就已经到了最后一步,将三部分依次连接即完成翻转。测试文件test.c。

2023-04-07 18:50:23 82

原创 数据结构学习 单链表的C语言实现

又犯了很多次愚蠢的错误,对空指针解引用,指针越界访问,操作不属于动态开辟的内存空间。这种错误相比语法错误不好调试,特别是循环当中,循环的起始条件,终止条件,条件修改和语句顺序都有影响。还好VS使用未初始化的野指针会报语法错误,不然我的内存报错还会更多。LinkList.c 函数功能实现。头文件LinkList.h。test.c 测试函数功能。

2023-04-05 21:31:07 200

原创 数据结构学习 顺序表C语言实现

顺序表相对简单,学完才知道之前通讯录使用的就是顺序表。删和增的功能使用了内存函数,但数据类型是int时可以用循环加上简单的赋值语句实现,需要注意删应该从左向右赋值,增应该从右向左赋值(其实就是内存块存在交叉部分时的整体移动问题)。头文件SquenceTable.h,用于声明函数,定义结构体。SquenceTable.c,实现函数功能,增删查改等。main.c,测试函数功能。

2023-04-05 21:05:35 33

原创 C语言练习 -- 通讯录

写完这段代码后看了一本关于代码风格的书,发现有很多不足点。例如Read_from_File,Write_to_File函数命名,大小写字母命名和下划线不应该混合使用。在结构体定义时用typedef将通讯录结构体命名为了Contacts,而在创建结构体时创建名为contacts,当时没有意识到,后续使用时很容易混淆。练习使用了结构体,动态内存管理malloc函数,文件读写函数。contacts.h函数声明,结构体定义和头文件包含。main.c用于实现基本框架,选择进入相应功能。

2023-04-04 17:13:22 130

原创 数组传参学习笔记

对 arr 解引用,(*arr) 得到的可以看作是二维数组第一行——即为一维数组 a[5] 的数组名a,((*arr) + 1)得到的是二维数组的第二行b。再对(*arr)进行下标访问,(*arr)[0]就是a[0],就是arr[0][0],即访问二维数组的第一行第一列。(*arr)可以看作是对arr解引用,得到的是二维数组第一行的数组名,再通过[]操作符进行下标访问,即可得到数组中的元素。传参 arr 时,得到的实际上是二维数组arr[3][5]的首元素地址,即一维数组a[5]的地址。

2023-03-26 19:27:39 42

原创 C语言练习 —— 扫雷

简易版扫雷,目前还只能每次提示一个格子,没想出来怎么实现点一下就把周围没有雷的格子全打开,有待完善。

2023-03-24 13:31:00 52

原创 C语言练习 -- 井字棋

看着别人写很简单,实际写时仍然漏洞百出。对函数的理解还是欠缺,不能快速确定哪一块的功能可以打包为一个函数,经常反复判断导致程序逻辑错误。头文件 game.h。

2023-03-22 10:41:00 44

原创 递归学习 汉诺塔问题

【代码】递归学习 汉诺塔问题。

2023-03-19 17:09:42 38

原创 C语言练习

练习使用do-while,switch分支和循环语句。

2023-03-18 19:36:57 47

空空如也

空空如也

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

TA关注的人

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