- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 EMQX-/etc/emqx.conf文件丢失了
emqx.conf文件丢失或者被其他错误的配置文件覆盖后,emqx服务器便不能启动。查看/etc/emqx/文件夹下根本没有 emqx.conf配置文件。使用此命令卸载后再重新安装,就能看到emax.conf文件啦。自己尝试把emqx卸载然后重新安装。启动成功,非常开心。
2023-06-20 10:23:30
1451
3
原创 openssl源码和paho-mqtt源码的x86_64以及交叉编译arm架构静态库-
版本:openssl-1.0.2u.tar.gz paho.mqtt.c-1.3.0。不需要make install了哈。make install 是弄到根目录的/usr/下。make后就可以得到 libssl.a libcrypto.a 这个两个静态库。修改CMake.Lists.txt 打开静态和SSL。修改CMake.Lists.txt 打开静态和SSL。openssl-交叉编译静态库。paho源码-交叉编译静态库。默认使用gcc编译器。
2023-04-28 09:06:53
429
原创 嵌入式--STM32外设操作干粮(持续更新)
串口嵌入式中的串口一般指UART口,知道他就是用来通信的就OK。一般会使用三种方式进行数据的通信处理。分别是:轮询、中断、DMA。以USART1为例,查询手册可知:USART1: 发送:PA9 接收:PA10轮询:使用串口助手测试,将接收到的串口数据发送给串口助手。int main( void ){ unsigned char test =0; GPIO_InitTypeDef gpio_Init; USART_InitTypeDef usart_Init; //时钟开启 RC
2022-04-07 14:53:17
3497
原创 串口监听大量数据匹配处理--利用环形buff
功能描述:A和B设备之间在串口通信,C设备利用串口去监听A和B的通信,我们将要监听的字段给到C,C将匹配到的字段数据保存下来。实现方法:利用线性数组将头尾连起来,形成一个环形的buff来接收串口中断的数据。关键点:buff判满不再接收数据,否则尾指针移动tail++(tail+1)%maxsize = head尾指针达到最大置0:tail>=maxsizetail=0;buff中数据个数:(tail -head+maxsize)%maxsize要确保数据个数要大于匹配的字段长度
2022-01-12 10:31:05
541
原创 UDP数据包解析
UDP数据包copy缓存区,包头0-41,数据42开始dMac:0-5sMac:6-11ipv4:12-13(固定)version:14(固定)services field:15(固定)total length:16-17identification:18-19fragment offset:20-21time to live :22protocol:23header checksum:24-25sIP:26-29dIP: 30-33sport:34-35(34高8位,35低8位
2021-11-30 14:33:00
1745
原创 Git常用命令整理
1、查看用户名 git config user.name设置用户名 git config --global user.name “名字”2、查看邮箱 git config user.email设置邮箱 git config --global user.email"邮箱"3、初始化仓库 git init初始化了一个空仓库,目录下多了.git目录,系统自动创建了唯一的master分支4、添加文件到仓库 git add 文件名添加所有文件到仓库 git add .5、提交文件到仓库 git co
2021-11-30 14:28:56
212
原创 C++基础总结
1、cin,cout键盘输入屏幕输出头文件包含:#include using namespace std;或者直接;std::cout<<“内容”<<endl;2、string类像表示整形那样定义字符串,用string类定义的字符串,可以直接用“+”号拼接字符串,用“=”号进行赋值,这点比数组方便的多。3、new和delete配套使用防止内存泄漏如果使用new[]为数组分配空间,则用delete[]释放空间使用new动态分配空间,节省空间,返回指针。C语言中使用m
2021-11-30 14:26:09
585
原创 指针取数组元素值为其指针地址
#include <stdio.h>int main(void) { static const int buff[5] = {0x40201c,0x200,0x300,0x12345678,0x500}; int* p =NULL; short temp = 0; p = (int*)buff[0]; temp = (short)*p; printf("%p\n",&buff[0]); printf("%p\n",&bu
2021-08-12 15:54:46
450
原创 CRC16校验--查表法
UINT8 const g_auchcrchi[] ={ 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0, 0x80,
2021-07-15 09:38:05
1076
原创 跟我一起学STM32--看门狗
独立看门狗、窗口看门狗作用:可用来检测和解决由软件错误引起的故障,当计数器达到给定的超时值时,触发一个中断或产生系统复位。独立看门狗由专用的低速时钟驱动,即使主时钟发生故障它仍然有效,最适合应用那些需要看门狗作为在主程序之外,能够独立完全工作,并且对时间精度要求较低的场合。窗口看门狗是由主时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。要求精确计时。IWDG:自由运行的递减计数器,时钟由独立的RC振荡器提供,看门狗被激活后,在计数器计数至0X000时产生复位。
2021-01-27 14:36:17
262
原创 入门Shell这一篇就够了
Shell介绍Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式的解释和执行用户输入的命令。作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。Shell有两种执行命令的方式:交互式:解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。批处理:用户事先写一个Shell脚本,其中有很多条命令,Shell一次把这次命令执行完毕,而不是一条一条的敲命令。第一个Shell脚本:新建一个文件夹,扩展名为test.sh输
2021-01-20 14:52:16
228
原创 跟我一起学STM32--仿真篇
当你快乐的敲完代码,想要仿真一下玩玩时,应该这样搞一下:仿真分为软件仿真和硬件仿真。软件仿真:硬件仿真:在仿真的时候需要特别注意下框框中是否添加了你所需要的芯片型号:点击deBug愉快的调试吧...
2021-01-14 14:58:23
1626
原创 跟我一起学STM32-GPIO篇
GPIO:分为A.B.C.D.E.F.G组,每组16个IO,IO都是多功能的,使用之前需要先配置,默认是输入功能。每组GPIO有2个32位配置寄存器(GPIOX_CRL 、GPIOX_CRH),2个32位数据寄存器(GPIOX_IDR、GPIOX_ODR),一个32位置位、复位寄存器(GPIOX_BSRR),1个16位复位寄存器(GPIOX_BRR),1个32位锁定寄存器(GPIOX_LCKR)。GPIOX_0-7低IO使用GPIOX_CRL配置GPIOX_8-15高IO使用GPIOX_CRH配置
2021-01-14 14:36:20
391
原创 QT-判断鼠标落在三角形区域里面还是外边
在平面上如何判断鼠标是否落在固定的三角形区域内:#ifndef JUDGETRIANGLEIN_H#define JUDGETRIANGLEIN_H#include <QWidget>#include <QMouseEvent>#include <QDebug>#include <QPainter>#include <QPaintEvent>#include <QPolygon>#include <QVecto
2021-01-13 15:10:44
553
原创 QT-鼠标跟踪以及区域捕获
鼠标跟踪:重写:mouseMoveEvent(QMouseEvent *event)后,在构造函数中加:this->setMouseTracking(true);后还是需要按住鼠标拖动才管,原来在QMainwindow无效,只能是QWidget.鼠标区域捕获:QPolygon area;area.setPoints(3, 580,400, 540,440, 540,360);if(area.containsPoint(event->pos(),Qt::WindingFill)){
2021-01-12 17:37:28
664
原创 QT-画一个简易仪表盘玩玩
效果如下:思路如下:1、先画两个圆,构成外围的圆环。2、画指示箭头。3、画刻度和刻度上数字4、添加一个横向滑块用于动态显示。5、添加两个标签用于速度显示。直接上代码:头文件:#ifndef PAINT_H#define PAINT_H#include <QMainWindow>#include <QPaintEvent>#include <QPainter>#include <QPen>#include <QLinea
2021-01-08 17:01:57
1239
1
原创 QPainter--画家常规操作123
一、让画家愉快的使用笔去创作搞一个画家出来:QPainter painter(this);搞一支笔出来:QPen pen;设置一下这支笔的属性:pen.setWidth(8);pen.setColor(QColor(Qt::blue));pen.setStyle(Qt::SolidLine);把这支笔给画家用一下:painter.setPen(pen);画家愉快的用这支笔画条线、画个矩形:painter.drawLine(100,300,400,500);
2021-01-08 16:44:26
520
原创 最简单的共用体Union来诠释大小端存储问题
大端模式:数据的高位存在内存的低地址中,数据的低位存在内存的高地址中。小端模式:数据的高位存在内存的高地址中,数据的低位存在内存的低地址中,举个例子:int i=1;共用体Union的特点;同一时间只能存储一个数据成员。所有成员的起始地址一样。共用体所分配的内存以最大数据类型而定。由此根据其特点,可写如下函数判断是大端存储还是小端存储:#include <stdio.h>int checksystem(void){ union check { int i;
2020-09-11 11:24:07
328
原创 51单片机-STC89C52系列学习第三篇之中断学习
八个中断请求源:1、外部中断02、外部中断13、外部中断 24、外部中断35、定时器0中断
2020-04-28 10:01:23
1982
原创 STC89C52驱动SH1106芯片点亮OLED问题点总结
主芯片:STC89C52OLED驱动芯片:SH1106OLED屏大小为1.3寸,像素点是128X64(8页X8),通信方式有IIC和SPI两种方式。烧录软件:STC-ISP文字图片取模软件:PCtoLCD2002选择阳码:屏黑字白(使用这个)选择阴码:屏白字黑阳码亮点为0,阴码亮点为1,代码中0XFF为白,0x00为黑。一个简单的延时毫秒代码:void delay_ms(un...
2020-04-22 17:15:41
4218
1
原创 51单片机-STC89C52系列学习第二篇之寄存器学习
学习单片机实际上就是学习如何操作寄存器。51单片机使用sfr来定义具有特殊功能的寄存器。如:sfr P1 = 0x90;如果你想使用P1口的第1位来点亮LED灯,假设高电平点亮,可以这样做:法一:sfr P1 = 0x90;//定义P1寄存器的地址sbit P1.0 = 0x90;//定义P1寄存器的第一位的地址P1.0 = 1;//点亮LED灯法二:sfr P1 = 0x90;/...
2020-04-16 15:35:43
1713
原创 51单片机-STC89C52系列学习第一篇之IO口学习
STC89C52系列单片机IO口有三种工作模式:1、准双向口/弱上拉(标准8051输出模式)2、开漏输出模式3、输入模式其中P1/P2/P3/P4上电复位后为传统的8051的IO口模式,而P0口上电后是开漏输出。P0口作为IO口使用时需要加4.7K-10K的上拉电阻。新增特殊功能寄存器的声明示例:sfr P4 = 0xe8;sbit P40 = 0xe8;sbit ...
2020-04-15 18:16:58
7580
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人