自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 Linux学习知识点总结(更新ing)

这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。BusyBox 是一个轻量级的 Linux 工具箱,它将多个 UNIX/Linux 命令(如 ls、cp、vi、wget)整合成一个可执行文件,适用于嵌入式 Linux 设备(如路由器、IoT 设备、Android、单片机等)例如,它的 ls、cp、vi 等命令都是精简版的,比 GNU 版本更小。常用于调试和查看系统启动信息。

2025-02-17 21:02:32 612

原创 Linux驱动层学习:Linux 设备树

到系统主线上的分支。(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。是一种数据结构,包含多个节点,用于描述硬件设备及其配置信息,它通常用于嵌入式系统中,尤其是在Linux操作系统中,帮助操作系统识别和管理硬件资源,设备树不是代码,而是一种用数据描述硬件信息的方式。

2025-02-16 21:43:08 933

原创 Linux驱动层学习:LED 驱动开发

对于 32 位的处理器来说,虚拟地址范围是 2^32=4GB,我们的开发板上有 512MB 的 DDR3,这 512MB 的内存就是物理内存,经过 MMU 可以将其映射到整个 4GB 的虚拟空间。Linux 内核启动的时候会初始化 MMU,设置好内存映射,设置好以后 CPU 访问的都是虚拟地址。物理内存只有 512MB,虚拟内存有 4GB,那么肯定存在多个虚拟地址映射到同一个物理地址上去,虚拟地址范围比物理地址范围大的问题处理器会处理。②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性。

2025-02-14 22:14:51 457

原创 IMX6ULL使用遇到的问题和解答更新

所以使用命令 setenv 修改的是 DRAM 中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash中,否则的话 uboot 下一次重启会继续使用以前的环境变量值。按文档设置的 IP 地址,以及设置虚拟机双网卡,网卡1桥接模式是为了配置给开发板,网卡2用NET模式是为了给Windows主机上网。经过查找,在一篇博客讲到,把网线插到开发板的ENET2,不是插ENET1,结果可以Ping通。设置完后发现只有Ubuntu可以上网,Ping百度,对于主机和开发板均无法连通。

2025-02-06 17:30:10 449

原创 C++速览之智能指针

c++把内存的控制权对程序员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。shared_ptr:允许多个智能指针共享同一块内存,由于并不是唯一指针,所以为了保证最后的释放回收,采用了计数处理,每一次的指向计数+1,每一次的reset会导致计数-1,直到最终为0,内存才会最终被释放掉。下面的例子就是,这是因为f和s内部的智能指针互相指向了对方,导致自己的引用计数一直为1,所以没有进行析构,这就造成了内存泄漏。智能指针的用法和原始指针用法一样,只是它。

2025-01-17 21:23:56 566

原创 QT信号槽 笔记

如果信号和槽的参数类型不匹配,编译器会报错,避免了在运行时出现类型不匹配的错误,提高了代码的可靠性和可维护性。对于有参数的信号和槽,编译器会检查每个参数的类型和顺序是否匹配。例如,如果QTimer有一个带有int参数的信号someSignal(int),而你试图将它连接到一个Widget的槽函数someSlot(double),编译器会因为类型不匹配而报错。在编程中,类型安全是指编译器或解释器对程序中使用的数据类型进行检查的一种特性,旨在防止程序中出现类型不匹配的错误。

2025-01-17 11:07:59 515

原创 FreeROTS学习 内存管理

FreeRTOS 创建任务、队列、信号量等的时候有两种方法,一种是动态的申请所需的 RAM。一种是由用户自行定义所需的 RAM,这种方法也叫静态方法不同的嵌入式系统对于内存分配和时间要求不同,因此一个内存分配算法可以作为系统的可选选项。FreeRTOS 将内存分配作为移植层的一部分,这样 FreeRTOS 使用者就可以使用自己的合适的内存分配方法。

2025-01-10 11:41:16 996

原创 FreeRTOS 软件定时器

软件定时器分两种:单次定时器和周期定时器,单次定时器的话定时器回调函数就执行一次,比如定时 1s,当定时时间到了以后就会执行一次回调函数,然后定时器就会停止运行。有时候我们可能会在定时器正在运行的时候需要复位软件定时器,复位软件定时器的话会重新计算定时周期到达的时间点,这个新的时间点是相对于复位定时器的那个时刻计算的,并不是第一次启动软件定时器的那个时间点。软件定时器的超时回调函数是由软件定时器服务任务调用的,软件定时器的超时回调函数本身不是任务,因此不能在该回调函数中使用可能会导致任务阻塞的API函数。

2025-01-08 22:37:05 647

原创 FreeRTOS入门速览

Free 和 RTOS,Free 就是免费的、自由的、不受约束的意思,RTOS 全称是,中文名就是实时操作系统,强调实时性。可以看出 FreeROTS 就是一个免费的 RTOS 类系统。这里要注意,RTOS 不是指某一个确定的系统,而是指一类系统。比如 UCOS,FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类操作系统。操作系统允许多个任务同时运行,这个叫做多任务,实际上,一个处理器核心在某一时刻只能运行一个任务。操作系统中任务调度器的责任就是决定在某一时刻究竟运行哪个任务,

2025-01-08 17:26:21 1068

原创 STM32学习之 模块初始化和常用GPIO函数笔记

其中GPIOx为要操作的 GPIO端口(如GPIOA、GPIOB等),GPIO_Pin为要设置为低电平的引脚编号,可以是单个引脚(GPIO_Pin_0),也可以是多个引脚的组合(通过按位或操作,如GPIO_Pin_0 | GPIO_Pin_1)GPIOx为要操作的GPIO端口,PortVal是一个uint16_t类型的值,这个值的每一位对应一个引脚的电平状态,例如对于GPIOA端口,如果PortVal的最低位为0,则PA0引脚为低电平;返回值是是一个16位的数据,每一位代表一个端口值。

2025-01-06 22:37:55 821

原创 STM32学习之MPU6050芯片 及 软件I2C读写MPU6050实验

I2C是在进行通信,通信是有从机的,当主机不断驱动SCL时钟时,从机就有义务去改变SDA的电平。所以主机每次循环读取SDA的时候,这个读取到的数据是从机控制的,这个数据也正是从机想要给我们发送的数据;MPU6050是一个6轴姿态传感器,可测量芯片自身X、Y、Z轴的加速度、角速度参数,可以通过这些数据融合,可进一步得到姿态角(或者叫做欧拉角),常应用于平衡车、飞行器等需要检测自身姿态的场景。所以这里即使之前主机把SDA置1再读取SDA,读到的值也可能是0,读到0代表从机给了应答,读到1代表从机没给应答;

2025-01-04 16:21:06 1238 1

原创 STM32学习之通信协议3: SPI

主机时钟发生器发时钟脉冲信号,通过SCK从主机发到从机,想通信,则拉低某片选信号,一个有效的时钟边沿来了后,主机移位寄存器的一位数据(在时钟有效边沿来之前这一位数据已经移到锁存器了)就移到从机的移位寄存器了,8次后,主机的8位和从机的8位就互换了,交换完成后,就各自放到接收缓存器中。SPI有四种通信模式,要结合极性CPOL\CPHA来看,下面补充资料有详细分类。SS为片选通信线,选择哪一个从机通讯,一般这根线为低电平时,片选有效;主机的MOSI连接从机的MISO;主机的MISO连接从机的MOSI;

2025-01-02 16:22:17 279 1

原创 STM32学习之通信协议2: I2C

I2C协议学习笔记

2025-01-02 14:49:46 1028

原创 STM32学习之通信协议1 USART

所以说这个串口的波特率经常会和比特率混用,不过这也是没关系的,因为这两个说法的数值相等,如果是多进制调制,波特率就和比特率不一样了。,也就是没有数据传输的时候,引脚必须要置高电平,作为空闲状态。反映到波形上,比如我们双方规定波特率为1000bps,就表示一秒要发1000位,每一位的时间就是一毫秒,发送方每隔一毫秒发送一位,接收方每隔一毫秒接收一位,这就是波特率,它决定了每隔多久发送一位。如果没有停止位,当数据最后一位是0的时候,下次再发动新的一帧,是不是就没法产生下降沿了,这就是起始位和停止位的作用。

2025-01-01 18:22:22 351

原创 STM32学习之TIM输出比较OC 以PWM驱动外设(LED/舵机/直流电机)

对于电机调速也是一样,以一个很快的频率给电机通电断电,通电断电,电机的速度就能维持在一个中等速度,这就是PWM的基本思想。占空比越小,等效的模拟电压越低。执行结构图的逻辑,这样一直持续下去,REF的电平就会不断变化,并且它的占空比是受CCR值调控的。REF就是一个频率可调,占空比也可调的PWM波形,最终再经过极限选择,输出是使能,最终通向GPIO口,这样就能完成PWM波形的输出。第三步,配置输出比较单元,里面包括这个CCR的值,输出比较模式,极性选择,输出使能这些参数,在库函数里也是用结构体统一来配置的。

2025-01-01 16:21:23 928

原创 STM32学习之 TIM定时器

根据定时器时钟的频率,比如时钟的频率是72MHZ,可以理解为STM32一秒钟会自己数72M次,预分频系数就是将频率分割,比如分频系数是72,则该时钟的频率会变成:72 MHZ / 72 = 1MHZ ,但是在设置的时候要注意,数值应该是72-1 (因为从0计)。假定分频系数是72-1,那么频率变成1MHZ,也就意味着STM32在一秒钟会数1M次,即1us数一次。理论知识较多,由于51学过相关知识,不赘述,江协科技视频有详细解读,优快云博主也有详细文案笔记,,对于定时中断,我们就选择内部时钟源。

2024-12-30 15:32:07 843

原创 Linux内核是什么

充当硬件设备与操作系统之间的桥梁,为不同的硬件设备(如显卡、声卡、硬盘、网卡等)提供对应的驱动程序,使得操作系统能够识别并控制这些设备。是一种将操作系统的核心功能尽量精简,将只保留基本的、最核心的功能在内核中,其余的系统服务(如设备驱动、文件系统、网络栈等)则在用户空间中运行,并通过消息传递的方式与内核进行交互。处理网络协议栈相关的功能,从物理网络接口的数据收发,到 IP 协议、TCP/UDP 协议等网络层和传输层协议的实现,再到应用层网络应用(如浏览器、邮件客户端等)的网络通信支持。

2024-12-30 15:28:38 713

原创 STM32学习之EXTI外部中断(以对外式红外传感器 / 旋转编码器为例)

n代表一个外设可能会占用多个中断通道,但 CPU某时只看一个,想象成CPU是医生,左侧的中断是排队的病人,NVIC是叫号系统,分配看病优先级并负责管理谁去见医生(后来的更紧急也可以抢占优先)NVIC的中断优先级由优先级寄存器的4位(四位二进制可以表示0~15的数,对应16个优先级,这个优先级的数是值越小,优先级越高,0就是最高优先级)决定,这4位可以进行切分,分为。:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

2024-12-28 22:22:58 1353

原创 STM32学习之 OLED

把OLED的GND引到负极供电口,OLED的VCC引到正极供电口,另外,供电口也会同时接到STM32的PB6和PB7两个引脚。直接不初始化这两个引脚也行,32的引脚上电后如果不初始化,默认是浮空输入模式,此模式下,引脚不会输出电平,所以不会有影响。也可以不接这两根,直接给6输低电平,7输高电平,用GPIO口直接给OLED供电,因为OLED功率低可以这样驱动。OLED显示屏: 性能优异的新型显示屏,具有功耗低、相应速度快宽视角、轻薄柔韧等特点。

2024-12-28 22:17:51 417

原创 STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器

STM32学习之按键控制LED以及光敏电阻控制蜂鸣器,学习知识和代码操作

2024-12-26 16:47:38 956

原创 STM32学习之 蜂鸣器

STM32学习之蜂鸣器,基本知识和代码

2024-12-26 16:44:15 566

原创 Linux驱动层学习:字符设备驱动

板子:IMX6ULL 阿尔法 原子安装部分:· 交叉编译工具链地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/不想去下官方好大的安装包可以直接虚拟机的火狐浏览器里面下,省得ftp再传一次Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC

2024-12-23 15:25:43 976

原创 Linux 网络编程

一般我们在使用的时候都会使用 struct sockaddr_in 结构体,sockaddr_in 和 sockaddr 是并列的结构(占用的空间是一样的),指向 sockaddr_in 的结构体的指针也可以指向 sockaddr 的结构体,并代替它,而且sockaddr_in 结构对用户将更加友好,在使用的时候进行类型转换就可以了。其实就是通常端口号来确定的。经过三次的互相确认,大家就会认为对方对听的到自己说话,才开始接下来的沟通交流,否则,如果不进行确认,那么你在说话的时候,对方不一定能听到你的声音。

2024-11-13 11:44:43 951 1

原创 Linux 高级IO

如果可以执行 I/O 操作时,应在应用程序中对该文件描述符执行 I/O 操作,以清除文件描述符的就绪态,如果不清除就绪态,那么该状态将会一直存在,那么下一次调用 select()时,文件描述符已经处于就绪态了,将直接返回。普通 I/O 方式一般是通过调用 read()和 write()函数来实现对文件的读写,使用 read()和 write()读写文件时,函数经过层层的调用后,才能够最终操作到文件,中间涉及到很多的函数调用过程,数据需要在不同的缓存间倒腾,效率会比较低。

2024-11-06 18:49:45 682

原创 Linux 多线程编程

这样,主线程占用互斥锁的时间主要就是数据拷贝和设置g_hasData变量的时间,相比之前直接在获取互斥锁的情况下读取到g_buf,减少了在互斥锁保护下的fgets操作时间(fgets可能会因为等待用户输入而长时间占用互斥锁),所以先输完再说,加大子线程运行几率。但是,接收线程在打印g_buf的时候,主线程也是在运行的,那么,接收线程在打印g_buf的时候如果输入了字符串,可能接收线程打印出来的可能半截老数据,半截新数据。目的是创建一个接收线程,这个接收线程能接收主线程给的数据,主线程从标准输入得到数据。

2024-11-01 19:46:34 599 1

原创 Linux 之 信号概念、进程、进程间通信、线程、线程同步

如果释放互斥锁时有一个以上的线程阻塞,那么这些阻塞的线程会被唤醒,它们都会尝试对互斥锁进行加锁,当有一个线程成功对互斥锁上锁之后,其它线程就不能再次上锁了,只能再次陷入阻塞,等待下一次解锁。事实上,子进程是父进程的一个副本,譬如子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符,父进程与子进程并不共享这些存储空间,这是子进程对父进程相应部分存储空间的完全复制,执行fork()之后,每个进程均可修改各自的栈数据以及堆段中的变量,而并不影响另一个进程。是一族函数,而不是一个单独的函数。

2024-11-01 11:12:48 791 1

原创 Linux 之 文件属性与目录、字符串处理、系统信息获取

软链接文件与源文件有着不同的inode号,如图 5.7.3所示,所以也就是意味着它们之间有着不同的数据块,但是软链接文件的数据块中存储的是源文件的路径名,链接文件可以通过这个路径找到被链接的源文件,它们之间类似于一种“主从”关系,当源文件被删除之后,软链接文件依然存在,但此时它指向的是一个无效的文件路径,这种链接文件被称为悬空链接,inode节点中记录的链接数并未将软链接计算在内。当进程终止时,内核会将其占用的所有内存都返还给操作系统,这包括在堆内存中由malloc()函数所分配的内存空间。

2024-10-26 23:52:53 1014

原创 Linux 之 Linux应用编程概念、文件IO、标准IO

它是一个库函数,在内部会处理很多复杂的操作,如缓冲区管理、格式化输出等,这些操作可能会基于底层的系统调用(如写入到标准输出文件描述符的系统调用),但从应用程序开发者的角度来看,使用cout比直接使用系统调用更加方便、直观。例如,C 标准库中的stdio.h库中的fopen函数,它在内部可能会调用系统调用open来实现文件的打开操作,但fopen提供了更易用的接口,如可以直接使用字符串形式的文件名(不需要像open那样进行一些底层的参数设置),并且可以自动处理一些错误情况。但其底层仍然使用系统调用IO函数。

2024-10-08 21:47:07 808

原创 Linux 之 安装软件、GCC编译器、Linux 操作系统基础

上面的tar命令只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip/bzip2进行压缩,实现类似windwos下winRAR软件的命令。gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。tar -vcf test.tar test //将test打包成test.tar。Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。/dev/sdb 表示U盘,/dev/sdb1 表示U盘的第一个分区。

2024-10-04 22:20:08 1291

原创 leetcode 链表 203. 移除链表元素

else部分的作用是当当前节点cur的下一个节点的值不等于要删除的值val时,将cur指针指向下一个节点,继续遍历链表。如果不进行这个判断,当cur已经是链表的最后一个节点时,尝试访问cur->next->val会导致程序出错,因为此时cur->next为NULL,不能再访问其成员变量val。,此时 head 指向了原来节点的下一个节点,而 tmp 仍然指向原来的节点;移除头结点和移除其他节点的操作是不一样的,因为链表的其他节点都是通过前一个节点来移除当前节点,而头结点没有前一个节点。

2024-10-04 11:51:23 887

原创 leetcode 数组 27.移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。然后返回 nums 中与 val 不同的元素的数量。更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。不能直接删除,数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组。时间复杂度:O(n)

2024-10-03 17:03:37 661

原创 leetcode 数组 704.二分查找

if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle,即:下一个查询区间不会去比较nums[middle]if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1。

2024-10-03 16:12:07 271

原创 LeetCode Hot100 C++ 哈希 128.最长连续序列

if (nums_set.find(num - 1) == nums_set.end()): 检查 num - 1 是否在 nums_set 中。= nums_set.end()): 使用 while 循环检查 num + len 是否存在于 nums_set 中,说明从 num 开始是连续的。int nums_len = nums.size(): 获取输入数组的长度 nums_len,以避免多次调用 nums.size()。输入:nums = [0,3,7,2,5,8,4,6,0,1]

