自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (31)
  • 收藏
  • 关注

原创 OV2640图像出现细小条纹问题

原本 C5 C6 C21 C25 的大小我全部用的1uf,后面考虑到芯片发热严重。然后花大价钱买了47uf的电容,4课全部换上。2-电源,突然一天发现这个摄像头后面发热挺严重的,感觉是不是电源的问题呢。1-走线,看网上说所有的时钟线和同步线不要交叉,不要太长没有验证。1-走线这个问题排错需要重新打板子比较麻烦,暂时搁浅了。说明:条纹是随机生成的,有时候几根线,有时候10多根线。刚开始以为是自己电路问题,疯狂对走线,该代码都无果。上电一看,果然一切都正常了,一根条纹都没有了。

2023-09-27 16:09:10 409

原创 使用VS CODE测试nr_micro_shell

上篇说到使用dev-c++来编译nr_micro_shell,整体还是很方便的,不要写任何命令和文件就能完成编译,但是dev-c++这个工具并不是很好用,今天使用VS CODE 加 Cmake来完成编译,

2023-04-08 15:00:53 646 1

原创 移植使用nr_micro_shell

在使用linux和win系统的时候大家看到命令行也是很熟悉的了,大家的第一个hello程序应该都是控制台程序,在系统层面我们可以使用命令行操作我们的pc,那么在单片机里面通过串口怎么用命令操作单片机呢?显然第一想法是我们去自己写一个shell,我以前也写过,这样效率很低,还可能有bug,突然一天发现一个开源的纯c的shell。nr_micro_shell: shell for MCU. 单片机命令行交互。首先把代码弄下来;代码的结构作者已经写的很清楚了,我们只需要关注examples,inc,src。

2023-04-07 17:47:03 701

原创 从0使用TCP手撸http服务器六

上篇我们说到通过路由去返回不同的html页面,如果每一个页面都是一个数组的话,那么我们可能需要很多数组,里面很多内容都是一样的,这样子会浪费我们单片机很多flash,我们需要把共同的部分固定出来,每个页面不同的部分才定义一个数组。对于一个页面,其实html标准格式是不需要变化的,style,导航,body,js可能需要变化,于是我们可以设计一个标准的匹配模板:里面的%s就代表着style,导航,body,js。有了模板后,我们需要分别定义出style,导航,body,js ,JS还没用的,可以先不定义。

2023-03-28 13:39:11 290

原创 从0使用TCP手撸http服务器五

前面的例子我们只处理了一个url请求,在web中他们喜欢叫路由,那么我们也叫它路由吧。

2023-03-28 11:59:26 152

原创 从0使用TCP手撸http服务器四

我们前面的例子都是返回了一个字符串,并不是也合格的html数据,我们现在需要把html格式的页面发送过去,那么我们应该怎么发送一个文件呢,我单片机没有文件系统怎么办。看了我之前的教程的可以知道,我们可以吧html保存在数组里面,构建html页面可以去菜鸟教程里面偷点页面过来,在这里我们也去偷一个。,我们就偷这个页面过来吧,

2023-03-28 11:28:37 88

原创 从0使用TCP手撸http服务器三

上篇我们说到我们主动关闭了连接,如果不关闭,浏览器会一直在等待反馈,这是因为我们反馈的数据不是浏览器认识的数据,我们必须按照http协议返回数据,浏览器才会正常接收和关闭。反馈步骤:1-先构建http头部2-发送http头部3-发送数据。

2023-03-28 11:09:55 106

原创 从0使用TCP手撸http服务器二

虽然我们以及可以让浏览器获取到数据了,但是代码里面有一个主动关闭连接的操作,如果我们不主动关闭,浏览器则一直等待请求完成,这是为什么呢?这里其实就是用了win32的sock编程,更加详细的可以自行百度。1-实现一个tcp服务器,端口默认是80。4-服务器反馈数据给浏览器。3-服务器收到浏览器数据。

2023-03-28 10:55:22 263

原创 从0使用TCP手撸http服务器一

可能我们还能在纠结一下,因为我们发现了一个lwip,居然自带http服务器,然后去看了之后,要跑起来可不容易啊,看到很多读文件的操作,那岂不是要把html存到文件系统,那对芯片的存储要求也不低了,还需要看看shtm等,既然这么麻烦,还得担心自己的芯片flash得不得劲。在嵌入式系统,我们一般而言只需要获取设备的信息,读写参数,控制,升级等功能,那么接下来的教程主要实现以上的部分内容。1-基于TCP实现服务器。2-传输html文件。

2023-03-28 10:26:47 477

