自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QML_BusyIndicator控件修改颜色

现在需求是改变,上面控件的样式,主要是颜色。

2024-03-18 12:00:29 366

原创 电路设计_六层电路板设计规则

靠近接地平面的第2层是最好的布线层,可以用来布时钟等高风险的信号线。在确保RF回流路径的条件下,也可以用第5层作为其他的高风险布线的布线层。第1层和第2层、第5层和第6层应采用交叉布线。第3层是最优的布线层,时钟等高风险线必须布在这一层,可以保证信号完整性和对EM能量进行抵制。这种方案有4个布线层和两个参考平面,但电源平面和地平面之间夹有两个信号层,电源平面与接地平面之间不存在任何电源退耦作用。由于第3层靠近地平面,因此它是最好的布线层,应安排时钟等高风险线。第1层、第4层、第6层是可布线层。

2024-02-28 09:52:46 411

原创 Makefile从零基础到入门到熟练使用

解释:filter函数操作变量C中符合%/这种类型的字符,filter-out函数操作变量C中符合%/这种类型剩下的所有字符。:变量A在定义的时候变量C还没定义所以是空,变量B是延时变量只要在用到的时候才会看变量C的值是多少。解释:patsubst函数会操作files2中的所有文件名替换成a.d b.d c.d e.d。1、目标文件test依赖a.o和b.o两个文件,a.o依赖a.c文件,b.o依赖b.c文件。说明:变量dep_files会打印a.d b.d c.d e.d。

2023-12-08 14:58:10 134

原创 LVGL_多界面切换

