自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 资源 (4)
  • 收藏
  • 关注

原创 基于HC32F460petb芯片给FLASH安装fat文件系统

目前单片机中用的最多的文件系统就是fat32,得益于正点原子和野火的大量资料,让我们很快的就能开发出来相关的功能,本篇用来记录一次fat32的移植过程,芯片采用的是华大的PETB,flash才采用的是GD25Q40,虽然是GD系列的存储芯片,但是命令上基本兼容W25Q系列。需要注意的是,fat32是单片机读写flash的操作,USB的msc操作是通过USB主机如电脑读写flash的操作,这两个操作应该是独立的,否则会有冲突。

2024-04-15 16:45:28 1148

原创 基于小华例程3.2版本USB之usb_dev_cdc_msc工程深入代码详解

USB如何区分CDC和MSC的呢?USB(通用串行总线)设备可以通过其设备类和子类来区分不同的功能,例如CDC(通信设备类)和MSC(大规模存储设备类)。以下是USB设备如何区分CDC和MSC功能的基本原理:1. **描述符**:USB设备通过其描述符来告诉主机它的功能和属性。描述符是一系列数据结构,包括设备描述符、配置描述符、接口描述符和端点描述符等。2. **设备类**:在设备描述符中,有一个字段指定了设备的类别。CDC和MSC分别有不同的类代码。

2024-04-15 16:26:45 965 1

原创 基于小华例程3.2版本USB之usb_dev_msc工程深入代码详解

USB学习起来比较多而烦躁,但是USB移植起来轻轻松松。

2024-04-12 11:59:15 1120

原创 修改代码的艺术--读书笔记

我可以只把这当作某种私人的怪癖,但是我发现,在我使用新的、不熟悉的编程语言时,这种不同的查看代码方法对我起到了很大的帮助作用。2.如果修改可以是方法中某个地方的一系列声明,那么就为新方法编写一个调用,完成相关的工作,然后把它注释掉(我喜欢在编写方法之前就先做这一步,这样我就能够知道方法在上下文之中会是什么样子)。在被包装的类中编写另一个方法,它会调用新方法和旧方法。重构背后的理念是,编写测试确保现存的行为不会改变,一点一点进行改进,如果我们在整个过程中都做到这些,就可以让软件更易于维护,而不会改变其行为。

2024-04-11 14:21:19 336

原创 安装anaconda和python编程

简单的安装入门,从word复制进来,标题有点错乱,不过不影响阅读。仅仅对新手有效,高手不必看。

2024-04-11 14:18:20 477

原创 基于小华例程3.2版本USB之usb_dev_cdc工程深入代码详解USB过程

通过代码来理解USB CDC串口的功能实现!

2024-04-02 16:33:33 795

原创 用定时器在单片机中实现一次性回调函数执行

在定时器中断服务例程中,我们遍历链表,更新每个事件的剩余时间,并在事件超时执行回调函数。还有一个点要注意,中断回调函数执行事件不应该超过定时器的最小粒度,要求我们最小粒度定义不能太小,比如最小粒度定义为10ms,这个值是很多操作系统的参考值。当CPU处理其他任务时,定时器会在后台独立运行,当达到设定的时间后,触发中断,执行回调函数。检查是否有事件的剩余时间减到零,如果有的话,调用相应的回调函数,并更新事件状态。在中断服务例程中,清除中断标志,停止定时器,以便将其复用为一次性定时器。

2024-03-11 16:27:57 1277

原创 使用hashmap优化时间复杂度,leetcode1577

编程,我最喜欢数学之类的题目了,正确,简洁,计算的操作让计算机运行。

2024-03-11 15:14:59 392

原创 使用回溯法解决leetcode 1219

只要当前位置不是0,就可以dfs,记得dfs之后,要恢复原状,遍历完整个数组之后,返回最大值即可。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是。一种收集最多黄金的路线是:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7。当有了不少算法在脑海中之后,很快想到这是一个深度优先搜索+回溯的题目。你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为。一种收集最多黄金的路线是:9 -> 8 -> 7。

2024-03-11 15:03:13 492

原创 C++结合Lambda表达式在函数内部实现递归

