自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PCB旋转不了元器件原因

AD在画PCB中旋转元器件需要鼠标左键双击选中元器件且左键按住不放,之后点空格键即可旋转。

2024-07-05 22:46:56 91

原创 AD PCB板子裁剪与泪滴设置

在焊接PCB时,为了防止多次焊接导至焊盘脱落可以加大焊点的接触面积,因此在绘制PCB时增加泪滴可改善焊盘脱落的情况,操作如下,点击工具中的teardrops,然后默认选项,点击确定即可设置成功。首先,选择选择板子的机械层,之后选择画线。在原来的板子上画上自己想要裁剪的图形。之后,选择按照所画的线裁剪板子即可,如下。

2024-06-29 21:50:05 190

原创 AD如何将厂家的元器件库,添加到自己的元器件库

打开原理图和封装后框选,之后crl+C复制,之后点开自己的原理图库和封装库,随便单击一个元器件,之后ctl+V复制到自己的库中即可。首先,去官网下载对应芯片的原理图和封装,之后用分别双击打开原理图和封装。之后打开自己的原理图库和封装库。之后在,自己的库中就可以找到该元器件了。

2024-06-29 21:40:02 236

原创 同一PWM不同通道不可以设置不同的频率

通常情况下,PWM(脉冲宽度调制)在同一个设备或芯片的不同通道是共享同一时钟源的,因此它们通常无法设置不同的频率。这是因为PWM的频率由整个设备或芯片的时钟控制,而不是由各个通道单独控制。如果需要不同频率的PWM信号,通常需要使用多个PWM模块或多个独立的PWM控制器。每个PWM控制器可以设置不同的时钟源和频率,从而实现不同频率的PWM输出。总结来说,同一PWM控制器的不同通道通常无法设置不同的频率,因为它们共享同一个时钟源和控制逻辑。

2024-06-28 13:48:06 111

原创 vscode搭建LVGL PC模拟器

首先准备资源:2.源码下载:可以下载百问网的PC模拟器代码2.资源安装:VScode安装c/c++相关插件推荐离线安装,MinGW离线安装包有2个下载路径当前最新的版本是8.1下载cmake下载安装即可,也可以直接在vscode中安装。

2024-05-31 12:05:04 550

原创 单片机0xFFFFFFFE死机问题解决

最近在忙公司项目的时候,要调试一个新功能,防止BootLoader的干扰,故将BootLoader屏蔽了,直接将app的中断向量表改为默认的,发现运行不了,将所有代码屏蔽掉,只留一个系统滴答定时器,和一个gpio控制灯光闪烁。发现还是运行不了。卡死在如下界面:0xFFFFFFFE 0000 MOVS r0,r0 卡死在了这一句汇编代码。很明显这个地址已经超出了mcu内存的寻址范围。经过多次测试都是这个问题。

2024-04-24 10:18:06 448

原创 新塘单片机使用,栈区设置过小问题

在使用新塘单片机时,发现了个有意思的问题。问题是设置栈区过小,而导致的数据计算时局部变量占用到了全局变量的空间,并将空间里的内容替换成了局部变量计算的值。如下图,这是修改之后的栈区的内存,没修改时的值为512个字节。因为程序实现的功能较少,就分配得比较少。具体为什么不是栈溢出,而是占用到了全局变量的内存还待分析。

2024-04-22 18:50:22 119

原创 稳压管,三极管描述

如下图,原理分析,当输入24V时,到b极5.6V稳压,之后ce导通,负载那边电压往上升,之后升至大于5.6V时就会出现截止,之后电流又跑到b极,重复上面步骤。因为流过稳压管的电流为2mA,所以电流的总量差不多为2mA,因此流过负载的电流就会小,满足不了电路需求。三极管一般为流控流型的芯片(即电流控制电流),用Ib的电流控制Ic的电流,Ib有电流时,IC才有电流。三极管还具有放大功能IC上面的电流一般成IB上面的90~100倍,即b点上的电流是1mA时,则c点到e点的电流则约为100mA。

2024-04-19 18:21:21 141

原创 制作元器件BOM

