- 博客(34)
- 收藏
- 关注
原创 C++面经汇总
模板定义的编译发生在模板函数定义的地方,而模板实例化的编译发生在模板函数被调用的地方,并根据具体的类型参数生成函数实例。相比于其他自平衡的二叉搜索树,如AVL树,红黑树的旋转和重新着色操作更少,因此插入和删除操作的性能更优。模板函数的编译是由编译器自动完成的,无需显式的编译命令。I/O多路复用(I/O Multiplexing)是一种用于处理多个I/O事件的机制,它允许一个线程同时监视多个文件描述符(如套接字、管道等)的可读、可写状态,从而实现并发的I/O操作,提高程序的性能和效率。
2023-09-14 20:32:07 112
原创 STM32学习日记--Day5--通信接口
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力。
2023-07-22 20:05:30 34
原创 STM32学习日记--Day5--DMA数据转运
而DMA技术的引入,可以解放CPU,让它专注于更复杂的任务,同时实现高速的数据传输。总之,DMA的作用是通过直接访问内存,实现高速、高效的数据传输,减轻CPU负担,提高系统性能,并支持多设备的并行操作和数据格式转换。它可以在设备和内存之间直接传输大块的数据,避免了CPU的频繁干预和数据拷贝,提高了数据传输的速度和效率。DMA(Direct Memory Access,直接内存访问)是一种计算机系统中的数据传输技术,它的作用是在不需要CPU干预的情况下,实现高速、高效的数据传输。
2023-07-22 19:10:08 304
原创 STM32学习日记--Day5--AD模数转换
该函数检查 ADC 的转换完成标志位(`ADC_FLAG_EOC`),如果标志位为 `RESET`,表示转换还未完成,需要继续等待。需要注意的是,对于多个通道的转换,你可以按照需要多次调用 `ADC_RegularChannelConfig` 函数来配置不同的通道。- 通过设置 ADC_InitTypeDef 结构体变量的成员来配置 ADC 的基本参数,然后调用 `ADC_Init` 函数将配置应用到 ADC 模块。- `1`:指定转换序列的序号。- `ADC_Channel_1`:指定要配置的转换通道。
2023-07-22 13:05:17 722 1
原创 STM32学习日记--Day3--定时器中断--外时钟中断
通过调用 `TIM_ETRClockMode2Config` 函数,可以将定时器配置为外部时钟模式 2,并设置外部时钟的预分频系数、极性和滤波器值。- `TIM_ExtTRGPrescaler`:指定外部时钟的预分频系数,用于控制外部时钟信号的频率。- `TIM_ExtTRGPolarity_NonInverted`:外部时钟信号非反相。- `ExtTRGFilter`:指定外部时钟的滤波器值,用于消除外部时钟信号中的噪声和抖动。- `TIMx`:指定要配置的定时器,如 `TIM1`、`TIM2` 等。
2023-07-20 16:00:56 70
原创 STM32学习日记--Day3--定时器中断--内时钟中断
通过调用 `TIM_ITConfig` 函数,可以根据需要配置定时器的中断功能。`TIM_ITConfig` 是一个函数,用于配置定时器(Timer)的中断功能。请注意,要使用 `TIM_ITConfig` 函数,您需要正确配置和初始化定时器及其相关参数,以及使能相应的中断向量和优先级。- `NewState`:指定中断的状态,可以是 `ENABLE`(使能中断)或 `DISABLE`(禁止中断)。- `TIMx`:指定要配置的定时器,如 `TIM1`、`TIM2` 等。1.在主函数中调用中断函数。
2023-07-20 15:42:57 141
原创 STM32学习日记--Day3--定时器中断
16位计数器(每来一个时钟计数+1)、预分频器(对时钟进行分配,技术更灵活)、自动重装寄存器的时基单元(计数目标值,到达时自动重装),在72MHz计数时钟下可以实现最大59.65s的定时(支持级联进一步提高计时时间)。不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能。
2023-07-20 14:29:29 85
原创 STM32学习日记--Day2--外部中断--旋转编码器计次
*如果出现数据乱跳的现象,可再次判断引脚电平,以避免抖动*//*如果出现数据乱跳的现象,可再次判断引脚电平,以避免抖动*///初始化NVIC EXTI0_IRQn。//关联GPIOB引脚与EXTI中断线。//初始化NVIC EXTI1_IRQn。//开启外设时钟GPIOB、AFIO。//初始化GPIOB0、GPIOB1。//设置NVIC中断响应分组。//初始化EXTI外设。
2023-07-20 13:07:04 143
原创 STM32学习日记--Day2--外部中断--对射式红外传感器
/开启外设的时钟,外设分别有GPIO、AFIO、EXTI、NVIC,按照道理来说都需要开启时钟函数,但是EXTI、NVIC位内核控制因此无需开启时钟。if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)//判断GPIO输入口是否是低电平。//关联引脚与EXTI中断线。
2023-07-20 12:51:37 97
原创 STM32学习日记--Day1--跑马灯实验
GPIO_InitTypeDef结构体指针GPIO_InitStruct参数用于指定GPIO引脚的初始化配置。- GPIO_Mode_AF:将GPIO引脚配置为复用功能模式。- GPIO_Mode_OUT:将GPIO引脚配置为输出模式。GPIO_Mode是GPIO_InitTypeDef结构体的一个成员,用于指定GPIO引脚的工作模式。- GPIO_Mode_AN:将GPIO引脚配置为模拟模式。在该模式下,引脚用于模拟信号输入或输出。- GPIO_Mode_IN:将GPIO引脚配置为输入模式。
2023-07-19 11:26:00 113
原创 sizeof 和strlen区别
2. strlen 测量的是字符的实际长度,以'\0' 结束(不包含'\0' )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到'\0' 结束(包含'\0' ,也就是strlen测量的长度加1),如果已经分配。sizeof为分配空间大小,strlen为实际显示长度。1. strlen 是函数,sizeof 是。大小,返回的就是分配的内存大小。......
2022-08-07 09:58:00 263 1
原创 线程池相关问题
在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static!void*Threadstart_thread(void*arg)//静态成员函数只能访问静态变量或静态函数,通过传递this指针进行调用。函数原型中的第三个参数,为函数指针,指向处理线程函数的地址。...
2022-07-31 15:12:23 40
原创 epoll学习笔记
1.端口复用的目的?允许多个socket绑定同一个地址,可以实现多线程监听。2.epoll,select和poll,为什么用epoll,它和其他两个有什么区别呢?3.Epoll对文件操作符的操作有两种模式LT(电平触发)和ET(边缘触发),二者的区别在于当你调用epoll_waitselectepoll_waitepoll_waitsleepepoll_wait在使用ET模式时,必须要保证该文件描述符是非阻塞的(确保在没有数据可读时,该文件描述符不会一直阻塞);并且每次调用read和write。...
2022-07-29 16:52:18 122
原创 vs 中间及输出目录设置
输出目录 $(SolutionDir)../bin/$Platform/$(Configuration)中间目录$(SolutionDir)../temp/$Platform/$(Configuration)/$(ProjectName)
2022-05-14 18:28:15 432
原创 物理层 数据传送技术
数据在编码后,在通信线路上进行传输时,按照数据传送技术划分可以分为:(1)电路交换优点:传输时延小,不存在失序问题,随时通信,实时性强,控制简单,可传数模信号。缺点:连接建立时间长,信道利用率低。(2)报文交换只能传输数字信号。(3)分组交换报文交换plus。分组交换中通信子网向端系统提供虚电报和数据报两种网络服务。...
2022-03-28 10:15:36 346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人