自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用Qt制作一个简单的界面

选择 build system,有qmake、CMake 和 Qbs 三个选项。CMake 很常用,功能也很强大,许多知名的项目都是用它,比如 OpenCV 和 VTK,但它的语法繁杂。qmake 是针对辅助 Qt 开发的,但也可以在非 Qt 项目使用,特点是语法简单明了,但功能也相对简单。Qbs 号称下一代构建工具,也有好多人力捧 Qbs,没用过。这里选择默认的 qmake。

2024-07-01 11:25:24 362

原创 C++学习全教程(Day2)

数组的定义形式如下:首先需要声明类型r数组中所有元素必须具有相同的数据类型;数组名是一个标识符;后面跟着中括号,里面定义了数组中元素的个数,也就是数组的“长度”;元素个数也是类型的一部分,所以必须是确定的;需要注意的是:对数组做初始化,要使用花括号括起来的数值序列;如果做了初始化,数组定义时的元素个数可以省略,编译器可以根据初始化列表自动推断出来;初始值的个数,不能超过指定的元素个数;初始值的个数,如果小于元素个数,那么会用列表中的值初始化靠前的元素;

2024-06-29 11:09:27 1237

原创 C++学习全教程(day1:变量和数据类型、运算符、流行控制语句)

1、输出hello world流来输出文本信息。其中<<是输出运算符,它用来将文本信息插入到输出流中。是要输出的文本信息,std::endl是表示插入换行符的操作符,它会在输出文本的末尾插入一个换行符,使得输出的文本在控制台上单独占据一行。最终执行该代码会在控制台上输出"hello world!"并换行。

2024-06-26 11:38:37 847

原创 C语言面试题

1、*p++和++*p的区别1、*p++和++*p的区别表达式*p++表示先取出指针p指向的值,然后将指针p向后移动一个位置。即先取值后自增。而表达式++*p表示先取出指针p指向的值,并将该值加1,然后将指针p指向加1后的位置。即先自增后取值。运行结果:2、关键字volatile有什么含意?使用volatile修饰的变量,即该变量可能在程序运行过程中被意外修改。这意味着编译器不会对该变量进行优化,每次使用该变量都会去查询内存中的最新值,以确保程序的正确性。

2024-06-24 11:35:16 660

原创 C语言复习总结(含代码例程)

基本类型:字符型、整型、浮点型、双精度浮点型构造类型:数组、指针、结构体、共用体和枚举字符型:类型表示:char--有符号char型--无符号char型类型大小:8位= 1个字节二进制变化:种变化情况无符号:数字变化有符号:数字变化类型意义:存放字符型数据(ASCII码表)--以某些数字代表某种符号。整型:类型表示:int有符号整型无符号整型short --短整型long --长整型类型大小:int -- 32位以上的处理器,

2024-06-12 20:14:07 653

原创 C语言面试题总结(含参考答案)------持续更新

变量的声明是指在程序中告诉编译器有一个变量存在,并且指定该变量的类型,但并没有为该变量分配内存空间。而变量的定义是指在程序中为变量分配了内存空间,同时也进行了初始化。

2024-06-12 11:16:03 1723 4

原创 STM32+ESP8266+阿里云

ESP8266的使用:通过ESP8266连接WIFI,连接阿里云。阿里云平台的使用

2024-05-24 16:59:04 1671

原创 STM32F4_RTC实时时钟

一、STM32F4 RTC 时钟简介一、STM32F4 RTC 时钟简介STM32F4的RTC,是一个独立的BCD定时器计数器。RTC提供一个日历时钟(包含年月日时分秒信息)、两个可编程闹钟(ALARM A和ALARM B)中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模 式的自动唤醒单元。两个32位寄存器(TR和DR)包含二进码十进数格式(BCD)的秒、分钟、小时(12或 24 小时制)、星期、日期、月份和年份。

2024-05-22 19:14:38 1189

