自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C 字符串函数 sprintf()、snprintf() 详解_sprintf和snprintf

这样,一个整数的16进制字符串就很容易得到,但我们在打印16进制内容时,通常想要一种左边补0的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0就可以了。上面以 “%d” 进行的10进制打印同样也可以使用这种左边补0的方式。产生 “FFFFFFFF”,怎么回事?

2024-11-14 02:42:12 809

原创 C 内存管理(代码区、数据区、堆区、栈区)

1、申请方式:栈的空间由操作系统自动分配和释放,堆上的空间需要程序员使用malloc\free手动分配和释放。如果不释放会造成内存泄漏。2、申请大小限制和效率:栈的空间时有限的,在linux中,使用 ulimit -s 指令 ,可以看到看到栈的容量为8M。栈区以先进后出的方式自动分配时连续的内存单元,效率高。堆的大小受限与系统中有效的虚拟内存大小,系统是用链表来存储空闲的内存块,是不连续的。因此,堆的空间分配比较灵活,但容易产生内存碎片,相对来讲对效率低。1、用来存储临时变量。

2024-11-14 02:40:11 723

原创 C C++开发,基于SMTP协议的C++邮件接口实现_c++协议开发

3)注意邮箱服务的smtp开启,如果采用163邮箱服务出现异常返回,请查看其返回说明排查:如主题敏感过滤:正确返回:CMakeLists.txt:四、源码附件SendMail.h:SendMail.cpp:

2024-11-14 02:38:10 506

原创 【蓝桥杯嵌入式】

一 .LED灯1 .cubeMX配置2 .keil中代码二 .LCD屏(移植)三 .按键1 .一般按键2.长按键(按压时间>70ms)3 .双击按键(针对短按键)四.pwm波的输出1.cubeMX配置五 .输入捕获1 .原理2 .cubeMX配置3 .代码六 .ADC1 .cubeMX的配置2 .代码七 .IIC读写EEPROM1 . cubeMX配置2 .代码八 .串口通信1.cube2.代码。

2024-11-12 15:23:46 403

原创 【蓝桥杯嵌入式】(2)

若要改变占空比,__HAL_TIM_SetCompara(&htimx,TIM_CHANNEL_X,占空比值),对其占空比进行设置。如果需要存入一个int(两个字节)类型的数据,需要分开存放进行写入,注意写入需要一定的时间,因此需要进行一个10ms的延时。周期T=(psc+1)*ARR/内部时钟,其中的占空比由ARR来决定的,一般ARR设置为100,方便占空比的计算。是对要捕获的波进行频率,占空比的测量,实质时,对要捕获的波进行。找到官方给的lcd例程,将其复制到自己的工程文件夹中。

2024-11-12 15:21:46 252

原创 【蓝桥杯嵌入式】(1)

若要改变占空比,__HAL_TIM_SetCompara(&htimx,TIM_CHANNEL_X,占空比值),对其占空比进行设置。周期T=(psc+1)*ARR/内部时钟,其中的占空比由ARR来决定的,一般ARR设置为100,方便占空比的计算。把pb8~pb15配置成output, pd2也配置成output, 把pb8~pb15的输出引脚配置成高电平。是对要捕获的波进行频率,占空比的测量,实质时,对要捕获的波进行。在导入的.c文件后面加入下面代码,记得.h文件中声明。将其放在按键的.c文件中。

2024-11-12 15:19:45 262

原创 【蓝桥杯嵌入式·真题解析】第七届蓝桥杯嵌入式设计与开发项目——程序设计试题 “模拟液位检测警告系统”

if(ucLD2_Flag)//LD2液位变化等级指示灯,液位等级发生变化时,LD2以0.2秒为间隔闪烁5次。= ucSec) //1秒执行一次。if(usms==1000)//LD1运行状态指示灯,以1秒为间隔闪烁。= ucLevel1) //等级变化。if(ucLevel > ucLevel1) //液位升高。else //液位降低。//保存阈值部分在按键处理函数中。##### 5、串口。##### 8、整合。