2024-09-25 15:29:25 398

原创 LeetCode Hot100 C++ 哈希 49.字母异位词分组

对于strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],怎么排序的?输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]键 “aet” 对应的字母异位词组为:[“eat”, “tea”, “ate”]键 “ant” 对应的字母异位词组为:[“tan”, “nat”]对于 “eat”,排序后得到 “aet”

2024-09-23 12:27:53 348

原创 LeetCode Hot100 C++ 哈希 1.两数之和

nums[i] 是键,i 是值, hmap[nums[i]] = i;的意思是:将 nums[i] 作为键,将 i 作为与该键关联的值。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。

2024-09-23 12:25:45 432

原创 QT定时器QObiect/QTimer

创建一个QTimer,使用start ()来开始并且把它的timeout ()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。检查事件的定时器 ID 是否与 myTimerId 匹配。更新 picID,循环显示 1.jpg 到 5.jpg。加载并显示第一张图片 1.jpg 到 label 上。QTimer类提供了定时器信号和单触发定时器。启动定时器,间隔由 TIMEOUT 决定。保存定时器 ID 到 myTimerId。电子相册,利用定时器轮播图片。停止定时器,停止图片轮播。

2024-09-07 20:18:28 289

原创 QT学习之计算器

如果当前操作符的优先级小于等于s_opt栈顶操作符的优先级,或者遇到右括号且s_opt栈顶不是左括号,或者表达式遍历结束且s_opt栈不为空,则从s_opt栈中弹出一个操作符进行计算。首先判断s_opt栈是否为空,或者当前操作符的优先级高于s_opt栈顶操作符的优先级,或者遇到左括号 “ ( ” 且当前字符不是右括号 “ ) ”。如果遇到右括号 “)”,则不断从s_opt栈中弹出操作符并进行相应计算,直到遇到左括号 “(”,然后将左括号从s_opt栈中弹出。根据不同的操作符返回不同的优先级值。

2024-09-06 21:20:08 1227

原创 五子棋理解C++思想

例如,当k = 0时,表示水平向右的方向,每次循环会将当前位置的横坐标增加 1(即nowj += dx[k]和nowi += dy[k]变为nowj += 1和nowi += 0),以检查水平方向上是否有连续相同颜色的棋子。在搜索过程中,通过不断更新当前位置的坐标nowi和nowj,使用nowi += dy[k]和nowj += dx[k]来沿着特定方向前进,从而检查该方向上的棋子颜色是否相同。通过遍历棋盘上的每个位置,对于非空位置,尝试在四个方向上进行延伸搜索,以判断是否有连续五个相同颜色的棋子。

2024-08-24 22:40:07 430

原创 C语言速览之指针基础

内存单元的指针和内存单元的内容是两个不同的概念地址 = 指针内容 = 数据。

2024-08-17 10:29:27 963

原创 C++速览之I/O操作

在针对I/O操作时,标准库提供一组操作符(manipulator),允许程序堆输出的内容进行格式化,比如:输出数字的十六进制、浮点值的精度等。c++ 对浮点数的输出默认只会输出六位 ,那么在应对较多浮点数的时候,则常常会丢失精度,导致后面的小数位无法输出。在c/c++中,在对bool类型的数据做输出的时候,打印的是 0 、1 ,如果希望看到的是 true 和 false ,那么可以使用 boolalpha 操作符。此外,还要考虑输入错误的处理,例如输入不合法的值或输入结束时的处理。

2024-08-17 10:27:10 513

可以切割提取多页PDF集合中指定页码间的页

可以切割提取PDF指定页码间的页,适合提取论文集或其他集合里的指定内容页

2025-01-08

C++五子棋以Easyx实现

C++五子棋以Easyx实现 双人对战易拓展多人,代码结构易于理解面向对象思想

2024-08-25

智能控制课程学习PPT

智能控制课程学习PPT 章节分别为绪论、模糊控制理论基础、模糊控制器基础、人工神经元模型、神经网络控制论、智能控制系统。包含对应pdf文件和测试题答案

2024-07-23

模糊控制设计原理清晰简洁pdf

模糊控制器、模糊化、模糊规则、清晰化 以模糊自动洗衣机设计为例子进行说明 模糊控制设计原理清晰简洁pdf

2023-12-20

OpenPCDet代码分析与注释

OpenPCDet代码分析与注释:PointPillar和Second的分析,先看README.md

2023-12-01

2022年华为杯中国研究生数学建模竞赛E题第(3)问建立放牧策略对土壤化学性质影响模型matlab可运行代码+论文

2022年华为杯中国研究生数学建模竞赛E题第(3)问建立不同放牧策略(放牧方式和放牧强度)对锡林郭勒草原土壤化学性质影响的数学模型 matlab可运行代码+论文叙述word、pdf 问题3.从机理分析的角度,建立不同放牧策略(放牧方式和放牧强度)对锡林郭勒草原土壤化学性质影响的数学模型。并请结合附件14中数据预测锡林郭勒草原监测样地(12个放牧小区)在不同放牧强度下2022年土壤同期有机碳、无机碳、全N、土壤C/N比等值,并完成下表

2023-11-22

深度学习500问.zip

深度学习500问pdf资料:包括机器学习基础,深度学习基础,CNN,RNN,目标检测,图像分割,强化学习,迁移学习,优化算法,超参数调整等章节

2023-07-20

基于ASP.NET设计的简易宿舍管理webform项目

极简项目,含作业报告,SQL server数据库脚本

2021-12-29

51单片机万年历(keil+proteus 8.6).zip (时间调整+温度日期星期显示+实验报告)

一个基于51单片机的带温度显示的万年历,系统由51单片机、LM1602液晶屏、温度传感器18B20,蜂鸣器、按键组成,可显示日历、时间和温度值,时间和日期可以调整

2021-02-07

c#图书管理系统.zip (+实验报告+数据库脚本)

c#图书管理系统 大学课设大作业 含图书增删改查 管理员加用户两种登录方式 界面已优化 vs+SQL server

2021-02-07

测温元件DS18B20应用.doc

测温元件DS18B20应用 代码仅供参考,自行适配调整

2021-01-01

DS18B20.pdf

DS18B20手册 温度提供

2021-01-01

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

TA关注的人

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