原创 STM32电机驱动模块(L9110S)

L9110S是一种常用的双通道H桥电机驱动器集成电路,用于控制直流电机的方向和速度。它可以同时控制两个电机,每个通道最大可输出800mA的电流。L9110S具有高效的电源管理和过流保护功能,可以保护电路免受电机反冲电流的损害。它通常用于机器人、小型车辆和其他需要精确电机控制的项目中。

2024-05-22 10:00:00 908

原创 语言播报模块

【代码】语言播报模块。

2024-05-21 16:07:17 428

原创 keil程序下载后不能自动运行

问题:程序编译也没有错,也能正常下载,但是无法让程序正常运行,只有在调试模式下多次点击全速运行代码才能跑起来。

2024-05-17 13:59:12 323

原创 RFID-RC522模块

MFRC522是高度集成的非接触式(13.56MHz)读写卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中(13.56MHz)。MFRC522发送模块支持下面的工作模式:MFRC522的内部发送器部分可驱动读写器天线与ISO 14443A/MIFARER卡和应答机的通信,无需其它的电路。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理兼容ISO 14443A/MIFARER的卡和应答机的信号。

2024-05-17 13:48:03 1819 1

原创 Flash Download failed - “Cortex-M3“解决方法

新建完工程之后,使用STLINK下载的时候显示Flash Download failed - “Cortex-M3“

2024-05-16 20:50:32 474

原创 STM32使用硬件SPI实现W25Q64的读取

•STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担。•可配置8位/16位数据帧、高位先行/低位先行•时钟频率: fPCLK•支持多主机模型、主或从操作•可精简为半双工/单工通信•支持DMA•兼容I2S协议I2S是一种数字音频信号传输的专用协议。(比如我们的主控芯片,芯片里面存了一首音乐的数据,这个数据其实就是一个点一个点的电压数值,是数字信号。

2024-05-16 20:22:14 1497 3

原创 SPI通信(使用SPI读写W25Q64)

移位寄存器:有一个时钟输入端。因为SPI一般都是高位先行的,所以,每来一个时钟,移位寄存器都会向左进行移位。移位寄存器时钟源:是由主机提供的,这里叫波特率发生器。它产生的时钟驱动主机的移位寄存器进行移位。同时,这个时钟也通过SCK引脚进行输出,接到从机的移位寄存器。移位寄存器接法:主机移位寄存器左边移出去的数据,通过MOSI引脚,输入到从机移位寄存器的有右边。从机左边移出去的数据,通过MISO引脚,输入到主机移位寄存器的右边。SS是低电平有效,SS从高变到低,是不是就代表选中了某个从机,这就是通信的开始。S

2024-05-15 20:55:11 1205

原创 基于STM32F401RET6智能锁项目(BS82166A_3触摸按键)

写设置:起始条件+一个字节(触摸芯片器件地址+W)+从机回响应信号+主机发送命令字节+从机回响应信号+主机发送起始信号+一个字节(触摸芯片器件地址+R)+从机回响应信号+读取输出(从机发送)+主机发送停止信号读1个字节设置:起始条件+一个字节(触摸芯片器件地址+R)+从机回响应信号+主机发送命令字节+从机回响应信号+主机发送起始信号+一个字节(触摸芯片器件地址+R)+从机回响应信号+读取输出(从机发送)+主机发送停止信号

2024-05-14 19:40:29 1093

原创 基于STM32F401RET6智能锁项目(AT24C0X存储芯片)

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息存储介质:E2PROM通讯接口:I2C总线容量:256字节。

2024-05-13 18:08:41 960

原创 STM32_IIC通信

• STM32 内部集成了硬件 I2C 收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻 CPU 的负担• 支持多主机模型• 支持 7 位 /10 位地址模式• 支持不同的通讯速度,标准速度 ( 高达 100 kHz) ,快速 ( 高达 400 kHz)• 支持 DMA• 兼容 SMBus 协议• STM32F103C8T6 硬件 I2C 资源: I2C1 、 I2C2(硬件I2C的资源是有限的,这也是硬件和软件的区别)

2024-05-12 20:17:57 1220

原创 基于STM32F401RET6智能锁项目(使用库函数点灯、按键)

1、首先,我们查看一下原理图,找到相对应的GPIO口LED_R低电平导通,LED4亮,所以LED_R的GPIO口需要配置一个低电平才能亮;LED_G低电平导通,LED3亮,所以LED_R的GPIO口需要配置一个低电平才能亮;

2024-05-10 16:14:49 597 1

原创 基于STM32F401RET6智能锁项目(环境搭建)

下载keil5,stm32f4xx的固件库以及stm32f4的芯片包keil官网:https://www2.keil.com/mdk5/stm32中国官网:https://www.stmcu.com.cn/

2024-05-09 20:34:24 446

原创 GUI-Guider软件使用

GUI是图形用户界面的缩写。它是一种通过图形图标和视觉指示器与电子设备进行交互的界面类型,与基于文本的界面相对。GUI通常用于软件应用程序、网站和操作系统中,以使用户体验更直观和用户友好。GUI元素的示例包括窗口、按钮、菜单和对话框。GUI界面设计软件:LVGL官方,也有非官方的GUI-Guider非官方,一开始NXP(恩智浦)公司开发自己使用,后来慢慢开源出来的。

2024-04-26 08:14:07 619

原创 LVGL移植

LVGL是一个开源的图形库,专为嵌入式系统设计。它提供了丰富的图形元素和功能,可以帮助开发者快速构建现代化的用户界面。LVGL具有跨平台的特性,支持多种操作系统和硬件平台,包括ARM Cortex-M,ESP32,Linux等。LVGL的特点包括高性能、低内存占用、可扩展性强等,使其成为嵌入式图形界面开发的理想选择。LVGL提供了丰富的文档和示例,使开发者可以快速上手并轻松定制自己的界面。Lvgl移植到STM32。

2024-04-25 14:01:19 1117

原创 STM32-DMA(软件出发、硬件触发)

直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调DMA请求的优先权。存储器和存储器之间的数据转运用软件触发。外设到存储器的数据转运,一般使用硬件触发。

2024-04-19 16:21:34 1772 1

原创 STM32-ADC(独立模式、双重模式)

18个通道:外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了,不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。逐次逼近型ADC:它是一个独立的8位逐次逼近型ADC芯片,这个ADC0809是一款经典的ADC芯片。现在单片机的性能和集成都有很大的提升,很多单片机内部就有ADC芯片,这样就不用外挂芯片了,引脚可以直接测电压,使用还是非常方便的。首先左边这里的IN0~IN7,是8路输入通道,通过通道选择开关,选中这一路,输入到这个点进行转换。

2024-04-16 17:59:47 1601 3

原创 RTC的基本概念以及相关例程

BKP本质上是RAM存储器,没有掉电不丢失的能力。VBAT的作用就是,当VDD断电时,BKP会切换到VBAT供电,这样可以继续维持BKP里面的数据,如果VDD断电,VBAT也没电,那BKP里面的数据就会清零。DS1302是外置的RTC芯片,这个芯片可以独立计时。

2024-04-14 19:34:32 1161 2

原创 KQM6600空气检测模块的使用以及实现

型空气质量检测模 块,使用MEMS VOC传感器件作为检测空气中有机化合物气体(VOC)的模块。UART通信数据输出,根据VOC数据计算和等效甲醛,CO2输出。其具有体积小,功耗低,灵敏度高,响应速度快等居多优点,广泛应用在空气质量检测及控制领域。

2024-03-31 17:17:03 1179 2

原创 基于缓冲区和基于非缓冲区的文件操作

数据在读取或写入时首先存储在内存缓冲区中,而不是直接访问磁盘。读取和写入操作可以在内存中进行,减少了对磁盘的频繁访问,提高了读写效率。缓冲区可以减少磁盘I/O操作的次数,从而提高性能和响应速度。数据直接从磁盘读取或写入,没有经过内存缓冲区。每次读取或写入都需要直接访问磁盘,可能导致频繁的磁盘I/O操作,影响性能。适用于对实时性要求高的场景,如实时数据处理等。综上所述,基于缓冲区的文件访问通常比基于非缓冲区的文件访问具有更好的性能和效率。

2024-03-10 11:16:40 468

原创 EXTI外部中断以及示例

EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒触发响应方式:中断响应/事件响应。

2024-03-07 20:45:59 1237

原创 有名管道的大小

管道:有名管道、无名管道通信:单工通信:固定的读端和写端 -- 广播半双工通信:同一时刻,只有有一方写,另外一方读:对讲机全双工通信:随时两方都能读写 -- 电话特点:管道属于半双工通信;先进先出;读取管道:read,当管道为空的时候,read会阻塞;管道中的内容一旦读取就没有了;管道的大小:64k -- 1024*64 = 65536字节管道写满,write会阻塞;

2024-02-23 16:51:00 473

原创 memcpy和strcat的区别

选择使用哪个函数取决于你的具体需求,如果需要简单地连接两个字符串,可以使用。如果需要复制任意类型的数据,可以使用。用于复制任意类型的数据,而。

2024-02-22 20:52:42 399

原创 OLED示例程序、keil的调试模式

调试方式串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能OLED简介OLED(Organic Light Emitting Diode):有机发光二极管OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点。

2024-02-21 02:00:00 1428

原创 mp3播放器

一、首先需要一个存放音乐文件的路径。

2024-02-20 19:58:38 881

原创 按键控制LED和光敏传感器控制蜂鸣器

把两个按键分别接在PB11、PB1上面,两个LED接在PA1和PA2上面。

2024-02-18 21:39:47 511

原创 GPIO输入

二值化输出是通过这个LM393芯片来完成,是一个电压比较器芯片,里面由两个独立的电压比较器电路,然后剩下的是VCC和GND供电,里面电容是一个电源供电的滤波电容,这个电压比较器其实就是一个运算放大器,当同向输入端的电压大于反向输入端的电压时,输出就会瞬间升高为最大值也就是输出接VCC;当按键按下时,PA0被直接下拉到GND,此时读取PA0口的电压就是低电平、当按键松手时,PA0被悬空,悬空意味着不确定,所以必须要求PA0是上拉输入的模式,否则就会出现引脚电压不确定的错误现象。

2024-02-08 11:09:49 963

原创 工程示例(LED、流水灯、蜂鸣器)

【代码】工程示例(LED、流水灯、蜂鸣器)

2024-02-07 08:15:00 586

原创 GPIO结构

这三种模式的电路结构如下,可以看到,在输入模式下,输出驱动器是断开的,端口只能输入而不能输出;上面这两个电阻可以选择位上拉工作、下拉工作或者都不工作,对应的就是上拉输入、下拉输入和浮空输入,然后输入通过施密特触发器进行波形整形后,连接到输入数据寄存器,另外这个输入保护这里写的是VDD或VDD_FT(这就是3.3v端口和容忍5v端口(它的上面保护二极管要做一下处理,要不然直接接VDD3.3v的话,外部再接入5v电压就会导致上边二极管开启,并且产生比较大的电流,这个是不太妥当的)的区别。GPIOB也是一样。

2024-02-06 12:58:09 1868

原创 仿写ls -li 获取某一个路径下的所有文件的文件属性(不用管文件创建者和属组,也不要隐藏文件)

* 系统每次按块Io操作时块的大小(一般是512或1024)*/dev_t st_dev;/*如果是设备,返回文件使用的设备号,否则为 0*//* 最后访问时间,如read*/如果当前文件是链接文件,lstat获取的是链接文件(l),自己的属性;/*块的索引号 */如果当前文件是链接文件,stat获取的是链接文件原文件的属性;/* 所有者用户识别号*//* 创建时间 */gid_t st_gid;/* 组识别号 */dev_t st_rdev;

2024-01-27 17:13:32 796

原创 时间编程相关的API

将time_t类型的时间转换为本地时间,并以struct tm结构体返回。int tm_sec;int tm_min;int tm_sec;int tm_min;形参:timep 日历时间 也就是time获取的结果。形参:timep 日历时间 也就是time获取的结果。形参:timep 日历时间 也就是time获取的结果。: 获取当前的系统时间,并以time_t类型返回。返回值:关于时间的结构体。返回值:关于时间的结构体。

2024-01-27 08:45:00 958

原创 目录操作(实现ls -i的功能(加一个文件类型))

* file name (null-terminated) 文件名,最长255字符 *//* length of this d_name 文件名长 *//* the type of d_name 文件类型 */off_t d_off;/* offset to this dirent 在目录文件中的偏移 *//* inode number 索引节点号 */形参:dirp:opendir打开获取到的目录流指针。形参:name:要打开的目录的路径/名字。返回值:成功DIR *类型的目录流指针。

2024-01-26 20:09:30 491

原创 基于非缓冲区文件操作(实现cp的功能)

mode:如果flag里面用了O_CREAT,此时需要提供第三个参数,第三个参数就是文件的权限;offset:偏移量(+往文件末尾方向偏移,-往文件开头偏移)返回值:先做后面的光标偏移,返回光标偏移之后的位置到文件开头的偏移量;O_CREAT -- 文件不存在,创建,存在,不起作用。返回值:成功真正读取到的字节数(读到文件末尾,返回0)pathname -- 文件的路径。形参:fd -- open的返回值。形参:fd -- open的返回值。O_WRONLY -- 只写。形参:fp:open的返回值。

2024-01-25 16:07:47 803

智能锁(远程开锁、指纹开锁、密码开锁、刷卡开锁)

按键功能:输入密码,并能根据密码来决定开门还是进入管理员模式 密码功能:能够更换开门密码/管理员密码,且具有掉电不丢失功能 刷卡功能:能够判断卡片是否登记;刷卡开门;删除/登记开门卡片 指纹功能:指纹开门;删除/登记指纹 语音功能:播放不同功能的语言提示 门铃功能:机械开关控制门铃响 阿里云服务器接入:连接阿里云服务器,可以上报设备信息,也可以通过服务器端无线控制,如修改密码、恢复出厂设置、调节音量大小、远程开门等

2024-07-19

基于STM32的空气质量检测仪

空气质量检测仪是一个检测室内空气的产品,其主要功能:温湿度检测、甲醛浓度检测、CO2浓度检测、烟雾、光照等。使用DHT11,DHT11,KQM6600,烟雾传感器,光照光照传感器将采集的数据通过ESP8266模块上传到云端和手机 APP 平台上,数据显示功能是通过 OLED 进行相关数据的显示。 1,通过DHT11,KQM6600,烟雾传感器,光照光照传感器,实时采集相关数据 2,语音播报的使用 3,将实时数据显示在LCD屏幕上,方便用户查看 4,通过ESP8266模块连接WIFI。 5,flash存储WIFI名和WIFI密码,方便更换WIFI连接。 6,通过连接外网获取时间节点,校准开发版的时间,并在LCD屏幕上实时显示 7,将数据上传到云平台,并且可以通过下发命令,实现控制设备LED灯的亮灭

2024-05-18

C语言链表学生管理系统

学生管理系统 主要功能(增删查改)

2024-01-10

C语言 自动银行服务部分功能

为银行提供处理个人业务往来的功能(包括存款、取款、显示余额、退出)

2023-12-24

空空如也

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

TA关注的人

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