python果然更加现代,函数里面可以定义函数。这是一道leetcode上面的题目,题目本身不难,只需要改变一次状态就行了。改变状态中需要确定点击的是什么内容,如果是空白则需要递归找到所有的空白。击败97.79%使用 C++ 的用户。击败15.20%使用 C++ 的用户。C++感觉需要重新学习了。让我们一起来玩扫雷游戏!还是不行,不能递归调用。)中的下一个点击位置(

2024-02-20 22:02:27 922

原创 基于HC32F460使用J-link RTT实现调试信息打印

网上有很多基于stm32的教程,RTT的原理是一样的,使用小华的芯片,SEGGER目前没有直接支持,所以要修改一下配置文件JLinkDevices.xml,这个文件提供了支持的器件目录。里面增加的内容个人理解是增加了制造商、名称、内核,ram和flash信息,从而让jlink能够识别,里面涉及到一个文件 HC32F46x.FLM,这个文件如果安装了华大的pack之后,是有的,我使用了everything来搜索到到这个文件。下,只会写入适合缓冲区的数据,或完全不写入缓冲区,其余的数据将被丢弃。

2024-01-29 11:59:20 1136

原创 解决Android studio中的Installed Build Tools revision 34.0.0 is corrupted的问题

AS官方推荐使用最新版,但是由于一些原因,可能用的不是最新版。我今天在搭建环境的时候,使用的AS版本是4.1.1,就报了标题中的错误,IDE提示卸载重新下载安装,我照做了,但是问题依旧存在。既然34.0.0不行,那其他行不行呢?我把其他版本也下载下来了,发现29.0.0是可以的。于是上网查找原因:找到这个解决方案。将这两个名称修改一下就可以了。

2023-06-26 14:52:37 12834

原创 配合AI刷leetcode 实现1170

题目思路不难,实现一个函数f(s),实现一个二分查找,然后遍历就可以了。复杂度O(nlogn)。于是写出来这样的代码:

2023-06-10 11:01:55 881

原创 leetcode 每日一题统计范围内的元音字符串数

题解思路:字符预处理+前缀和

2023-06-02 10:20:08 333

原创 leetcode 347 C++和kotlin的解法

该算法的时间复杂度为 $O(n \log n)$,其中 $n$ 是数组的长度。哈希表的插入操作的时间复杂度为 $O(1)$,排序的时间复杂度为 $O(n \log n)$,取出前 k 个元素的时间复杂度为 $O(k)$。空间复杂度为 $O(n)$。先上C++版本的,基本思路是用hashmap统计出现的次数,然后维护一个大小为K的最小堆,最小堆的比较函数使用频率作为比较量。其中用到了自定义的pair数据和比较函数。使用kotlin就充分使用了各种数据直接的转换和库函数,写起来确实简明多了。

2023-06-01 15:02:27 460

原创 leetcode1985. 找出数组中的第 K 大整数

要看代码的话,直接看最后一个,过程是我思考的思路!

2023-05-31 16:17:19 774

原创 使用kotlin用回溯法解决电话号码的字母组合问题

我们先定义了一个字母表,将数字映射到对应的字母组合上。接着定义了一个结果集合result。在函数letterCombinations中,我们首先判断特殊情况,如果数字串为空,则返回空列表。否则,我们开始递归调用回溯函数backtrack。在回溯函数中,我们首先判断是否已经到达数字串的末尾,如果到达,则将当前的组合字符串加入结果集合中。否则,我们取出当前数字所对应的字母组合,对于每一个字母,都将其加入到组合字符串中,并递归调用backtrack函数,最后将该字母从组合字符串中删除(回溯到上一步)。这样

2023-05-28 12:12:21 970

原创 leetcode 1209 学会删除字符串

首先定义一个数据类 CharWithCount,用来表示字符和其出现的次数。然后遍历字符串,对于每个字符,如果栈顶元素和当前字符相同,就将栈顶元素出栈,将其出现次数加一,否则将当前字符作为新的元素入栈。每次入栈或者出栈时,要判断栈顶元素出现次数是否达到了 k,如果是的话就将其出栈。最后将栈中剩余的元素按顺序拼接成字符串即可。

2023-05-25 21:45:00 541

原创 使用优先队列解决自己构造的数据类型-解决leetcode1090

使用自定义的数据和比较函数,构造优先队列解决贪心算法。

2023-05-23 10:00:28 329

原创 使用优先队列解决自己构造的数据类型-解决贪心问题

题解:其实题目就是一种排序,让不相等的变成相邻,这个有一点贪心法的很自然可以想到一种方案:按照数字的值划分成不同的组,每次从不同值的组里面选择最多数量的,直到选择完毕。上面就用到了自己构造的数据类型和排序方法,预处理部分采用了hashmap来统计每一个元素出现的次数。执行用时:88 ms, 在所有 C++ 提交中击败了61.47%的用户。根据我的理解,贪心问题大部分跟有限队列有关,在上篇文章写了。之后,今天看leetcode题目,就是典型的一道贪心题目。配合优先队列的最大堆,于是可以写出来如下的代码。

2023-05-14 20:37:56 323

原创 使用优先队列解决自己构造的数据类型

使用优先队列,将会十分简单,难点在于怎么包含两种类型,于是想到了pair这个神奇的东西。然后就是最大堆的比较函数,需要写一个结构体,声明比较函数。在C++中优先队列有两种,最大堆和最小堆。当数据类型为int的时候,大家都会使用,但是如果数据不是单一的,比如数据是一个hashmap怎么办?当然,这只是一个解题的模板,因为题目中说身高互不相同,这种方法并没有考虑这个特性,并不是最优解。其他贪心的算法,也可以构建这样的结构来求解。

2023-04-25 16:13:23 588

原创 走进他人内心的七项修炼

你可以用“同意”“好的”“是的”“没错”等来回复对方。这些字眼可以向对方传达这样一种信息:“你这样说以及你选择以这样的方式说,自然有你的道理。”这样做你会收获到惊人的效果:对方的情绪起初会有些波动,但随后便会逐渐稳定,直到最后慢慢平复。如果你成功控制住了自己的情绪,又成功平复了他人的情绪,那就可以进入下一步了。你要学会从他们在做解释时所说的话语中寻找双方的“共识”,并欣然接受对方的观点。然后等到双方都明确了对方的观点之后,问问你自己“如何才能让对方的诉求得到满足,同时又能达到自己的目的呢。

2023-04-05 15:13:34 362

原创 我的第一个rust程序,感受一下

上述代码中的use用法,感觉像是C++和python的结合,省却了头文件的包含,使用的crate十分类似python的package。,有的地方写的是逗号,目前还不知道为什么。{}的语句块,还是C语言的,没有选择python的缩进用法,我觉得是对的。)因为随便生成一个程序,模板就是helloworld,根本不需要写,论输出hello world的速度,rust只需要两个指令,这点挺强的。听说rust语言很年轻,性能超过了C++,还能支持嵌入式编程,作为一名未来要出名的代码工程师,岂能错过?