2024-11-12 15:17:45 416

原创 【自动驾驶】8

对于AP框架,感知融合模块中,由于PreFusion通信数据量大,所以采用带宽较大的DDS(Data Distribution Service)通信协议,其余节点传入数据量较小,采用SOME/IP(Scalable Service-Oriented Middleware over IP)通信协议。融合模块与规控模块之间通信为DDS通信协议。规划控制模块内各节点之间均采用能够处理大数据量的DDS通信协议。

2024-11-12 15:15:44 396

原创 【组件】通用环形缓冲区模块_512字节环形fifo

其中,注意点是环形缓冲区“满”与“空”状态处理,这里使用了读、写指针的“翻转”标识,即当读、写指针访问到缓冲区最后地址时,访问地址折回初始地址,此时做一个翻转标识;当读地址和写地址相等时,如果读、写翻转标识相等,说明此时缓冲区为“空状态”,否则缓冲区为“满”状态。串口中断—>数据接收—>写入环形缓冲区—>数据处理线程读取环形缓冲区—>处理有效数据。注册一个512字节大小环形缓冲区,然后往缓冲区写入数据,接着读出来。

2024-11-12 15:13:44 458

原创 【粉丝福利社】一书读懂物联网:基础知识+运行机制+工程实现(文末送书-完结)

OTA是英文"Over-the-Air"的缩写,意为通过无线网络传输数据。在技术领域中,OTA通常指的是通过无线网络(如蜂窝网络或Wi-Fi)从远程服务器下载和安装软件更新或固件更新到设备上,而无需通过传统的有线连接或物理介质(如USB线或SD卡)进行更新。OTA技术被广泛应用于智能手机、电视机、汽车等设备上,方便用户获取最新的功能和修复bug。物联网是继计算机、互联网之后的第三次信息革命浪潮,是新一代信息技术的重要组成部分。当前,随着物联网的快速发展以及各种新技术的不断涌现,物联网的应用也越来越广泛。

2024-11-12 15:11:43 240

原创 【算法】手把手学会前缀和_前缀和算法

🎵这里从图示出发,我们也很容易观察到,若我们想要对其进行初始化只需要,用上部分矩阵加上左部分矩阵,但这个过程中中间部分被算了两次所以需要扣掉一次,最后再补上当前位置的值即可,即。🎵题目要求使用前缀和数组进行区间数的求和,就跟我们上面推导的公式一样,只需要初始化完前缀和数组后,根据公式输出结果就能够完成题目要求。🎵求区间和才是特意建立前缀和数组的目的,要求区间和的时候若我们每次都暴力地直接进行区间遍历,随着区间长度和计算次数的增加,会出现非常多次的重复计算。的两个矩阵,即 **s[x1-1, y2]**和。

2024-11-12 15:09:43 341

原创 【第十三届蓝桥杯单片机国赛】赛题题目+代码

本文是对第十三届蓝桥杯单片机国的代码解答赛题题目已在下展示如需代码,可自行提取:链接:https://pan.quark.cn/s/d89f5b7f4c0f提取码:mccH

2024-11-12 15:07:43 390

原创 【环境踩坑】pycharm使用qt时报错

解决方法:需要把qt相关库libqxcb.so添加到环境变量中。

2024-11-12 15:05:43 449

原创 【物联网】了解SPI通信:串行外设接口的基本工作原理,51、stm32实现SPI

SCLK(Serial Clock)线:提供主设备和从设备之间的同步时钟信号。MOSI(Master Output, Slave Input)线:主设备输出(发送)数据给从设备。MISO(Master Input, Slave Output)线:从设备输出(发送)数据给主设备。SS(Slave Select)线:用于选择与主设备进行通信的从设备。每个从设备都有一个对应的SS线。这些连接线通常通过短距离的点对点连接(如PCB布线)或者使用排线连接(如面包板实验)来实现。

2024-11-12 15:01:37 455

原创 【物联网】了解SPI通信:串行外设接口的基本工作原理,51、stm32实现SPI(1)