footprint是指元器件在PCB板上的封装,Cost是指元器件价格。可以根据软件从原理图中到处BOM表。

2024-04-19 16:27:40 174

原创 电容选择、电路分析

如果图的整流电路,因为二极管的导通电压为0.7V所以,交流电通过时0~0.7V是不通电的,因此他的电压正弦波0~0.7V是没有电压的。,刚开始全桥整流电路给电容充电,充到一定时间后电压下降,出现截止。之后由电容给负载放电,之后电容电压下降。一般在整流桥中选的二极管耐压值=2.8*输入电压,如输入为24V,则二极管的耐压必须大于67.2V。瓷片电容(无极性):容量小,精度高。多用于滤波电路,震荡电路中。如下图公式,容抗与频率和容量相反,频率越高容抗越大(高频滤波),这是没有加上电容前的整流电路传出来的波形。

2024-04-19 15:50:45 137

原创 电容工作原理

在整流滤波中,电容越大,输出的电压波动越小,滤波效果越好。和其有关的是电流和放电时间,如果输出电流越大,电压也越大,纹波就越大。所以不管注入的水是否变化,输出都是一样的,起到了一个稳定的作用。以此类推电容具有对电压进行滤波的作用,从而输出平稳的电压。电容当前存储的电压越低,容抗越低,即压差越小,容抗越大。如果把电容当成水缸,则C为水缸底面积,水高度为V,水总量即为Q。为电压纹波,即波形的电压差,及充电电容允许下降的电压。R为充电的电阻,因为相同电压充电电阻越大,充电的时间就越久,越小,充电时间就越快。

2024-04-17 11:46:57 248

原创 全桥整流降压电路

电流从正极出来,到达整合电路的1点,由于二极管不能反向导通,所以电流流到2点。到达4点后因为在4点的电压比1点的电压低,没法形成正向导通的电压差,所以4点流到了3点。在3点时同样是因为2带你的电压比5点高,所以够不成单向导通的电压差,所以电流从3点回到交流电负极。该电路首先将输入的交流电经过全桥整流电路,将其转变成直流电。之后经过LM7815降压模块,将23V的直流电降至15V,再通过LM7805次降15V的直流电降至5V。输入的电流为交流电,如下图所示是一个正弦波,一半是正一半是负,因此频率为50Hz。

2024-04-17 10:05:45 301

原创 关于单片机中中断向量表找不到,而无法触发中断的的问题

事情是这样的,公司产品使用了某单片机做主控,由于一些操作把原来的主控换掉了(换成了同一型号的新的主控,且没有烧录过任何程序)。之后使用keil5将自己写的BootLoader烧录进去,再将APP烧录进去,之后发现程序居然没有运行起来。之后使用他官方的烧录工具将程序烧录进去就可以正常运行,之后再使用keil5重复第一次的步骤就没有这个问题了。目前确定的是APP应该是没有找到中断向量表,具体为什么会没找到,但使用了他的烧录工具后又能找到了,还没有找到具体是什么原因。

2024-04-02 16:28:24 134

原创 LVGL移植

2.检查占用的ram的大小是否超出芯片的ram空间,这个大小是用于实现lvgl的堆区创建。每个界面空间的内存都需要从这里申请。4.设置buffer大小,根据项目需要自行定义。芯片资源足够的话,则需要考虑。1.前期就是将lvgl的文件添加到工程里,根据参考网上即可。3.设置品目的宽和长,将对应的宏定义设置好。6. 设置定时器,调用lvgl心跳。使用LVGL8.2.0版本。添加完成后,进行一下配置。5.设置lcd打点函数。

2024-02-06 13:32:48 375 1

原创 LVGL显示按钮

可以通过不同的API函数,获取这个event事件的信息,进行一些判断和处理。如上的操作判断该事件是否是单击事件。同时也可以使用事件获取到obj对象,将其打印出来,用于分析是哪个button对象调用了这个回调函数,操作如下,如下是创建按钮,以及在按钮上显示文本的步骤。

2024-01-14 21:07:14 504 1

原创 LVGL显示图片