3、切换不同界面显示(lv_scr_load_anim(page2, LV_SCR_LOAD_ANIM_OVER_LEFT, 300, 0, false);2、加载一个界面显示(lv_scr_load(page1);1、创建多个界面(create_page1();

2023-11-04 21:37:36 1264

原创 SourceInsight_编码格式问题

使用KEIL开发,在编辑代码是非常不方便,所以只用KEIL+STM32CUBEMX+SourceInsight的开发方式。解决:保证KEIL和SourceInsight的编码格式一致就好了。问题1: KEIL工程直接导入有乱码存在。

2023-10-31 10:43:07 145

原创 嵌入式Linux_学习路线+基础知识

说明:u-boot是一大块学起来需要三到六个月比较耗时,也属于比较落后的知识点,所以暂时不学习,内核也是如此暂时不学习,从应用层入手,先入门再深入。解析:把hello程序放入目录/home/book下面,然后把该目录加入环境变量,然后就可以直接输入hello执行了。hello.c程序编译出hello,是不能直接输入hello执行的,因为hello没有加入环境变量。注意:命令选项使用中括号[]的话就是可选的,如果是尖括号<>就是必选参数。注意:该方法是临时的,只在本终端中有效,更换终端后需要重新设置。

2023-10-25 10:21:39 295

原创 LVGL_文件系统FS

LVG 内置支持以下文件系统:1、FATFS2、STDIO (Linux 和 Windows 都可以使用的 C 标准函数接口,比如:fopen, fread…)3、POSIX (Linux 和 Windows 都可以使用的 POSIX 函数接口,比如:open, read…)4、WIN32 (Windows 使用 Win32 API 函数接口比如:CreateFileA, ReadFile…)

2023-10-22 16:52:04 1074

原创 STM32CUBEMX_自研BOOT升级程序

这件事情源自公司一个产品已经开发完成并对外售卖了,只预留了一个USB口用于给单片机升级,但是有个比较坑的点就是,没有预留触发升级的按钮(使用USB插入时产生的5V也可以做一个电平指示),不改硬件的情况下只能通过软件想办法,在APP程序中操作片flash区域,写一个标志位,然后设备重启后会读flash的标志位,从而启动进入DFU模式进行升级,思路是这么个思路,但是不好好考虑其中的逻辑,设备很容易变成砖,最终只能返厂维修了,踩坑过程细节不讲了,直接上经过实践的代码。

2023-10-18 10:32:03 251

原创 LVGL_基础控件btnmatrix

注意:最好选用LV_EVENT_VALUE_CHANGED事件,因为LV_EVENT_CLICKED会在点击屏幕其他地方也会触发。13、设置按下时候按钮的颜色。

2023-10-16 20:44:53 326

原创 LVGL_基础控件文本框textarea

12、设置光标闪烁时间。

2023-10-16 19:28:03 674

原创 LVGL_基础控件线条line

1、创建基础空间line(只创建出来是没有东西显示的)5、坐标系反转(LCD坐标系和数学坐标系的Y轴相反)4、设置大小(超出部分会看不到)2、添加点,把这些点连成线。6、设置控件位于左下角。

2023-10-16 12:04:02 898

原创 C语言_用于ADC数据的均值滤波算法

在采集ADC值的时候一般都是多次采集然后,然后取平均值,改进型做法就是去掉最大最小值剩下的再取平均值。

2023-10-13 14:55:07 245

原创 STM32_PID通用算法增量式和位置式

此算法为入门级PID算法,调试好参数后可应用于温度控制、舵机控制、直流电机的转速控制和直流电机的角度控制等等,下面就以温度控制举例pid.c。

2023-10-13 14:19:33 565

原创 STM32CUBEMX_DMA串口空闲中断接收+接收发送缓冲区

我了解的串口接收指令的方式有:在这里插入图片描述1、接收数据中断+特定帧尾2、接收数据中断+空闲中断3、DMA接收+空闲中断我最推荐第三种,尤其是数据量比较大且频繁的时候串口配置my_it.c。

2023-10-13 13:52:03 795

原创 STM32_驱动蜂鸣器自定义库

功能说明:1、可以实现设置蜂鸣器的音调2、可以设置蜂鸣器连续鸣响次数3、设置连续鸣响时间间隔main.cHAL_Init();devInit();//设置鸣响次数3//设置音调等级while (1)devTask();buzzer.c1//调用devTask的周期/*************************蜂鸣器************************///周期200ms//鸣响100mselse//设置时钟频率0.5Khz。

2023-10-13 11:00:35 418

原创 STM32硬件IIC卡死问题和DMA发送数据异常问题

承接上面我的硬件环境,总线上挂着AT24C02和流量传感器,我需要实时获取流量传感器数据(10ms就读取一次花费时间0.3ms/次),当掉电不丢失数据改变时我需要写AT24C02(写一次花费时间1ms),这就让我觉得太占用资源了,需要用到DMA来干活了,发现如果两次读取时间间隔过短,比如小于1ms,用逻辑分析仪捕捉不到任何波形,也不清楚IIC是否是卡死了,还是不能这样操作,暂时没有找到有效解决办法,替代方案是:提高IIC通讯速度或者是每次DMA操作后延时1ms(还不如不用DMA了,直接用阻塞方式发送算了)

2023-10-13 09:57:01 1514 1

原创 STM32_DMA_多通道采集ADC出现错位现象

后出现adcSensorValue[0],adcSensorValue[3],adcSensorValue[6]…采集的是通道3的值并非是通道1的值。在不要采集ADC的时候,或是临时想要暂停采集的地方停止MDA工作,这样下次再调用HAL_ADC_Start_DMA(&hadc3,(unsigned int *)adcSensorValue,ADC_SENSOR_LEN);

2023-10-12 19:45:21 955

原创 LVGL_基础控件timer

2、创建基础控件定时器方法二。1、创建基础控件定时器。3、创建好定时器后启动。4、设置定时器执行次数。

2023-10-09 22:03:59 1608

原创 LVGL_基础空间圆弧arc

【代码】LVGL_基础空间圆弧arc。

2023-10-09 20:43:15 583

原创 LVGL_基础控件滑动条slider

3、其他方面参照控件bar。

2023-10-06 20:23:37 1781

原创 LVGL_基础控件进度条bar

【代码】LVGL_基础控件进度条bar。

2023-10-06 19:55:38 533

原创 LVGL_基础控件滚轮roller

【代码】LVGL_基础控件滚轮roller。

2023-10-06 17:56:56 722 1

原创 LVGL_基础控件dropdown

【代码】LVGL_基础控件dropdown。

2023-10-05 21:21:06 402 1

原创 LVGL_基础控件checkbox

【代码】LVGL_基础控件checkbox。

2023-10-05 20:26:54 359

原创 LVGL_基础控件Switch_Button

【代码】LVGL_基础控件Switch_Button。

2023-10-05 18:25:51 489

原创 LVGL_基础控件Button

最后要将组(Groups)与输入设备相关联: lv_indev_set_group(indev, g);其中 indev 是 lv_indev_drv_register();解释:鼠标滚轮的上下滚可以在导航模式切换控件的焦点,在焦点控件点击滚轮键就会进入编辑模式,此时再滚动滚轮就会改变滑动条的值。首先要创建一个 组(Groups) : lv_group_t * g = lv_group_create();然后将一个对象添加到 组(Groups) 中: lv_group_add_obj(g, obj);

2023-10-05 11:25:45 453

原创 LVGL_基础控件label

把自己建立的字体加入工程中/* 创建一个基础对象 label */// 创建一个label部件(对象),他的父对象是活动屏幕对象// 声明外部字库lv_label_set_text(label, "百问网嵌入式abcd123.,<>';'[]ABCD");// 显示文字(注意当前文件文本的编码格式,要使用 utf-8 编码)

2023-10-04 19:31:19 1136

原创 LVGL_基础知识

【代码】LVGL_基础知识。

2023-09-24 20:59:24 235

原创 STMCUBEMX_IIC_DMA_AT24C64读取和写入

2、使用DMA后,程序确实是变快了,但是也要注意一个问题,前一个时刻使用HAL_I2C_Mem_Read_DMA()函数把书从EEPROM读取出来了,下一时刻不能着急立马使用读取出来的值,因为此时DMA正在从IIC外设往内存中搬运数据,要等待DMA搬运完成,而使用HAL_I2C_Mem_Read()读取的话就没有这个问题,因为他是阻塞性函数,只有读取完成了程序才会往下继续执行。1、此例程只是从硬件IIC升级到DMA读写,因为暂时存储的掉电不丢失数据不多,一页就可以够用,不用担心跨页读写的问题。

2023-09-08 16:59:40 634 3

原创 STM32CUBEMX_创建时间片轮询架构的软件框架

然后写一个闪灯的测试程序可以发现整个工程按照我们的意愿编译成功并且可以正常运行。把实际的这两个目录文件夹从别的工程拷贝到本工程根目录下或者是自己新建。1、这种架构避免在更新STM32CUBEMX配置后把用户代码清除掉。2、利用这种时间片的架构可以使得代码架构清晰易于维护。1、使用STM32CUBEMX创建基础工程。开一个只有定时功能的定时器(中断1ms)必须要勾选microlib才能打印日志。3、构建基础的代码框架。添加文件之后的实际效果。2、新建用户代码目录。

2023-09-05 15:02:47 932

原创 Vivado2018的工程迁移到Vivado2019上

迁移很简单直接打开以后直接更新IP核后,即可重新编译工程。1、打开Vivado2019软件,准备打开工程。

2023-08-23 16:16:11 794

原创 Vivado2018.3版本_编译下载打包固化程序

在Vivado中开发导出硬件平台,然后在SDK中进行C语言的开发工作,然后把SDK编译生成的.elf文件加入Vivado工程中,编译生成.bit文件,转换成.mas文件,就可以固化到SPI接口的FLASH中了。1、在Vivado工程中导入.elf文件。3、把.bit文件转换成.mcs文件。2、替换之后重新编译生成.bit。5、程序固化进FALSH。

2023-08-21 18:03:18 283

原创 QML_计时控件功能实现

1、代码目录结构(新建的qt quick的工程)2、两个重要文件的源码。

2023-07-24 17:28:35 115

原创 QT项目的.pro文件说明

通过QT选项,可以声明项目所需的Qt模块,并指定所需的Qt版本。如果您的项目中使用了其他文件夹中的头文件,可以将这些文件夹添加到INCLUDEPATH中,以便编译器能够找到并包含它们。资源文件可以包含图像、字体、翻译文件等,通过将它们添加到资源文件中,可以方便地进行访问和使用。如果您在项目中使用了第三方库,需要在LIBS中添加相应的库名称和路径,以确保链接时能够正确地找到并使用这些库。通过在.pro文件中配置这些选项,您可以根据项目的需求和要求,定制和管理Qt项目的构建过程、依赖关系和设置。

2023-07-13 15:44:25 1016

原创 QT_Creator格式化工具使用

linux版本下载:https://sourceforge.net/projects/astyle/files/astyle/astyle%203.1/下载Astyle源码(https://sourceforge.net/projects/astyle/)为了确保代码格式整齐统一,使用代码格式化工具会将写的代码自动格式化以保证格式统一。写一个C++程序进行测试,会将没有格式对其的进行自动对齐,格式不对的自动纠正。1、下载安装工具(主要讲ubuntu的环境安装)4、优化使用(给格式化工具添加一个快捷键)

2023-07-13 13:46:10 1394

原创 QML_Switch控件_3选2的控制算法

见面中三个Switch控件,要求只能选中其中两个。

2023-07-12 13:52:51 429

原创 电机分类_控制方式

4、无刷电机(Brushless Motor):无刷电机是一种没有碳刷的电机,相对于传统的刷式电机,它们效率更高、寿命更长,并且产生较少的电磁干扰。综上所述,同步电机和步进电机在工作原理、控制方式、运动精度以及转矩特性等方面存在明显的区别,因此在不同的应用场景和需求下选择合适的电机类型非常重要。步进电机:步进电机的控制相对简单,只需要输入适当的脉冲信号即可驱动电机进行旋转,但实现高级的闭环控制则需要更复杂的系统。步进电机:步进电机可以通过逐步输入脉冲信号来驱动电机,每个脉冲信号使电机转动一个固定的步距。

2023-07-05 11:30:38 2058

原创 函数命名/变量命名_驼峰命名法

5、使用驼峰命名法:在很多编程语言中,使用驼峰命名法(CamelCase)来命名函数是常见的做法。1、小驼峰命名法(lower camel case):在小驼峰命名法中,第一个单词的首字母小写,之后的每个单词的首字母大写。小驼峰命名法(lower camel case):在小驼峰命名法中,第一个单词的首字母小写,之后的每个单词的首字母大写。给函数起一个合适的名字是很重要的,它能够反映函数的功能和用途,方便其他人阅读和理解代码。4、一致性:保持函数命名的一致性,可以根据项目或编程语言的命名规范来命名函数。

2023-07-04 16:06:02 446

原创 ESP32_IDF_基于win11的开发环境搭建

1、下载工具:https://www.espressif.com.cn/zh-hans/support/download/other-tools。或者是下载链接:https://dl.espressif.com/dl/esp-idf/?1、下载offline的链接:https://dl.espressif.cn/dl/esp-idf/2、使用指定的波特率下载:idf.py -p com2 -b 115200 flash。1、下载指令使用默认下在速率下载:idf.py -p com2 falsh。

2023-04-10 21:57:29 593 1

原创 电路设计_运算放大器应用

3、差分放大:利用电路参数的对称性和负反馈作用,有效地稳定静态工作点,以放大差模信号抑制共模信号为显著特征,广泛应用于直接耦合电路和测量电路的输入级。2、同向比例放大器:放大输入电压信号,在输入给单片机的AD采集。1、电压跟随:起到隔离作用,高阻抗变低阻抗。运算放大器是个万用宝,要好好利用起来,2、同向比例放大器应用。

2023-03-31 10:45:32 132

空空如也

空空如也

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

TA关注的人

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