2023-03-10 22:41:43 266

原创 leetcode 平分正方形的几何题目

首先要知道平分两个正方形的直线为经过两个正方形中心的直线,然后就是计算4个交点。找出来四个最远的交点就可以了。要注意交点一定在正方形的边长上,这样就涉及到求取交点的时候是取X值,还是Y值。经过画图分析,当斜率在-1到1之间的时候,取X值,其他情况取Y值。

2022-12-17 18:59:53 117

原创 leetcode 1780(贪心法解决)

判断一个数字是否可以表示成三的幂的和?我使用贪心法!

2022-12-09 09:34:38 431

原创 leetcode 1775. 通过最少操作次数使数组的和相等(等效找零问题)

使用贪心法+哈希表思想来解决这道题目,因为范围是1-6,所有直接遍历手写了。

2022-12-07 10:48:47 581

原创 leetcode 1805. 字符串中不同整数的数目(状态机思路)

使用有限状态机来解决这个问题。

2022-12-06 14:28:04 137

原创 leetcode 468 验证IP地址是否有效(竟然花费了两个小时)

验证字符串是否有前导0,使用了转为int之后,再转为字符串,如果两个字符串相等就是没有,否则就是有。同时使用了字符串分割函数,这个分割函数的bug就是如果两个分隔符之间什么都没有,就不会返回数据,这点也需要后续改进。

2022-12-03 22:47:03 645

原创 在嵌入式里面实现printf()类似的功能

使用可变参数在嵌入式中实现printf函数,你知道如何实现吗?

2022-11-30 17:41:59 816 1

原创 传递信息 C++ 广度优先搜索

广度优先搜索解决有向图的问题

2022-11-21 21:40:50 110

原创 leetcode 792 匹配子序列的单词数(哈希表+双指针)

比较两个字符串s和t,其中一个是另外一个子串的问题,可以使用双指针一次遍历。那么这道题目就是在外面再加一层for循环,遍历完所有的字符串数组就可以了。于是我就提交了,发现超时了。。。。既然超时了,那么就要算法优化,删除一些重复的操作。看着超时的测试用例,我忽然就懂了,因为测试的字符串有很多是重复的,所以增加了一个哈希表来去重,这样再遍历一遍哈希表,就可以通过了。