首先准备一张图片,之后使用工具(如LVGL官网中的转换工具,将图片转成含有图片十六进制数组的.c文件),之后将图片资源(图片十六进制数组)进行添加。如下是图片的一个数据结构,其中包含图片的颜色,宽度,高度,数据大小,以及图片数据。如下是将图片资源实现出来的lvgl代码。

2024-01-14 20:46:46 603 1

原创 LVGL显示中文文本

lvgl本身是不支持显示中文的,如果想显示中文,需要通过工具进行中文图形的转换,将生成的字库导入工程中进行使用。如下,将字体设置到样式中去,同时设置样式的显示颜色,最后将样式添加到label对象中。lv_obj_align()--》设置字体居中,并且x和y的偏移量为0。将文字滚动显示,操作如下,

2024-01-14 20:36:28 985 1

原创 LVGL笔记-lv_obj对象

首先获取当前活动屏幕,之后通过lv_obj_set_xx(),设置大小,位置,矩形颜色等。分别设置长宽,x,y轴位置,背景颜色。lcd屏幕硬件初始化。

2024-01-14 20:18:47 507 1

原创 boot loader流程

正常情况下,未开发前,APP程序几乎占整个FLASH空间。在M3、M4内核里,APP应用程序前必须有vector(异常向量表),vector会存放在FLASH的开头。程序运行前首先设置SP寄存器,之后运行Reset Handler。

2024-01-13 16:32:39 372 1

原创 蓝牙SPP协议

SPP协议全称为serial port profile,意思为通过蓝牙实现的串口数据透传。如市面上常见的HC-05蓝牙模块,用的就是经典蓝牙的SPP协议。因此在低功耗蓝牙里没有定义SPP协议的标准,但在低功耗蓝牙里我们同样也可以使用蓝牙的服务与特性来实现SPP协议的功能。

2023-09-22 18:03:29 692 1

原创 蓝牙数据收发机制

read,即是读取设备某个特性的值。write,即是修改设备某个特性的值。write with No Response,也是修改设备某个特性的值,只是不需要设备回应。Notify是设备里的数据发生变化之后通知主机(手机)来取数据,此时需要在手机端订阅相应的通知才有效。indicate,与notify类似,不同在于indicate需要手机回应,而notify则不需要。在蓝牙收发是根据蓝牙特性实现的,一个特性可看作是蓝牙的一个数据点,数据的收发都要依托于这些数据点。每个特性都有着不同的属性,如可读、可写等。

2023-09-22 15:47:40 827 1

原创 蓝牙服务与特性

每个服务和特性都需要有一个UUID,其中UUID是蓝牙组织定义的 用于区分各个服务和特性的标识符,总长度为128bit。因此协议中定义了一个UUID的基地址,从而允许用户使用16bit的UUID,从而与该基地址拼接形成128bit的UUID。每个蓝牙设备都有若干个服务,每个服务下面有若干个特性,特性又有可读、可写、通知等。1.创建两个UUID,如1234、5678分别用于服务与特性的创建。3.创建服务,同时将创建好的特性放到服务里,并设置服务的UUID。最后,我们该如何创建自己想要的服务与特性呢?

2023-09-22 15:05:28 196 2

原创 蓝牙状态切换

当蓝牙上电后,会进入就绪态。进行开始广播操作后,进入广播 态。使用其他蓝牙设备对其进行连接,此时进入连接态。当断开连接后,会重新回到就绪态(回到就绪态后会搜不到,是因为此时不处于广播态)。在实际使用时,我们希望断开连接后,可以立马被搜索到并且连接。这时候我们就需要在它进入就绪态后,使其再次进入到广播态。可使用中断函数来处理控制蓝牙状态的变化。

2023-09-21 18:57:59 118

原创 蓝牙扫描响应详解

如下图所示,蓝牙广播是蓝牙设备主动发射的一些数据。而扫描响应是蓝牙从机收到蓝牙主机的扫描请求后,回复给蓝牙主机扫描响应。扫描响应的数据格式和蓝牙广播数据格式是完全一样的。不同点在于广播数据是主动发射的,扫描响应数据是接收到其他设备扫描请求后才会触发的。其中可连接非定向是最常用的广播方式,可连接定向用于快速连接。

