<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[apple的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/apple_2333</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; apple_2333]]></copyright><item><title><![CDATA[Qt5-实现串口助手版“示波器”]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/104341172</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/104341172</guid><author>apple_2333</author><pubDate>Sun, 16 Feb 2020 18:57:50 +0800</pubDate><description><![CDATA[一.前言

闲了好久没更新博客，偷懒的我就拿了去年暑假备战电赛时做的一个串口版“示波器”来充充水。抛砖引玉哈。
因为以前发过一篇主题一样的文章，所以就当该文就相当于上版的升级版（其实两者没啥关系，仅是主题一样，以前那篇是单纯为赛题弄的，这篇更有通用性）
是当时为电赛准备的（吐槽一下，原本我组准备的电源题，怎么想着也会用上adc、pwm啥的吧，结果19年的A题一出来真是让我一言难尽啊）
实现的功能有...]]></description><category></category></item><item><title><![CDATA[驱动里调用I2c和Gpio，驱动里调用驱动]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/103399147</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/103399147</guid><author>apple_2333</author><pubDate>Thu, 05 Dec 2019 12:55:46 +0800</pubDate><description><![CDATA[一. 简介

来源：应项目需求，需将3个I2c和6个GPIO封装成一个驱动供上层应用层调用，遂有了此文。
开发板：Halley2
Linux版本：3.10.14
开发环境：Manhattan（基于君正官方提供的开发环境，很好用）。
经验：说实话，这是我第一个“正经”开发的驱动。

二. 编写驱动前的准备

先明确需求，3个I2c的设备地址和片上内存都为一个字节，6个Gpio分别为5输入1输出
留给...]]></description><category></category></item><item><title><![CDATA[Vi快捷键总结大全]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/102895440</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/102895440</guid><author>apple_2333</author><pubDate>Mon, 04 Nov 2019 14:07:36 +0800</pubDate><description><![CDATA[1. Vim的几种模式

正常模式：可以使用快捷键命令，或按:输入命令行。
插入模式：可以输入文本，在正常模式下，按i、a、o等都可以进入插入模式。
可视模式：正常模式下按v可以进入可视模式， 在可视模式下，移动光标可以选择文本。按V进入可视行模式， 总是整行整行的选中。ctrl+v进入可视块模式。
替换模式：正常模式下，按R进入。

2. 启动Vim

vim -c cmd file : 在打开...]]></description><category></category></item><item><title><![CDATA[总结几个Ubuntu（12.04、14.04、16.04、18.04、19.04）的iso下载地址]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/102501475</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/102501475</guid><author>apple_2333</author><pubDate>Fri, 11 Oct 2019 15:10:05 +0800</pubDate><description><![CDATA[被官网下载的下载速度感动到了，遂总结了一下：
（推荐中科大源，下载速度居然有10M/s，可能出现下载iso文件比预期的小，换个源试试）

中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/
阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/
北京理工大学开源 http://mirror.bit.edu...]]></description><category></category></item><item><title><![CDATA[SecureCRT 简单配色和一些常规操作方式]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/100627281</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/100627281</guid><author>apple_2333</author><pubDate>Sun, 08 Sep 2019 15:30:50 +0800</pubDate><description><![CDATA[前言. 皆于原本的SercureCRT的配色对本人来说简直辣眼睛，于是就有了下文。属抛砖引玉，可按自己需求来。
一.下载并安装SercureCRT，这个百度一下就可以了，so easy.
二.进行简单配色，先展示成果：


先打开SecureCRT的会话设置





再找到Terminal下的Emulation（参考下图设置）和Appearance，其实有很多选项，大家可以自己试试，适合自己的才...]]></description><category></category></item><item><title><![CDATA[stm32-硬件I2C的使用（以24C256举例）--基于HAL库和CubeMx]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/98032392</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/98032392</guid><author>apple_2333</author><pubDate>Thu, 01 Aug 2019 10:35:55 +0800</pubDate><description><![CDATA[1.硬件清单

stm32103c8核心板一块
24C256
DAP下载器（这个随自己的来）

2.打开CubeMx，创建相关工程

先是rcc和sys的配置


I2C的配置，先说明I2C会有一个BUG，生成工程后可改。

另外可配置串口，来观察是否通信成功

时钟树的配置，就不啰嗦了，该怎么来就怎么来
生成Keil 5工程



3. 打开相关Keil 5工程

先解决I2C的bug

mai...]]></description><category></category></item><item><title><![CDATA[stm32-利用stm32f334的Hrtim定时器创建多路互补pwm波--基于HAL和CubeMx]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/97024305</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/97024305</guid><author>apple_2333</author><pubDate>Tue, 23 Jul 2019 21:10:57 +0800</pubDate><description><![CDATA[最近在用stm32f334，在此留个笔记
有关f334的Hrtim定时器的高精度，大家可以自行百度，我就不做搬运工了。
1.现在CubeMx中创建一个相关的工程，先是rcc和sys的设置


2.HRTIM定时器的配置

接着先配置时钟树

再回到HRTIM定时器的配置中（图中的频率标错了，0太多没数清，实际是产生100kHZ）


TimerB和TimerC与TimerA一样，就不贴图了
生成项...]]></description><category></category></item><item><title><![CDATA[stm32-利用cubemx创建多路adc采集并开启DMA进行搬运，基于HAL库]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/96962574</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/96962574</guid><author>apple_2333</author><pubDate>Tue, 23 Jul 2019 09:30:59 +0800</pubDate><description><![CDATA[1.开发板stm32f103c8系列，打开cubemx，选择单片机型号（实际可随自己的板子型号来）

2.配置好相关rcc的HSE为外部晶振和sys的Debug模式

其中sys的debug模式，我这里用的是DAP下载器，所以如下图，如果是其他下载器，建议自行百度如何选择。

3.ADC的配置，实际按自己的需求来


相关dma配置，这里模式选择循环，这就不需要每次调用相关函数去获取adc的值了。...]]></description><category></category></item><item><title><![CDATA[初试--移植u8g2库到stm32]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/95748006</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/95748006</guid><author>apple_2333</author><pubDate>Sat, 13 Jul 2019 15:38:48 +0800</pubDate><description><![CDATA[无独有偶来想来移植u8g2来玩玩

硬件清单：

   stm32f334核心板一块（没用stm32f1是因为f1的排针焊反了，不好直插，f1类似）
	   0.96寸的Oled屏，为4线SPI连接
	   还有一个下载器DAP
软件清单： keil5和cubemx

先在cubemx创建一个相关的工程并生成代码，用软件模拟spi：（总览）



然后去u8g2的githu...]]></description><category></category></item><item><title><![CDATA[stm32-利用cubemx创建互补pwm---基于HAL库]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/88722084</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/88722084</guid><author>apple_2333</author><pubDate>Thu, 21 Mar 2019 18:44:03 +0800</pubDate><description><![CDATA[1.打开CUBEMX，创建一个工程，我用的是stm32f407,这个随自己的板子型号来选，然后点击RCC，如图操作：



2.点左边的Timers，我这里选用Tim1，实际可以随你自己的选，具体如图：



3.进行Tim1的相关配置



4.相关管脚的配置：



5.时钟树的配置，这个没啥好讲的，根据自己的开发板来：



6.项目名和存放位置（最好全英文，免得出现莫名其妙的错误）：


...]]></description><category></category></item><item><title><![CDATA[Qt5-可视化九大经典排序算法（九）桶排序]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/87438816</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/87438816</guid><author>apple_2333</author><pubDate>Sat, 16 Feb 2019 14:08:09 +0800</pubDate><description><![CDATA[本章依旧建立开始两篇文章的基础上（冒泡排序、插入排序的传送门）。介绍一下，本程序可视化条件已经在冒泡排序中实现完成，避免重复，就只需将剩下的排序算法函数实现下就可以了，另外在插入排序重新实现了随机生成数组数据rand函数（可生成不带重复的数据的放入数组中，让动图显得更好看点）

先引用一下Wiki的介绍：

桶排序（Bucket sort）或所谓的箱排序，是一个排序演算法，工作的原理是将阵列分到有...]]></description><category></category></item><item><title><![CDATA[Qt5-可视化九大经典排序算法（六、七、八）快速排序、基数排序、归并排序]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/87071002</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/87071002</guid><author>apple_2333</author><pubDate>Tue, 12 Feb 2019 14:03:35 +0800</pubDate><description><![CDATA[本章依旧建立开始两篇文章的基础上（冒泡排序、插入排序的传送门）

一.快速排序

来自Wiki的介绍：

Quicksort（有时称为分区交换排序）是一种O（N log N）有效 排序算法，用作按顺序放置数组元素的系统方法。由英国计算机科学家Tony Hoare于1959年开发[1]并于1961年发表，[2]它仍然是一种常用的排序算法。如果实施得当，它可以比其主要竞争对手快两到三倍，合并排序和堆垛...]]></description><category></category></item><item><title><![CDATA[Qt5-可视化九大经典排序算法（三、四、五）选择排序、堆排序、希尔排序]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86982659</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86982659</guid><author>apple_2333</author><pubDate>Mon, 11 Feb 2019 12:23:36 +0800</pubDate><description><![CDATA[有了前两篇文章的基础（冒泡排序、插入排序的传送门），到这里可以加快速度，就将这三个排序算法放在了一起写了，以免一篇文章字数过少。

1.选择排序

先引用下Wiki（或百度百科）的介绍：

在计算机科学中，选择排序是一种排序算法，特别是就地 比较排序。它具有O（n^2）时间复杂度，使其在大型列表上效率低，并且通常比类似的插入排序更差。选择排序因其简单性而着称，并且在某些情况下具有优于更复杂算法的性...]]></description><category></category></item><item><title><![CDATA[Qt5-可视化九大经典排序算法（二）插入排序]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86890702</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86890702</guid><author>apple_2333</author><pubDate>Sun, 10 Feb 2019 11:42:59 +0800</pubDate><description><![CDATA[本文将在可视化算法一（传送门）的基础上实现插入排序，其实就是多添加了一个实现插入排序的函数，再将Widget里的构造函数中的goBubble更换成goInsertion就可以了。

先介绍一下插入排序，先给俩个官方介绍的传送门（百度百科和Wiki对插入排序的介绍）

插入排序又可分为直接插入排序和折半插入排序，其中折半插入排序只是折半查找合适的位子。其实也可以结合扑克牌的理牌过程来理解。

直接插...]]></description><category></category></item><item><title><![CDATA[Qt5-可视化九大经典排序算法（一）冒泡排序]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86802651</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86802651</guid><author>apple_2333</author><pubDate>Sat, 09 Feb 2019 13:42:20 +0800</pubDate><description><![CDATA[先引用Wiki的介绍（链接在这）：

冒泡排序，有时也称为沉没排序，是一种简单的排序算法，它重复遍历列表，比较相邻的对，如果它们的顺序错误则交换它们。重复传递列表，直到列表排序。该算法是一种比较排序，以较小或较大元素“冒泡”到列表顶部的方式命名。虽然算法很简单，但即使与插入排序相比，它对于大多数问题来说太慢而且不切实际。如果输入大多是按顺序排列的，并且一些无序元素几乎就位，则冒泡排序可以是实用的。...]]></description><category></category></item><item><title><![CDATA[Qt5-将手机上B站下载的视频提取到到电脑上并批量移动到指定文件夹和重命名]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86774639</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86774639</guid><author>apple_2333</author><pubDate>Fri, 08 Feb 2019 14:06:41 +0800</pubDate><description><![CDATA[本人喜欢在B站上看视频，无奈B站的资源有时候会突然就没了，就会把那些好的资源下载到手机上，主要是PC端的B站貌似不直接支持下载，然后再传到电脑上。在PC端打开相关资源一看，全是数字命名，有用的资料全在JSON文件里。一个俩个还可以手动命名，这一下有几十个，就有点考验人了。遂想利用所学的Qt将其自动命名并移动到特定的文件夹里，而且那个视频的格式是blv的，一般播放器压根打不开，幸好我用的是PotPl...]]></description><category></category></item><item><title><![CDATA[基于Qt5-将串口助手打造成“示波器”]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86767539</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86767539</guid><author>apple_2333</author><pubDate>Wed, 06 Feb 2019 11:35:18 +0800</pubDate><description><![CDATA[有段时间，做电赛题的时候，在那看波形调PID参数，因为要同时观察电压和两路电流，无奈只有一台示波器，遂有一想法，将单片机采集的电流数据通过串口发送给上位机，然后在上位机上以波形的形式显示出来，方便观察。因为时间问题，都是现学现用，整体做的很简陋，只是实现了要用到的功能，还请选择性浏览。



1.上位机是基于Qt5编写的，还用到了用于绘图第三方库--qcustomplot，具体使用可以百度，我这里...]]></description><category></category></item><item><title><![CDATA[C++  用一维数组加递归完成八皇后至N皇后的解答]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86762667</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86762667</guid><author>apple_2333</author><pubDate>Mon, 04 Feb 2019 11:24:20 +0800</pubDate><description><![CDATA[先上代码，其中是用p[0]来存储当前符合的次数，基本思路就是一行一行寻找合适的位子，若本行没有则返回上一行，在上一行查找合适的位子。相对于用循环，递归的整体代码思路更清晰。


//检查当前行上的皇后位子是否合理，是返回true
bool Check(vector&amp;lt;int&amp;gt;&amp;amp;p,int line)
{
    //当前行与前几行的皇后位子进行规则比较，判断当前行皇后位子是否合理...]]></description><category></category></item><item><title><![CDATA[在单片机上利用一个定时器和二行代码轻轻松松实现多任务的运行（基于时间片）]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/79495870</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/79495870</guid><author>apple_2333</author><pubDate>Sun, 03 Feb 2019 12:33:12 +0800</pubDate><description><![CDATA[因为我常用的是stm32F4系列单片机，所以采用其滴答定时器作为时基定时器（如果你使用的单片机是别款，只要单片机上有个定时器都可以，另外也得有中断处理函数）（另外如果用的是stm32等单片机，片上具有滴答定时器，可以省掉1、2步骤，在HAL库下直接用HAL_GetTick()代替GetCount()即可，其他类似）

1.首先初始化定时器，本人一般设置定时时间为1ms，这个可以是具体情况而定。

...]]></description><category></category></item><item><title><![CDATA[教你简单几步使用Qt5.12的多线程技术]]></title><link>https://blog.youkuaiyun.com/apple_2333/article/details/86756476</link><guid>https://blog.youkuaiyun.com/apple_2333/article/details/86756476</guid><author>apple_2333</author><pubDate>Sun, 03 Feb 2019 11:52:47 +0800</pubDate><description><![CDATA[本文只是讲解如何使用，并不讲解其中实现原理。

1.首先在Widget或者其他你认为要用到地方包含相关的头文件（以下皆是在Widget下用）


#include &amp;lt;QThread&amp;gt;
#include &amp;lt;QDebug&amp;gt;    //方便打印

因Qt5的线程运用结合了信号与槽，这跟Qt4和C++本身的线程运用有点不一样。

2.先添加一个自定义类，一定要继承QObject类或...]]></description><category></category></item></channel></rss>