<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_21291397的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_21291397</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_21291397]]></copyright><item><title><![CDATA[Linux 中的驱动开发的初学者体会]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/122376136</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/122376136</guid><author>qq_21291397</author><pubDate>Sat, 08 Jan 2022 10:02:50 +0800</pubDate><description><![CDATA[Linux 中的驱动开发的初学者体会
很多年前，心里就存下这样一个愿望。就是把Linux 的驱动开发搞清楚。
但是一开始上上这样的开发难度天大了，对着一堆的寄存器发愁。
于是就从简单的STM8，PIC16FXXX ，51 等板子入手开发一些单片机例程。一路上上做做小家电，而后从开发STM32下的开发。如今终于可以大阔步的学习Linux的驱动开发了。
其实Linux的驱动开发并没有想象的那么难，就是要耐心，耐心，再耐心。
51 或者 STM32 等。单片机开发很难接触到
更高层次的系统方面的知识，单片机开发由]]></description><category></category></item><item><title><![CDATA[Cortex-A 的内核寄存器组]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/122185449</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/122185449</guid><author>qq_21291397</author><pubDate>Tue, 28 Dec 2021 10:23:52 +0800</pubDate><description><![CDATA[Cortex-A 的内核寄存器组]]></description><category></category></item><item><title><![CDATA[Cortex-A 处理器运行模型]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/122184953</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/122184953</guid><author>qq_21291397</author><pubDate>Tue, 28 Dec 2021 09:23:39 +0800</pubDate><description><![CDATA[Cortex-A 处理器运行模型]]></description><category></category></item><item><title><![CDATA[IMEI 码的校验和生成]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/121201414</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/121201414</guid><author>qq_21291397</author><pubDate>Mon, 08 Nov 2021 09:43:35 +0800</pubDate><description><![CDATA[IMEI 码的校验和生成
文章目录IMEI 码的校验和生成IMEI 码Luhn算法代码实现C
IMEI 码
IMEI 码，即手机的串号。它是 International Mobile Equipment Identity( 国际移动设备身份) 的简称，就像是手机的身份证，是用来帮助辨别手机身份真伪的。
　
第一部分 TAC，Type Allocation Code，类型分配码，由8位数字组成（早期是6位）， 是区分手机品牌和型号的编码，该代码由GSMA及其授权机构分配。其中TAC码前两位又是分配机构标识 （]]></description><category></category></item><item><title><![CDATA[学习FreeRTOS的几点体会]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/117980107</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/117980107</guid><author>qq_21291397</author><pubDate>Thu, 17 Jun 2021 09:08:47 +0800</pubDate><description><![CDATA[学习FreeRTOS的几点体会
刚开始接触RTOS是从任哲编著的《嵌入式实时操作系统uCOS-II原理及应用》这本书开始的，当时手上有一个stm32的开发板，简单移植跑了跑。
实际项目中用到RTOS的机会非常少，在消费电子领域里，硬件的成本控制做到了极致。而且对实时性要求并不高。所以一般很少用到RTOS内核。但是在通信领域，RTOS用到的机会还是很多的。
ucous-II 的资源比较好找，但是商用有版权的缘故。相对UCOS，另一个比较不错的选择就是FreeRTOS, 它已经作为Stm 公司内嵌中间件的形式，]]></description><category></category></item><item><title><![CDATA[索尼游戏手柄SP2的开发体会]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/116293909</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/116293909</guid><author>qq_21291397</author><pubDate>Fri, 30 Apr 2021 14:03:44 +0800</pubDate><description><![CDATA[索尼游戏手柄SP2的开发体会1.PS手柄介绍接收器引脚输出：通信时序：2、代码解读3、库文件解读
ps2手柄是索尼的PlayStation2游戏机的遥控手柄。
该款手柄的通讯协议被游戏爱好者破解，使得手柄可以接在其他器件上遥控使用，比如遥控我们熟悉的智能小车。
突出的特点是这款手柄性价比极高，按键丰富，方便扩展到其它应用中。
1.PS手柄介绍

ps2手柄由手柄与接收器两部分组成。
接收器与单片机相连，用于接收手柄发来的信息，将信号传递给单片机。
单片机也可通过接收器，向手柄发送命令，配置手柄的发送模式。
]]></description><category></category></item><item><title><![CDATA[基于STM32系列芯片的 IAP实现的探索]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/116000583</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/116000583</guid><author>qq_21291397</author><pubDate>Sun, 25 Apr 2021 10:54:56 +0800</pubDate><description><![CDATA[基于STM32系列芯片的 IAP实现的探索 什么是IAP？如何实现IAP？第一步：学习官方源代码第二步：了解STM32芯片基本硬件参数第三步、搞清除STM32内置Flash第四步、 STM32程序运行机制IAP代码实现：1、实现flash写入，删除，修改。2、IAP 通信协议设计
什么是IAP？
IAP是In Application Programming的首字母缩写，IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写，目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程]]></description><category></category></item><item><title><![CDATA[STM32 进入Stop模式后电流还是很大怎么办？]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/112859441</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/112859441</guid><author>qq_21291397</author><pubDate>Wed, 20 Jan 2021 11:12:39 +0800</pubDate><description><![CDATA[STM32 进入Stop模式后电流还是很大怎么办？
STM32 进入停止模式后电流还是很大，可能椒几百个uA，怎么办?
通常做法有如下几点：

MCU外围管脚配置
检查外围有无闭合回路
SWDIO,SWCLK 管脚
设备运行时的外设功能，逐一关闭。

1. MCU外围管脚配置
要将MCU外围管脚配置一番，那如何配置呢，特别是嵌入式的软件工程师，因为对硬件电路不太熟悉，往往会感到疲惫感，调试了一整天，电流还是下不来，这怎么办才好呢？
不妨我们从头开始梳理。
STM32的GPIO工作方式
GPIO支持4种输入模]]></description><category></category></item><item><title><![CDATA[mysql root密码重置]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/112607366</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/112607366</guid><author>qq_21291397</author><pubDate>Thu, 14 Jan 2021 14:36:17 +0800</pubDate><description><![CDATA[文章目录mysql root密码重置1.修改本地mysql目录中的my.ini文件2.在win +r 输入cmd，进行mysql的重启启动操作3.直接输入mysql -uroot -p4、去掉my.ini文件skip-grant-tables 重启msql, 用更新后的密码登录就可以了。
mysql root密码重置
解决问题思路 :
1 . 修改主配置文件 /etc/my.cnf , 设置登录时跳过权限表的验证
2 . 设置好后重启服务
3 . 在mysql-server 服务器上做免密码登录 , 更新r]]></description><category></category></item><item><title><![CDATA[Qt操作Office的一个实例--口算题生成器制作。]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/112257906</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/112257906</guid><author>qq_21291397</author><pubDate>Wed, 06 Jan 2021 10:01:21 +0800</pubDate><description><![CDATA[文章目录Qt操作Office的一个实例--口算题生成器制作。1、#include Qt操作Office的一个实例–口算题生成器制作。
学校里经常会要求口算达标。如果手写口算题效率太慢，何不用Qt做一个口算生成器呢？
虽然Qt自带文本编辑功能，不过这次还是想尝试操作COM对象来实现。
于是从网上下载一个文档QWord.cpp 来了解Qt操作COM对象的方法。
粗略分析了QWord.cpp 的文档，基本了解如下：
1、#include &lt;ActiveQt/QAxObject&gt;
要操作office需要]]></description><category></category></item><item><title><![CDATA[DW1000 TX POWER (发射功率) 解析]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/111206193</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/111206193</guid><author>qq_21291397</author><pubDate>Tue, 15 Dec 2020 13:49:04 +0800</pubDate><description><![CDATA[DW1000 TX POWER (发射功率) 解析
寄存器地址0x1E用于设置射频的发射功率。
一般说来，我们会将发射功率设置在最大，因为功率越大，发射的距离越远。但在某些情况下会减少发射功率，例如在限制的距离范围内等等。
DW1000设有OPT 存储区域来保存发射功率的校准值。
0x1E寄存器地址有4个byte 的地址长度。每个地址单元都有特定的意义。
发射功率有两种运行方式：自动模式，手动模式。可以0x04寄存器地址的DIS_STXP位来设定。
1、TXPOWER发射功率设置单元
每个控制单元有8个bi]]></description><category></category></item><item><title><![CDATA[Qt 关于定时器实用的总结]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/110222402</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/110222402</guid><author>qq_21291397</author><pubDate>Fri, 27 Nov 2020 10:50:18 +0800</pubDate><description><![CDATA[文章目录Qt 关于定时器实用的总结第一种方案：startTimer + QTimerEvent第二种方案：QTimer类+信号和槽定时器与线程
Qt 关于定时器实用的总结
在实际编程中常常会使用到定时器，现在就将定时器的用法作个总结。
第一种方案：startTimer + QTimerEvent
对于一个QObject的子类，只需要使用
int QObject::startTimer(int interval) 函数来开启一个定时器。当定时器溢出时可以在timerEvent()  函数中进行相关操作。
例如]]></description><category></category></item><item><title><![CDATA[Socket连接心跳包的机制总结]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/110185637</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/110185637</guid><author>qq_21291397</author><pubDate>Thu, 26 Nov 2020 14:40:52 +0800</pubDate><description><![CDATA[文章目录Socket连接心跳包的机制总结心跳包的由来心跳包的作用心跳包由服务端还是客户端发送？
Socket连接心跳包的机制总结
心跳包的由来
心跳包之所以叫心跳包是因为：它像心跳一样每隔固定时间发一次，以此来告诉服务器，这个客户端还活着。事实上这是为了保持长连接，至于这个包的内容，是没有什么特别规定的，不过一般都是很小的包，或者只包含包头的一个空包。
在TCP的机制里面，本身是存在有心跳包的机制的，也就是TCP的选项：SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线]]></description><category></category></item><item><title><![CDATA[加权最小二乘法的理解]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109801015</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109801015</guid><author>qq_21291397</author><pubDate>Thu, 19 Nov 2020 10:08:00 +0800</pubDate><description><![CDATA[文章目录那什么什么是加权最小二乘法？异方差的修正
在需要人为地改变观测量的权重的应用场合中，都会涉及到加权最小二乘法的应用。
那什么什么是加权最小二乘法？
加权最小二乘法的概念：
加权最小二乘是对原模型进行加权，是该模型成为 一个新的不存在异方差性的模型，然后对该新模型使用普通最小二乘法估计其参数进行优化。
相关概念梳理：
异方差性的解释：随机误差的方差不全相等。异方差性是相对于同方差而言的，同方差是为了保证回归参数估计量具有良好的统计特性。也就是线性回归函数中的随机误差项（扰动项）必须满足同方差性，即方差]]></description><category></category></item><item><title><![CDATA[Qt 实现数据协议控制--组帧、组包、解析帧、解析包]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109641476</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109641476</guid><author>qq_21291397</author><pubDate>Thu, 12 Nov 2020 14:08:06 +0800</pubDate><description><![CDATA[数据传输中的组帧和组包一、数据帧，数据包的概念数据帧组包二、 程序实现：2.1、frame(帧)类的实现：2.2、Pack(包)类的实现：三、测试
一、数据帧，数据包的概念
数据帧
数据传输往往都有一定的协议，通过CRC校验来验证数据的可靠性。数据帧包含三部分，帧头、数据部分、帧尾。其中帧头和帧尾包含一些必要的控制信息，比如同步信息，地址信息、差错控制信息等等。
组包
多个数据帧可以捆在一起，添加包头信息，就可以组包。组包可以使得多帧的数据同时发送，提高通信的效率。
数据的帧包可以提高数据传输的可靠性。
下]]></description><category></category></item><item><title><![CDATA[关于QMap的几点总结思考]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109506032</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109506032</guid><author>qq_21291397</author><pubDate>Thu, 05 Nov 2020 12:51:18 +0800</pubDate><description><![CDATA[关于QMap的几点总结思考
题记：
前段时间集中精力写了数据的分拣算法，用到了容器QMap和QMultiMap。回头再来回去该算法的时候，又觉得当时好像不是自己写的一样，于是有必要将QMap类来总结一下。
首先来了解下C++中STL中的map：
map是STL的一个关联容器，它提供一对一的hash。
特点：

第一个可以称为关键字(key)，每个关键字只能在map中出现一次；
第二个可能称为该关键字的值(value)；

map以模板(泛型)方式实现，可以存储任意类型的数据，包括使用者自定义的数据类型。
M]]></description><category></category></item><item><title><![CDATA[QMap详解]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109503339</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109503339</guid><author>qq_21291397</author><pubDate>Thu, 05 Nov 2020 10:00:34 +0800</pubDate><description><![CDATA[QMap详解
QMap是Qt的一个模板类，它是基于红黑树算法的一套字典。
 QMap&lt;Key,T&gt;是Qt容器类型的一种，它通过(Key, value)存储一对值，并通过Key可以查找与之关联的value的值。
 QMap和 QHash是很相似的，不同的地方是：

QHash的查找速度比QMap要快很多。
在对QHash进行迭代时，这些项是任意排序的。在QMap中，项总是按键排序。
QHash的关键类型必须提供运算符==()和全局QHash(key)函数。QMap的关键类型必须提供操作符&lt;(]]></description><category></category></item><item><title><![CDATA[Qt基于QGraphicsObject自定义图元并实现简单的动画]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109449540</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109449540</guid><author>qq_21291397</author><pubDate>Mon, 02 Nov 2020 15:32:09 +0800</pubDate><description><![CDATA[文章目录Qt基于QGraphicsObject自定义图元并实现简单的动画举例;
Qt基于QGraphicsObject自定义图元并实现简单的动画
Qt 图形的绘制 可以是QPainter方法直接绘制，另一种方法就是通过继承QGraphicsItem类来定制自己的图元类，这样就可以根据自己的需求来制作它的形状、颜色、属性以及交互等。但是这样的图元会存在一个缺点，那就是不能使用Qt的信号/槽机制，也不能使用Qt属性系统，也不能使用Qt的动画框架实现动画。
在Qt已经考虑到了这些问题，QGraphicsObjec]]></description><category></category></item><item><title><![CDATA[实现Qt日志功能并输出到文件]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109442096</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109442096</guid><author>qq_21291397</author><pubDate>Mon, 02 Nov 2020 09:18:12 +0800</pubDate><description><![CDATA[文章目录实现Qt日志功能并输出到文件一、基本分类：二、如何截获这些信息三、将qDebug()\qWarning()\qCritical()\qFatal() 信息输出到指定文件中
实现Qt日志功能并输出到文件
一、基本分类：
qDebug : 调试信息提示
qWarning: 一般的警告提示
qCritical: 严重错误提示
二、如何截获这些信息
Qt提供了qInstallMsgHandler 方法用来定制消息发生后如何来处理。
qInstallMsgHandler 是一个回调函数，主要是由qDebug、]]></description><category></category></item><item><title><![CDATA[C# 调用C++写的dll的实现方法]]></title><link>https://blog.youkuaiyun.com/qq_21291397/article/details/109336505</link><guid>https://blog.youkuaiyun.com/qq_21291397/article/details/109336505</guid><author>qq_21291397</author><pubDate>Wed, 28 Oct 2020 16:36:50 +0800</pubDate><description><![CDATA[文章目录**C# 调用C++写的dll的实现方法**
C# 调用C++写的dll的实现方法
C#调用C++的非托管类的dll其实很简单基本就是固定的调用格式。
一、　dll的编写
1、首先是打开VS新建一个C++的控制台程序，下一步后选择dll以及空文档即可。
2、然后就是添加一个类添加一个方法。方法排头固定格式 extern"C"__declspec(dllexport) 后面加方法即可。 例如如下代码：

extern"C"__declspec(dllexport) char* ShowImages(B]]></description><category></category></item></channel></rss>