2023-09-21 18:17:09 156

原创 蓝牙广播详解

在无线电频谱中,相邻的频道之间存在重叠和干扰的问题。因此,蓝牙选择了相隔一定距离的频道来广播。具体来说,蓝牙的广播通道之间相互间隔2 MHz。这种间隔使得不同广播通道之间的频谱彼此分离,减少了干扰的可能性。如上图所示蓝牙频段为2402MHZ~2480MHZ,其中每两个2MHZ为一个信道。其中37、38、39为广播信道,其余则为数据信道。蓝牙就是在这三个信道上进行广播,其中广播数据由6字节MAC地址+31字节若干个AD structure组成。note:三个广播信道分布在不同的三个频率差距较大的位置。

2023-09-21 17:13:16 975

原创 杰理开发板:debug调试环境搭建

3.1.2.在路径..\fw-AC79_AIoT_SDK\apps\demo\demo_hello\board\wl82\board.c里把uart2的波特率进行设置(SDK代码里默认设置的波特率为100000,可是大多数的串口调试助手都没有这个波特率的选项),所以设置成你需要的比特率。注:串口没有打印,就是波特率没有设置对。3.1板子调试时需要使用到串口,SDK默认使用的调试串口为uart2。3.1.1.在使用前需要将app_config.h里面相应的宏定义打开。

2023-09-02 13:13:11 613 2

原创 linux板windows和Ubuntu三者ping通但使用MobaXterm连接不上Ubuntu,且开发板挂超时

开发板nfs挂载超时问题

2022-08-20 16:19:49 773

原创 配置opencv测试加载图片获取不到图片资源

主要原因是在你配置opencv的链接器的输入设置时,将两个依赖库都添加进去了,当程序运行时不知道选择哪一个库是debug还是release,所以为了保险起见,你用哪个模式就只配置一个就行了。

2022-01-15 17:53:19 2548

原创 Read-only filesystem (只读文件系统)——删除文件

在Linux系统内,当你尝试删除只读文件时,是无法删除掉的,必须修改他的用户权限。输入命令行:mount -o remount -rw /即可。注:rw后跟的是你所要重新挂载的目录名。

2021-12-28 14:30:58 12785

原创 Qt TCP多并发及心跳检测

TCP数据连接本身本不是一个多并发的网络通信方式,在Qt的TCP编程中与Linux下的TCP略有不同。在Qt中可通过线程+信号与槽机制来实现,TCP多并发特性。话不多说,上源码。Thread_erupt这个类主要是为了实现,多并发而设计的。.cpp文件:Thread_erupt::Thread_erupt(QTcpSocket *sock){ // 传参来的socket赋值给private中的socket socket = sock; time_count=0;

2021-12-17 14:56:27 2833

原创 QT 连接MySQL数据库的增删改查---云端数据库

在连接数据库前需确保电脑上已装有MySQL数据库,之后添加驱动,确保所写的QT程序能访问到外面的数据库设置如下点击添加,你自己创建的数据库信息(ip,端口号等都需对应---注意:这里连接的是云端的数据库),设置完成即可。新建数据库连接 QSqlDatabase db=QSqlDatabase::addDatabase("QODBC"); db.setHostName("47.98.61.60"); db.setPort(3306); db.setUserN.

2021-08-29 14:17:07 517

原创 QT简易版学生信息管理系统(mysql数据库--增删改查功能)

代码如下登录界面功能实现:from1.cpp#include "form1.h"#include "ui_form1.h"#include "widget.h"#include "ui_widget.h"#include "newuser.h"#include "ui_newuser.h"#include <QMessageBox>#include <QtSql/QSqlDatabase>#include <QSqlError>#inclu

2021-08-29 14:01:02 1179

原创 D:\STL\weici\main.cpp:27: error: no matching function for call to ‘find_if(std::vector<int>::iterato

编译错误的主要原因为:find_if中所调用的回调函数无法匹配。解决方法:只需要将回调函数的命名改成后面带数字的即可:如get3

2021-08-14 15:58:33 600

空空如也

空空如也

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

TA关注的人

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