SPI是一种全双工、同步、串行通信接口,用于在微控制器和外部器件之间进行通信。它通过四根线(或更多)连接主设备(通常是微控制器)和一个或多个从设备(外部器件)。SPI通信具有以下几个主要特点:全双工(Full-Duplex)通信:主设备和从设备可以同时发送和接收数据,实现了同时的双向数据传输。同步传输:通信的主设备和从设备需要共享时钟信号,以确保数据的同步传输。串行通信:数据以位的形式通过单个引脚进行传输,逐位进行。硬件控制:SPI通信不需要复杂的协议来控制通信,而是通过硬件信号进行控制。

2024-11-12 14:59:36 507

原创 【物联网】HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi_小熊派bearpi-iot开发板硬件和软件架构

针对开发者面临的众多痛点,华为联合合作伙伴在2019华为全联接大会上发布了一站式IoT开发工具(小熊派BearPi),提供省时、可靠、安全、稳定的物联网开发工具。超低功耗高性能的MCU,丰富的外设引脚,多种行业案例扩展,支持NB-IoT、GPRS、WIFI、HiLink、4G CAT4/CAT1、Zigbee等模组,为开发者提供极大的创造空间。采用模块化接入,具有丰富的外设资源,板子的设计充分考虑用户的使用习惯进行布局,具备静音按键及高分辨率的LCD液晶屏,提供舒适的人机交互接口。

2024-11-12 14:57:36 335

原创 【物联网】-智能社会的分类

(温度、空间、触觉、嗅觉、听觉、视觉)(宽联接、广联接、多联接和深联接)将数据变成online,使智能化。感知物理世界,变成数字信号。基于大数据和人工智能的应用。(数字娈生、数字化生存)

2024-11-12 14:53:30 330

原创 【深度学习】(9) CNN中的混合域注意力机制(DANet,CBAM),附Tensorflow完整代码_danet代码

*(3)作用效果佳:**传统基于卷积神经网络的注意力机制更多的是关注对通道域的分析,局限于考虑特征图通道之间的作用关系。输入特征图想经过通道注意力机制,将权重和输入特征图相乘后再送入空间注意力机制,将归一化权重和空间注意力机制的输入特征图相乘,得到最终的特征图。DANet的总体流程图如下,输入图像分别经过位置注意力机制和通道注意力机制,将输出的特征图叠加layers.add(),得到输出特征图。,相较于其带来的少量的计算量的增加,CBAM的引入具有很局的性价比。,无论距离如何,类似的特征都会彼此相关。

2024-11-12 14:51:29 523

原创 VSCode GDB调试配置_vscode debug 参数

按Ctrl+Shift+D,打开Debug窗口默认是“No configurations”, 点击“F5”,会提示你配置GDB参数(选择gcc build and debug active file),配置文件名称为launch.json(配置参考3)配置完成后,再按F5, 会提示配置GCC,选择“Configure Task”, 选择“C/C++: build and debug active file”, 配置文件名称为task.json(配置参考2)

2024-11-11 16:08:53 1108

原创 VSCode GDB调试配置_vscode debug 参数(1)

按Ctrl+Shift+D,打开Debug窗口默认是“No configurations”, 点击“F5”,会提示你配置GDB参数(选择gcc build and debug active file),配置文件名称为launch.json(配置参考3)配置完成后,再按F5, 会提示配置GCC,选择“Configure Task”, 选择“C/C++: build and debug active file”, 配置文件名称为task.json(配置参考2)

2024-11-11 16:06:52 278

原创 Vofa+使用笔记(1):用Vofa+通过串口连接显示波形_vofa能网线连接吗

Vofa+有三种协议设置。

2024-11-11 16:02:36 595

原创 VMware ubuntu20

在win10下安装虚拟机,此虚拟机作为服务器使用,但是wi10电脑经常开关机,有的情况下,关机前没有主动关闭虚拟机,到此服务器需要收到重启,且数据容易丢失,配置 win10开机时 虚拟机无图形化界面自动启动,关机时,自动先关闭虚拟机,然后在关机!2.双击登录,点击添加,浏览,会弹出浏览对话框,把vm_start.bat文件复制到这个位置即可,再次选择这个bat文件,(最后应用或确定,此项是开机登录后自动启动vm的操作)。3.手动执行测试上述文件,看虚拟机是否启动成功和关闭成功!