原创 QT-QStackedWidget多窗口应用

qt多窗口应用

2023-01-14 11:57:57 2994

原创 linux NC命令的本质

linux nc的本质

2022-11-21 17:21:10 798

原创 CH455G驱动数码管

ch455g数码管驱动

2022-10-27 14:28:30 2109 1

原创 QT使用QListWidget实现可拖拽列表

使用listwidget实现列表拖拽

2022-10-20 17:08:19 2480 4

原创 stm32c8t6运行freertos

目前主要优化了系统的资源占用,编译情况如下,代码控制在10K,RAM控制在7K,版本:FreeRTOS V9.0.0。1-不使用freeRTOS的内存管理。运行了6个task,正常运行。2-组件不能用动态方式。3-任务不能用动态方式。

2022-08-22 17:18:20 456

原创 ESP32 读写内部flash参数存储

esp32自定义参数存储

2022-08-22 13:39:11 6389 11

原创 ESP32-硬件SPI读取MCP3208

esp32硬件spi读取mcp3208

2022-08-02 17:34:43 2190

原创 Qt串口发送大量数据后无法接受和发送问题

版本5.9使用的qt官方库,初始化什么的就不多介绍了serialport使用方式,接收使用的槽函数,如下//串口连接信号和槽 QObject::connect(&qtCOM, &QSerialPort::readyRead, this, &MainWindow::serialPort_readyRead);发送使用的多线程,如下void qt_proto_thread::run(){ while(1) { .

2021-12-22 17:19:50 4832 11

原创 数据包封包拆包持续优化

昨天做梦,有朋友发现这种方式太浪费内存,写法和使用方式也过于繁琐,醒来后深度思考了一下。对以上又做了一次修改,这种精简了pack数据结构,也简化了用法,也节约了内存。首先定义新的数据结构,没错,这次就只剩下结构体了。//The copy function#define MCOPY(S,T,L) do{unsigned int i=0;for(;i<L;i++)S[i]=T[i];}while(0)//define a union to map the struct//this i.

2021-11-10 16:53:30 374

原创 关于数据的封包发送和拆包使用

