- 博客(17)
- 收藏
- 关注
原创 C++面试常问题
1.c和c++区别2.C++三大特性3.静态多态和动态多态4.指针和引用的区别5、重载、重定义、重写6、new、malloc7、static的作用8、const的作用9、STL
2024-04-17 21:54:20
675
1
原创 stm32通信接口
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。自带波特率发生器,最高达4.5Mbits/s。可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2。可选校验位(无校验/奇校验/偶校验。
2024-04-17 17:07:58
1072
1
原创 stm32的PWM驱动LED呼吸灯代码流程展示
1、开启时钟,使用PA0引脚作为输出连接LED;2、GPIO初始化;3、配置时钟源;4、时基单元初始化;5、输出比较初始化;6、TIM使能;7、编写主函数。
2024-03-13 16:18:34
258
1
原创 stm32输出比较
OC(Output Compare)输出比较; 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形; 每个高级定时器和通用定时器都拥有4个输出比较通道; 高级定时器的前3个通道额外拥有死区生成和互补输出的功能。
2024-03-12 20:25:28
327
1
原创 stm32定时器定时中断和定时器外部时钟代码流程展示
1、开启TIM2的时钟;2、配置时钟源;3、时基单元初始化;4、中断输出配置;5、NVIC中断分组;6、NVIC配置;7、TIM使能;8、定时器中断函数。
2024-03-04 17:51:45
394
1
原创 stm32定时器
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断;16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时;不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能;根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型;
2024-03-03 23:09:46
549
1
原创 stm32外部中断代码配置流程
1、开启GPIOB和AFIO的时钟,它们都在APB2总线上;2、初始化GPIO;3、AFIO选择中断引脚,将外部中断的14号线映射到GPIOB,即选择PB14为外部中断引脚;4、EXTI初始化;5、NVIC中断分组;6、NVIC配置;7、EXTI15_10外部中断函数。
2024-03-03 11:32:09
387
1
原创 STM32中断系统
中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
2024-03-02 16:39:06
308
原创 GPIO简介
GPIO(General Purpose Input Output)通用输入输出口,可配置为8种输入输出模式。引脚电平为0~3.3V,部分引脚可容忍5V。输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2024-02-25 15:11:54
361
原创 Qt控件简要笔记
2.2、connect(sender,/*信号发送者*/&sender::sig1,/*信号*/receiver,/*信号接收者*/&receiver::slot1/*信号处理函数*/);4.2、设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");3.1、设置头:ui->treeWidget->setHeaderLabels(QStringList() << "英雄" << "英雄介绍");
2023-05-12 14:32:15
196
原创 static的简单使用
1、修饰全局变量:该变量只可以在同一个文件中使用。2、修饰局部变量:将该变量存在静态区,不会因为函数的结束或者一个生命周期的结束而释放。3、修饰函数:该函数只能在同一个文件中被调用。4、修饰类的数据成员:表明对该类所有对象这个数据成员都只有一个实例。即该实例归 所有对象共有,它先对象一步存在,要在类外进行初始化。5、修饰类的成员函数:由于static修饰的类成员属于类,不属于对象,因此static类成员函数是没有this指针的,this指针是指向本对象的指针。正因为没有this指针,所以static类
2022-06-23 10:32:46
174
原创 指针和引用的区别
相同点:他们都是地址的概念,指针指向一块内存,它的内容是所指内存的地址,而引用则是某块内存的别名。不同点:(1) 引用被创建的同时必须被初始化,指针则可以在任何时候被初始化;(2)不能有NULL 引用,引用必须与合法的存储单元关联,指针则可以是NULL;(3)一旦引用被初始化,就不能改变引用的关系,指针则可以随时改变所指的对象。...
2022-06-23 09:28:03
124
原创 vector的使用
1、头文件:#include 2、初始化vector对象的方式:vector v1; // 默认的初始化方式,内容为空vector v2(v1); // v2是v1的一个副本vector v3(n, i); // v3中包含了n个数值为i的元素vector v4(n); // v4中包含了n个元素,每个元素的值都是0vector v5(v4.begin(), v4.begin()+n); //将v4前n-1个元素赋值给v5...
2022-06-23 08:52:43
481
原创 C++重载、重定义、重写
1、重载:函数名相同,参数的个数、参数类型、参数顺序不同。2、重定义:子类重新定义父类中有相同名称的函数(参数列表可以不同但不能是虚函数),重定义后父类的方法就会被隐藏。可以通过作用域去调用父类隐藏的方法。3、重写:子类重新定义父类中有相同名称和参数的虚函数。...
2022-06-22 12:02:37
830
原创 函数指针的使用
我们在程序中定义了一个函数,在编译时系统会给这个函数代码分配一段存储空间,这段存储空间的首地址就是这个函数的地址,函数名表示的就是这个地址。我们定义一个指针变量来存放这个地址,这个指针变量就叫做函数指针变量,简称函数指针。...
2022-06-22 11:31:24
133
原创 C++数据类型转换
1、static_cast(静态类型转换):用于基本数据类型(char、int、double等)之间、对象之间、继承关系类对象指针之间、继承类指针之间的转换;不能用于基本数据类型指针之间的转换(char* 、int*、double*等)。2、dynamic_cast(动态类型转换) :用于函数父类与子类之间的指针或引用的转换;使用的前提是必须要有虚函数;不能用于基本不能用于基本数据类型指针之间的转换(char* 、int*、double*等)。...
2022-06-22 11:08:53
2042
原创 C++继承的权限问题
1、public继承public(父类)->public(子类);protected(父类)->protected(子类);父类的private不能被继承。2、protected继承public(父类)->protected(子类);protected(父类)->protected(子类);父类的private不能被继承。3、private继承public(父类)->private(子类);protected(父类)->private(子类);父类的private不能被继承。...
2022-06-22 10:24:50
1188
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人