2024-11-11 15:50:09 280

原创 VLC实现简单的视频播放器——Qt_qt使用libvlc和vlc-qt的区别

按流程和功能进行叙述吧。

2024-11-11 15:48:08 492 1

原创 Vivado全版本下载分享_vivado2015下载(1)

Vivado是由Xilinx公司开发的一款用于FPGA设计和开发的综合设计环境。它包括了高层次综合(HLS)、逻辑设计、约束管理、IP核管理、仿真、综合、实现和调试等功能,支持面向最新FPGA器件的设计。这里分享一下Vivado的电脑安装配置推荐,以及​各版本Vivado下载链接。​。

2024-11-11 15:44:03 392

原创 Vite插件大全_vite-plugin-mpa

【代码】Vite插件大全_vite-plugin-mpa。

2024-11-11 15:42:02 824

原创 Visual Studio Code PlatformIo IDE 新建项目下载慢的解决办法_platformio创建工程太慢

--------------------------我是分割线-----------------------------------------------------------我是分割线2023-03-23--------------------------------最近我又发现了一个方法,不知道是不是百分百有效,操作步骤如下:1.新建项目之后(New Project),看到转圈圈后取消(一般比较难成功)2.点击Open Project,找到刚刚新建失败的项目,选择打开。

2024-11-11 15:40:02 1576

原创 Visual Studio Code PlatformIo IDE 新建项目下载慢的解决办法_platformio创建工程太慢(2)

--------------------------我是分割线2023-03-23-----------------------------------------------------------我是分割线2023-03-23-----------------------------------------------------------我是分割线--------------------------------2.点击Open Project,找到刚刚新建失败的项目,选择打开。

2024-11-11 15:38:02 743

原创 Visual Studio Code PlatformIo IDE 新建项目下载慢的解决办法_platformio创建工程太慢(1)

至于原因,大家可以看看官方说明:How to download packages manually?Chinese mirror of the package registry目前看似乎没有完美的解决办法,官方正在找对国内好的镜像服务器,但似乎不容易,且目前也没支持自定义镜像服务器地址,当前官方镜像支持最好的应该是手机的移动网络---------------------------我是分割线-------------------------------------------------------

2024-11-11 15:36:01 1158

原创 vim 操作命令大全_vim命令大全

大致有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。vim提供了:make来编译程序,默认调用的是make, 如果你当前目录下有makefile,简单地:make即可。%f表示文件名,%l表示行号, %m表示错误信息,其它的还不能理解。其中:grep是调用外部的grep程序,而:vimgrep是vim自己的查找算法。g的含义是如果一个模式在一行中多次出现,则这一行也在结果中多次出现。

2024-11-11 15:29:50 774

原创 V4L2视频采集的基本流程_v4l2 视频采集后输出视频

v4l2捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必须通过某些手段来转换地址。数据缓存采用FIFO的方式,当应用程序调用缓存数据时,缓存队列将最先采集到的 视频数据缓存送出,并重新采集一张视频数据。// 数据流类型,必须永远是V4L2_BUF_TYPE_VIDEO_CAPTURE。// 数据流类型,必须永远是V4L2_BUF_TYPE_VIDEO_CAPTURE。内存映射方式:把设备里的内存映射到应用程序中的内存控件,直接处理设备内存,这是一种有效的方式。

2024-11-11 15:20:34 368

原创 V4L2框架概述

取消一个事件的订阅,V4L2_EVENT_ALL类型可以用于取消所有事件的订阅。video_device_release() // 仅仅调用kfree释放分配的内存,用于动态分配情况下。和上面差不多,但是使用 filp->private_data 这一数据源,实际上它是指向最新的一个v4l2_fh的。video_device_release_empty() // 不做任何事情,静态变量。如果是只有一个entry,返回1,否则返回0,如果fh为空也返回0。