2022-11-17 13:43:59 498

原创 leetcode 890. 查找和替换模式 c++

两个哈希表实现键值一对一映射,不重复。

2022-11-12 13:47:38 107

原创 LCP 33. 蓄水(C++ 模拟法解决这道题目)

题意很简单,就是两种操作,每次操作会增加一次操作步数,求最小操作步数。转换为数学问题就是:min(x+max(vat[i]/bucket[i])),其中,当bucket[i]满足max(vat[i]/bucket[i])的时候,x++,bucket[i]++,第一反应是不是应该动态规划,想了半天不知道怎么规划;于是退而求其次,使用模拟法来求解。基本思路就是既然题目肯定有一个最小值,那我只要控制x的范围,让x不断增加,总有一个最小值,考虑到数据范围,x的值上限为10000。

2022-11-09 22:54:28 248

原创 华大芯片时钟调试配置记录

本文记录了一次从8M晶振配置为12M晶振的过程,调试不出来很容易自我怀疑,其实只要静下心来,往往事情就会考虑周全,也不容易出错。

2022-11-08 19:32:12 737

转载 【转载】六合一调试神器TTL转USB模块

USB转232自闭环:将模块的232-TXD和232-RXD用杜邦线连接起来,按照功能选择中的说明拨好对应的拨码开关,然后将模块插入到计算机中,用串口调试助手发送数据,看是否有对应的数据返回。如果能收到发送出去的数据,证明模块功能正常。USB转TTL自闭环:将模块的TXD和RXD用杜邦线连接起来,按照功能选择中的说明拨好对应的拨码开关,然后将模块插入到计算机中,用串口调试助手发送数据,看是否有对应的数据返回。9、USB,TTL,RS232,RS485四种电平自由互转,独特的电路设计,通过开关实现功。

2022-11-08 18:51:23 2412

原创 华大(现在改名小华半导体)芯片启动文件详细讲解

启动文件由汇编语言编写,是系统上电复位后第一个执行的程序,主要做了以下工作:1)初始化堆栈指针:SP=_initial_sp。2)初始化程序指针:PC=Reset_Handler。3)初始化中断向量表。4)设定sram3的等待周期,配置系统时钟。5)调用C库函数_main初始化用户堆栈,最终调用main函数进入C语言世界。

2022-11-02 16:42:52 2369

原创 leetcode 179 自定义一个字符比较函数

通过一个例题,学习C++的sort自定义比较函数,同时学会字符串的比较,很巧妙。

2022-10-20 19:15:48 457

原创 使用c语言仿真酒吧博弈问题

酒吧博弈问题的C语言模拟

2022-10-18 10:07:24 823

原创 linux pinctrl函数

打卡学习,我也不知道linux的pinctrl怎么实现的,但是里面有实例。

2022-08-04 11:53:37 220

原创 linux 设备树of函数学习笔记

设备树的解析函数OF系列,知识点前人早已总结好,我是学生。

2022-08-03 15:41:26 570

Linux资料包V1.44.rar

此资源为自己购买的USB转can(linux)版本的驱动和二次开发资料。

2021-08-23

INS_fangzhen.rar

之前学习惯性导航的时候,使用C语言写的一个惯性导航的解算仿真程序,构建环境是vs2015,加速度和陀螺仪模拟输入,生成姿态和位置。

2021-02-06

无GPS的室内定位技术概述

目前室内定位常用的定位方法,从原理上主要分为七种:邻近探测法、质心定位法、多边定位法、三角定位法、极点法、指纹定位法和航位推算法。 使用某种方式进行测距通常需要一对发射和接收设备,按照发射机和接收机的位置大体可以分为两种: 发射机位于被测节点, 接收机位于辅助节点,例如红外线,超声波和 RFID; 另一种是发射机位于辅助节点, 接收 机 位 于 被 测 节 点, 例如 WiFi、超宽带、ZigBee和蓝牙。

2021-02-06

玻尔电子护卫舰版之SXD28335_QFP软件例程

自己花钱买的课程,学习DSP F28335的例程源码,只能运行在DSP环境中,使用CCS4.0以上的版本编译和下载。

2020-05-10

空空如也

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

TA关注的人

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