/* 前言: * 我们在使用buf数字传输数据的时候,通常会用来传输各种数据类型。 * 一般的,我们会传输 char,short ,int ,float等,也包括各种 unsigned. * * * 一般的思路我们在发送的时候,会把数据一个个拆解成一个个byte,然后按顺序放到buf。 * 在拿数据的时候,再一个一个的byte去拼接成具体数据,如下: * //包装数据 buf[0]=Para.nv_list.sn>>24&0xff; buf[1]=P.

2021-11-09 13:31:46 1479

原创 SD卡STM32C8T6-FATFS文件系统的使用

1-关于移植,网上教程非常多了,没多少讲的,移植也比较简单,基本只要提供读写扇区函数就可以了。本次使用的是官网最新的0.4版本本文记录一下--读写文件功能--遍历目录和文件--使用的内存情况直接跳过移植,和SD卡驱动部分。文件读写-------------基本和C语言file操作一致,这几个函数基本不会陌生吧,流程也是打开,读写,关闭res =f_mount(&fs,"0:",1); //挂载SD卡 if(res) { }...

2021-10-20 17:55:17 1058

原创 关于LVGL下物理按键的使用

当时有一个想法,想用我珍藏3年全新未开封的mini开发板,使用LVGL显示,然后用物理按键控制,最终制作一个...好吧我编不下去了。其实就是想在LVGL界面下使用物理按键控制。 然后就在网上疯狂找使用物理按键控制的相关资料和方法,可想而知,如你们所愿,当时基本上是找不到的,翻墙不知道有没有。 接着只能想其它的办法了,当时也是绞尽脑汁。最后看到PC模拟器的官方历程是可以直接用键盘控制,然后就开始玩弄模拟器版本,最终发现了keyboard驱动,只需要把模拟器的keyboard驱动用...

2021-10-14 20:50:29 9334 1

原创 NRF52832 ESB通信

esb通信,也就是纯2.4g的一个通信,据说是兼容24L01+芯片,没有试过,这里是用两个nrf52832芯片做的通信实验。相关历程参考如下:历程里面注释确实不多。里面函数api介绍可以参考官方SDK文档:https://infocenter.nordicsemi.com/index.jspesb通信和24L01+芯片初始化内容大致是类似的,基本上就是初始化通信速度,模式,重发时间,通道,地址,等,小区别:esb多了一个回调函数。地址 =一个字节的包头+4个字节地..

2021-07-01 17:19:55 3563 2

原创 NRF52832输出互补PWM

特别说明:本文章需要使用过此pwm模块才会看明白,小白还是先去看看NRF52832芯片的pwm模块,如何再来看如何输出互补pwm。初步使用NRF52832芯片的pwm模块,因为模块不能直接输出互补pwm,实现思路是用中央对齐方式去实现。互补pwm有啥用,哈哈哈,旱的旱死,****先看看pwm的一些工作模式:要先理解这几种模式的特点1-共用模式:4个通道共用极性,比较值,意思就是说4路pwm的方向一样,占空比一样2-分组模式:2个通道分组共用一个极性和比较值,和共用模式类似,只是分

2021-03-15 17:05:21 1172 6

原创 stm32实现flash参数存储

此方法非常高效,使用结构体+联合体的方式实现flash的参数存储,到底有多简单高效,可以往后面看,如果觉得不高效,完全可以顺着网线来砍我。前提条件:1-flash的读写驱动程序,这里不做介绍实现思路:2-1结构体创建一个参数列表,大家知道结构体就是一个大箱子,里面放很多变量。2-2联合体创建一个结构体和数组的组合,联合体多个变量占用同一个内存,这个特性大家有没有一语惊醒你,没有也没关系,下面直接实现代码。#include <stdio.h>#include "stri

2021-02-27 16:51:53 2277

原创 QT-实现串口命令发送列表(三)

2- 读取配置文件生成命令列表实现思路:第一步先实现QT文件读取功能,设计参数列表读取文件使用c语言的文件读写,使用格式输入输出,方便存取数据第二步读取配置文件生成命令列表读取配置文件内容动态生成命令列表第一步先实现QT文件读取功能,设计参数列表读取文件因为逛了一圈Qfile, 感觉不熟悉,不太好实现格式输入输出,文件保存使用c语言实现。封装用c++.My_config_file.h#include "stdio.h"#define FILENAME "conf.

2020-11-26 20:01:50 1260

原创 QT-实现串口命令发送列表(二)

5- 双击按钮可以更改按钮名字实现思路:第一步需要实现可以双击的按钮:新建自己的按钮类,继承QPushButton,重写双击事件第二步需要实现对话框并可以输入名字:直接使用QInputDialog::getText实现双击事件代码:void my_btn::mouseDoubleClickEvent(QMouseEvent *ev) /*双击事件响应函数*/{ qDebug() << "mouseDoubleClickEvent ...

2020-11-18 16:23:16 434

原创 QT-对话框输入一行数据

14:02效果图代码QString dlgTitle=QStringLiteral("对话框");//对话框标题QString txtLabel=QStringLiteral("请输入新名字:");//对话框Label显示内容QString defaultInput=QStringLiteral("AT+CSQ");//对话框内输入框的默认内容QLineEdit::EchoMode echoMode=QLineEdit::Normal;//输入框的文本内容为正常显示//Q.

2020-11-16 14:13:44 742

原创 QT-实现按钮双击功能

实现思路:1- 新建一个类继承 QPushButton2- 重写 void mouseDoubleClickEvent(QMouseEvent *ev); /*双击事件响应函数*/全部源码:my_btn.h#ifndef MY_BTN_H#define MY_BTN_H#include <QWidget>#include <QPushButton>#include <QMouseEvent>class my_btn :public QPu

2020-11-13 18:43:14 2188

原创 QT-实现串口命令发送列表(一)

类似功能:当然功能不会实现这里的全部,只做一些基本的功能:1- 列表有输入框,发送按钮,单击按钮可以读取输入框文本发送2- 读取配置文件生成命令列表3- 可以吧命令列表信息保存到配置文件4- 可以增删命令列表5- 双击按钮可以更改按钮名字先实现第一个功能:1- 列表有输入框,发送按钮单击按钮可以读取输入框文本发送实现思路,就是参考前面实现下载列表1- 实现自己的类QWidget,继承QWidget,里面定义一些必要控件...

2020-11-13 15:13:22 1417

原创 QT-ListWidget实现下载列表

效果图:实现步骤:1- 新建项目,添加一个listWidget控件。2- 用代码创建一个QHBoxLayout水平布局的容器。3- 用代码创建控件添加到水平容器中。4- 用代码创建QWidget控件,把水平容器加入到QWidget中。5- 用代码创建QListWidgetItem控件,与QWidget控件关联,添加到listWidget控件中。完整代码:#include "mainwindow.h"#include "ui_mainwindow.h"...

2020-11-12 16:56:40 715

原创 QT-串口基本流程

添加串口库QT += core gui serialport添加必要头文件#include <QSerialPort> //提供访问串口的功能#include <QSerialPortInfo> //提供系统中存在的串口的信息初始化串口对象//创建串口对象QSerialPort serial;//设置串口名 Windows//serial.setPortName("COM3");//设置串口名 linuxse...

2020-11-05 17:30:35 623

原创 QT-按钮连接槽函数

15:26添加一个小按钮声明一下槽函数//声明槽函数public slots:void my_btn_callback(void);实现一下槽函数void myWindow::my_btn_callback(void){ qDebug() << "my_btn_callback !";}连接一下槽函数myWindow::myWindow(QWidget *parent) : QMainWindow(parent), u...

2020-11-05 15:48:02 8473

原创 ubuntu QT安装后的一些问题

Ubuntu Linux 下编译报错解决方案:sudo apt-get install clang解决方案:apt install make解决方案:sudo apt-get install libgl1-mesa-dev解决以上问题,基本上QT就可以正常运行了。

2020-11-05 15:39:50 203

原创 C语言的str函数

C语言的str函数有一个大坑,要慎用,碰到0就会返回,对于二进制数据来说很危险。void_printf(char*str,intlen){inti=0;for(i=0;i<len;i++)printf("%x",str[i]);printf("\n");}voidmain(void){charstr1[10]={'a','b','c',0,'d'};charstr2[10]={0};charstr3...

2020-11-03 19:05:22 3153

原创 FTP协议使用

FTP协议大家都知道是文件传输协议,那这个协议到底是怎么样的呢,怎么用C语言是实现一个客户端呢?我想通过这篇文章你能够理解FTP协议。1-首先我们先了解一下FTP的工作流程 FTP分为 FTP服务器,FTP客户端,一般我们只关注FTP客户端,这里也会只讲一下客户端。 1.1 命令端口连接 1.2 登录 1.3 数据端口连接(主动连接,被动连接) 主动连接:客户端打开一个数据端口给服务器连接 ...

2020-09-18 20:12:48 1313

原创 让你失业才能让你成长

正如标题一样,2020失业的人不在少数,作者也一样,4月底公司因为资金问题,公司面临倒闭,硬件,软件,测试,人事,供应链(一锅端),而我就是其中的软件工程师,电视中新闻中的情节就是这样突如其来。 刚开始失业那几天并没有什么担心的,和所有人一样认为今年找工作比较容易,也没着急投简历,也没着急面试。一周过去后开始找合适的公司投简历,基本上投递的公司都会邀约自己去面试,第一家的时候还是有些紧张的,很多概念也比较模糊,和技术聊了很久,觉得我懂的东西比较多,但是都不太精,所谓知其然知其所以然,加上我工资要的...

2020-07-28 19:43:48 565 1

原创 感受一下SPL06气压计+APM三阶互补的高度融合

不得不说,spl06气压计很强,原始数据也比较干净,短时间可以保持在30cm内浮动,滤波后在10cm内浮动。就是这么夸张。使用APM的三阶互补滤波融合出 高度,速度,效果也很不错。 可以看到,融合出来的速度也逼近于0,融合出来的高度的短时间漂移可以在5cm内,长时间会飘的很夸张(几米,几十米,几百米),这个就是气压计的通病了。具体还没有用到小飞机上试,后续试一下效果,现在...

2020-04-02 20:10:57 3877 3

原创 关于SPL06的使用

SPL06网上的质料实在是太少了,一个datasheet都要捣腾半天。代码在CSDN确实不少,要的积分也不少啊。SPL01的封装是一个比较坑的地方,虽然引脚和BMP820一样,但是上面的气孔就是瞎几把乱放的,来看看手册的引脚图。那个小圆点有多少人会认为是那个气孔(其实是焊盘上的点),也没有标明那到底是啥标志。来看看bmp280的引脚图。我就问你香不香?这样的图难道不好吗。...

2020-03-31 17:49:42 9226 10

原创 MFC中CString转char*,char[]

坑爹的MFC,定义了一套绑架的格式体系,虽然用c++开发,完全抛弃C语言的感觉。说一个简单的例子 比如我想用一个文件对话框打开一个文件进行读写,其实对话框返回的是文件的整个目录。而这个目录是一个CString类型,然后我的文件操作的驱动是c语言写的,只能使用char*或char[],那么久要从CString转char*了网上找了很多转化方式,目前只找到一种可以使用的。说...

2020-03-28 17:51:22 1389 1

原创 51单片机机器周期和定时器0使用

先说机器周期,最近玩51单片机,发现里面有强大的内部时钟,下载的居然可以随意修改,很骚。比以前的51确实好玩多了。感觉现在用51做东西完全不比32差了,还不知道性能怎么样。不好意思跑题了。这里先想一个问题,如果我改变了频率,程序中的延时函数,或者定时器,串口这些频率都变了,需要自己重新算才行。 51单片机的一个机器周期等于12个振荡周期,振荡周期其实就是晶振的...

2020-01-09 20:26:02 1819 1

从0使用TCP手撸http服务器六源码

从0使用TCP手撸http服务器六源码 上篇我们说到通过路由去返回不同的html页面,如果每一个页面都是一个数组的话,那么我们可能需要很多数组,里面很多内容都是一样的,这样子会浪费我们单片机很多flash,我们需要把共同的部分固定出来,每个页面不同的部分才定义一个数组

2023-03-28

stm32c8t6运行精简freertos

版本:FreeRTOS V9.0.0 目前主要优化了系统的资源占用,编译情况如下,代码控制在10K,RAM控制在7K,

2022-08-22

templateLVGL物理按键.rar

正点原子mini开发板加屏幕 演示视频:https://www.bilibili.com/video/BV1yT4y1F7Zp?from=search&seid=2354469538140714037&spm_id_from=333.337.0.0

2021-10-14

stm32-103c8x-mini-byhes-0.1+bmp280.rar

STM32+BMP280气压计IIC历程 使用IIC模式,高度效果一般,用到四轴上短时间(几十秒)基本能在1米以内,效果感人。

2020-03-31

stm32-BootLoader程序和app程序合并程序DOS+MFC

stm32-BootLoader程序和app程序合并程序DOS+MFC,可以合并BootLoader和app程序,有DOS和MFC两个程序

2019-04-18

stm32-PN532串口驱动

stm32-PN532串口驱动,读写NFC卡片,非常简单实用的驱动

2019-04-13

stm32-adc-dma传输案例

stm32-adc-dma传输案例,传输4个adc数据到一个数组里面。

2019-03-21

stm32-103c8x -定时器4路freq可变

stm32一个定时器输出四路pwm,占空比固定50%,频率可变,一般用于多个步进电机控制

2019-03-21

c语言实现http服务器浏览器实时刷新数据

c语言实现http服务器,浏览器页面上实时刷新服务器的数据

2018-09-28

c语言实现http服务器和浏览器进行数据交换

c语言实现http服务器和浏览器进行数据交换,使用post请求

2018-09-27

c语言实现http服务器

学习和理解http服务器的原理

2018-09-27

stm32-esp8266客户端驱动

stm32-esp8266客户端驱动,用于其它模式,也比较容易修改。

2018-09-20

最简单的stm32 RTOS

RTOS命名为HesOS,实现多任务切换,移植超简单,1ms调度一次, 实时性非常高

2018-09-14

stm32-DM9051-uip

stm32-dm9051最简单历程,用uip实现,实现最简单的tcp透传

2018-08-23

USMART调试组件源码学习

USMART调试组件源码学习,支持多类型参数,原子哥只支持int,本组件支持float和int共存,注释很全。

2018-08-22

任意串口BootLoader程序升级

自己写的BootLoader,可以支持任意串口升级下载程序,调试程序,内含稳定的串口协议。

2018-08-18

stm32 BootLoader简单跳转

BootLoader简单的跳转功能,理解基本原理,BootLoader简单的跳转功能,理解基本原理

2018-08-18

串口命令解析

解析串口内的想要的命令,解析串口内的想要的命令,解析串口内的想要的命令,

2018-02-09

stm32烧写源码(dos)

stm32烧写源码(dos)stm32烧写源码(dos)stm32烧写源码(dos)

2017-12-28

stm32串口烧录软件(DOS)

stm32串口烧录软件,更新代码非常的方便,使用官方库开发

2017-12-28

NRF24L01-stm32驱动

支持stm32驱动NRF24L01,带sip文件,连接好引脚做好初始化既可用

2017-12-01

物联控制源码

物联网实现

2017-07-02

linux下socket模板函数发送与接受

模板

2017-06-14

非递归遍历二叉树

二叉树

2017-06-04

linux下封装的mysql操作

mysql

2017-06-04

linux下的方块界面

界面

2017-06-04

linux的getch函数

linux下实现getch函数

2017-05-25

linux下kbhit函数

linux下面实现kbhit函数

2017-05-25

推箱子代码

linux下推箱子游戏

2017-05-25

liaotianc代码

linux下socket聊天

2017-05-25

liaotians代码

linux]下的socket聊天

2017-05-25

空空如也

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

TA关注的人

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