2024-11-11 15:18:33 522

原创 LCD12864(ST7565P)字符汉字显示(STM32F103)_st7565p驱动

3、写数据4、写命令5、清屏6、驱动程序7、设置显示位置8、字符显示9、字符串显示10、单个汉字或图片显示11、多个汉字显示12、主程序。

2024-11-10 03:50:13 303

原创 LCD DRM驱动框架分析二_drm lcd初始化流程

该架构会弥补之前API的不足,由于原先的API不支持同时更新整个DRM显示pipeline的状态,因此KMS过程中会出现一些中间状态,容易造成开发者不希望看见的结果,影响用户体验。该函数依次对本次commit的旧状态,即原先的状态对应的commit(将显示控制器置成oldstate的commit)中相应的事件进行等待。事实上helper函数并不万能,只是抽象出了大多数驱动程序应该共享的行为,而特定于硬件的部分,则需要以回调函数的形式提供给helper函数,这个回调函数组由。函数触发这个创建操作的。

2024-11-10 03:48:12 539

原创 LCD DRM驱动框架分析二_drm lcd初始化流程(1)

【代码】LCD DRM驱动框架分析二_drm lcd初始化流程(1)

2024-11-10 03:46:12 746

原创 Latex写算法的伪代码排版_latex 算法 or and

algorithm2e包可能会与其它包产生冲突,一个常见的错误提示是“Too many }'…

2024-11-10 03:44:11 962

原创 Latex写算法的伪代码排版_latex 算法 or and(1)

前期准备[plain] view plain copy代码:[plain] view plain copy代码:[plain] view plain copyexample 3代码:[plain] view plain copy代码:[plain] view plain copyalgorithm2e包可能会与其它包产生冲突,一个常见的错误提示是“Too many }'…”。为了解决这个问题,要在引入algorithm2e包之前加入下面的命令:[plain] view pla

2024-11-10 03:42:10 814

原创 Keil添加Cppcheck_cppcheck下载

步骤3选择cppcheck.exe。(根据自己实际安装路劲选择)步骤4框中输入 --enable=all。$P是keil软件参数,可以自己修改成别的。步骤2名字可以随便写。

2024-11-10 03:38:02 661

原创 Keil uVision4 创建51单片机工程

在学习51单片机的过程当中,我们需要使用 Keil uVision4 来创建一个项目,今天就来图示一下创建的流程。

2024-11-10 03:33:57 780

原创 KDAB CEO推荐:Qt开发、调试、诊断的十大工具_qt 程序的性能分析工具

现在您不需要成为C++标准的专家,就能去进行细微的、却能大幅提高您代码质量的修改。如果您一直身处Qt开发的前沿,您可能知道许多类似的工具,但无论您的专业水平如何,我们相信您都能在这里发现一些新东西。这是每个Qt开发者都需要掌握的诀窍。有时,在应用程序中找不到性能问题,问题出在多进程交互中,隐藏在驱动程序栈中,或者是您调用操作系统的方式导致的。通过显示应用程序的峰值内存使用量、内存泄漏的函数、最大的内存分配者和极大多数临时分配的内存,您将能够真正精准定位应用程序内存的使用情况,并研究如何最小化其内存消耗。

2024-11-10 03:31:56 848

原创 js获取当前服务器信息,js获取当前URL、参数、端口、IP等服务器信息

6,设置或获取 location 或 URL 的 hostname 和 port 号码。document.location.host //表示当前域名 + 端口号。5,设置或获取 href 属性中在井号“#”后面的分段。7,设置或获取 href 属性中跟在问号后面的部分。3,设置或获取与 URL 关联的端口号码。1,设置或获取对象指定的文件名或路径。2,设置或获取整个 URL 为字符串。8,获取变量的值(截取等号后面的部分)4,设置或获取 URL 的协议部分。9,用来得到当前网页的域名。

2024-11-10 03:29:56 525

空空如也

空空如也

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

TA关注的人

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