自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 【FreeRTOS#4】任务创建与删除实例

这部分开始,内容将会极其抽象复杂,对于基础内容需要不断回看。重在梳理概念之间的关系。

2025-07-01 16:55:54 174 1

原创 【FreeRTOS#3】FreeRTOS任务创建与删除

例如,BaseType_t 和 TickType_t,二者分别是可移植层定义的定义类型,主要架构的自然类型或最有效类型,以及用于保存 RTOS ticks 计数的类型。(4)uint8_t 类型变量以 uc 为前缀,其中“u”表示“unsigned” , “c”表示“char ”。(2)uint32_t 类型变量以ul为前缀,其中“u”表示“unsigned”,“l” 表示 “long”(3)uint16_t 类型变量以us为前缀,其中“u”表示“usigned”,“l”表示“long”。

2025-07-01 13:27:02 173

原创 【嵌入式电机控制#5】有刷电机开环调速

我们这里增加了一个Speed函数用来直接修改输出比较寄存器,来控制PWM,而在PWMset函数中我们在调用Speed的同时也对+-所对应的旋转方向做了处理;以上就是直流有刷电机开环测试时的代码框架,想要深入学习电机控制,就必须对最基本的代码格式熟悉,尽量不要自己发挥,否则很容易出错误。先做一个分析,这个题目要求我们利用一个比较值寄存器,通过按键中断来对比较值进行修改并及时输出对应的PWM;对应的按键中断程序如下图所示(消抖参数根据实际情况调节)这道题的主要目的是练习我们的控制框架(代码书写规范)

2025-06-30 13:41:55 137

原创 【嵌入式电机控制#4】有刷电机软硬件结合部分(二)(高难度,重理解)

然后再进入TIM1设置界面,选择内部时钟,然后设置PWM通道1的互补输出。CNT<Pulse)且极性polarity为low的情况下,输出结果与CNT和Pulse的比较结果相反,当小于Pulse时,比较结果为1,极性反相,输出为0。其次,因为我们的CubeMX跟寄存器配置有区别,这里不能用默认的定时器开启,否则我们在开启PWM输出的时候波形可能是中间一截出来的,会影响系统性能。若OISx=OSIxN=0时,与前面相似,只有CCxP=CCxNP=1时,OCx=OCxN=1,其余时候OCx=OCxN=0。

2025-06-30 01:23:47 751

原创 【嵌入式电机控制#3】有刷电机软硬件结合部分(一)

一个IO固定输出,另一个输出PWM。

2025-06-26 17:27:25 342

原创 【嵌入式电机控制#2】直流有刷电机硬件部分

1. 定子:产生固定的磁场 2. 转子: 由一个多个绕组构成,通电后在磁场中受力运动 3. 电刷:将外部磁场电流输入到转子绕组上 4. 换向器:改变绕组中电流的流向 1. 额定电压:电机正常工作的电压 2. 额定电流: 负载电流,电机带负载正常工作时的电流 3. 额定转速: 负载转速,单位RPM 4. 额定扭矩: 电机额定电流下输出力的大小,常用kg.cm N.M 5. 减速比:

2025-06-26 16:06:23 957

原创 【嵌入式电机控制#1】电机入门简介

电机(Motor),一般特指电动机,俗称马达,是一种把电能转化为机械能的设备。

2025-06-26 14:17:18 733

原创 【LeetCode#第167题】两数之和Ⅱ

1. head大于小解,tail大于等于大解 =》则必然有一刻head等于小解,tail大于大解 =》此时头尾指向和必然大于target =》则tail左移即可得到结果,head没有机会右移 =》不存在head大于小解tail大于等于大解,与题设矛盾。2. head小于等于小解,tail小于大解 =》某一刻有tail等于大解,head小于小解 =》头尾指向和小于target =》此时head右移即可求解,tail没有机会左移 =》不存在head小于等于小解,tail小于大解,与题设矛盾。

2025-06-25 13:02:45 335

原创 【嵌入式基础梳理#2】GPIO外部中断底层

(3)软件中断事件寄存器:由CPU提供的信号,与中断输入同作为中断控制器输出来源。图中一条线上的/20指20条中断线中每一条都对应一张上图。(2)上升/下降沿选择寄存器:配置上升/下降/双边沿检测。当多个中断被挂起时,中断处理完后,应该优先清除最先挂起的寄存器。STM32的20个中断事件代表其中存在20个中断/事件。(4)事件屏蔽寄存器:置0的时候此中断线上的事件被屏蔽。(5)中断挂起寄存器:表示该中断线上是否有中断被挂起。(6)中断屏蔽寄存器:表示是否屏蔽该中断线的上的中断。

2025-06-23 10:33:09 283

原创 【嵌入式基础梳理#1】我对GPIO输入输出更底层的理解

ODR中的每一位都对应一个引脚电平的状态。IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入,当引脚电压高于VDD_FT时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。如果输出1,则输出控制模块输出0,这里也由于输出控制模块的作用,只有N-MOS工作,所以IO电平为高阻态。如果输出1,则输出控制模块输出0,P-MOS管导通,N-MOS关断,IO输出低电平;如果输出0,则输出控制模块输出1,N-MOS导通,P-MOS关断,IO输出高电平;

2025-06-23 09:28:06 532

原创 【LeetCode#第198题】打家劫舍(一维dp)

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。

2025-06-21 22:15:34 1053

原创 【LeetCode#第228题】汇总区间(简单题)

给定一个的整数数组nums。区间[a,b]是从a到b(包含)的所有整数的集合。返回的区间范围列表。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个区间但不属于nums的数字x。列表中的每个区间范围[a,b]"a->b"a!= b"a"

2025-06-21 17:57:19 853

原创 【LC#392&&70】判断子序列&&爬楼梯(dp算法 第一期)

因为在定义数据结构时,开发者们经常会绕开起点0避免标签出错,包括各类教科书、考研大纲中也会出现这样的写法,换言之。

2025-06-05 19:38:39 782

原创 【LeetCode#第125题】验证回文串(百分题常考)

这是一道很简单的题,内容面向算法题初学者。如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。给你一个字符串s,如果它是,返回true;否则,返回false。我们应该如何考虑这个问题呢?首先阅读题干,哪些字符出现后需要被忽略。由题目可知,数字+英文字母是我们需要验证的内容,而其余的字符全部被忽略。由此我们可以设计出一个简单的算法解决这个问题,

2025-06-05 16:52:05 150

原创 【FreeRTOS#2】滴答时钟&&上下文切换&&空闲任务

在需要切换任务的时候进行上下文切换,真正执行上下文切换是在PendSV的ISR中处理的。看上面这个示意图,当A运行到一半发生阻塞时,A的上下文保存,并开始读取B的上下文,B执行完毕,重新读取A的上下文。空闲以最低优先级创建,以确保如果有更高的优先级应用程序任务处于准备就绪状态,空闲任务则不使用任何 CPU 时间。当一个任务执行时,利用处理器/微控制寄存器,像其他程序一样访问RAM和ROM,这些资源一起组成了任务执行的。那么,上下文切换的过程中,内容到底存储在哪里,又是以什么方式切换的呢?

2025-06-04 16:02:39 685

原创 【FreeRTOS#1】多任务处理&任务调度器&任务状态

接着,TSK3因为遇到了delay等阻塞类函数,进入了阻塞状态,把执行权交给TSK2,等TSK3恢复,再次抢占。例如,在F1系列架构中,Cortex-M3内核通过D-bus和Sys-bus直接访问总线矩阵,通过ICode访问Flash闪存,其中没有其他核心辅助这些过程,换句话说STM32是。需要注意的是,当多个同优先级的任务进入进入就绪/暂态/阻塞时,列表中的一个结点需要存储多个任务。在FreeRTOS系统中,任务状态是以列表形式存储在内存中的,这些列表被我们称为。

2025-06-03 21:50:24 941

原创 【笔记8】嵌入式系统中的内存分段

(2)入口参数和返回值(

2025-05-29 00:31:50 797

原创 LeetCode#第58题:最后一个单词的长度

单词的长度。

2025-05-26 20:47:15 359

原创 LeetCode#第45题:跳跃游戏Ⅱ(中档题)

给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向后跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。

2025-05-26 19:45:46 285

原创 LeetCode#第135题:分发糖果(困难题&&滤波器解法)

接下来我们把难度功率拉满,剑指offer!n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。

2025-05-25 20:21:24 854 1

原创 LeetCode#第13题:罗马数转整数

第一种,题目定义规则中的单字符。第二种,规则中的双字符。另外,双字符有特点,一般小数字放在大数字前面,这样我们就不会把两个单字符和一个双字符的情况混淆了。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。通常情况下,罗马数字中小的数字在大的数字的右边。②如果①条件不满足,则如果此位满足单字符数字规则,累加对应数字。2.①如果此位与下一位的组合满足双字符数字规则,则累加对应数字的值。看了那么多有难度的,今天给大家带来一道很简单的题。,即为两个并列的 1。

2025-05-25 15:07:23 296

原创 LeteCode#第134题: 加油站(中档题)

但是在使用贪心算法前需要明确一个数学规律,只要A出发无法到B,那么A与B之间的任意一点C到B也是不可能的,所以贪心的核心在于避开所有不可能的出发点,减少循环次数。1.从gas[0]开始遍历,直到发现加油量累加值小于消耗量累加值,这意味着向gas[i]不可到达;这种循环虽然是嵌套,但是通过免除所有不可能起点,可以大幅度降低时间复杂度。,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。你从其中的一个加油站出发,开始时油箱为空。需要注意的是,我们得用回归数处理边界问题。个加油站需要消耗汽油。

2025-05-20 21:25:55 177

原创 LeetCode#第238题:除自身以外的乘积(中档题)

另外,也有一种利用题设漏洞,使用O(1)空间的方法这里不详细说明了。其实就是利用双指针前后同时遍历并迭代,最终结果直接就是需要的数组。这里利用了返回数组不占空间的漏洞。当然可以,而且前后缀分别计算时不断进行迭代过程,可以有效减少时间复杂度至On。题目最大的阻碍是不能使用除法,那么我们如何在Tn=O(n)下解决问题呢?那么我们是否可以把每个元素的前后缀提前计算出来,然后再进行相乘呢?之中任意元素的全部前缀元素和后缀的乘积都在。总之,以上两种方法所用到的算法叫做。之外其余各元素的乘积。时间复杂度内完成此题。

2025-05-17 15:02:10 240

原创 LeteCode#第274题:H指数(中档题)

首先根据题设,h满足条件并且数值最大的的论文数,在方法Ⅰ中,我们采用了倒序遍历到一个元素就h++的方法,所以我们需要的应该是所指向值>=h时刻的h,如果citations=h的时刻再对h++,h的值就会偏大,此时应该做的是返回h,所以if条件>h。在方法Ⅱ中,我们采用的是对计数表统计sum的方法代替h++,循环中自加的操作行为被前置了,sum的地位相当于方法Ⅰ中的h,而i相当于citations。比如[0,2,2,6,3,4,8,5]的计数数组为[1,0,2,1,1,1,1,0,1]篇论文被引用的次数。

2025-05-17 13:46:52 365

原创 LeteCode#第55题:跳跃游戏(中档题)

给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。

2025-05-13 22:37:01 184

原创 LeteCode#第122题:股票买卖 Ⅱ(中档题)

对于贪心法解决一些生活不常见的问题,我们可以先把实际问题抽象为数学问题,这样就能看清楚我们的局部最优解到底是什么这里是深夜做题家玉同学,乐于为您分享学习历程。

2025-05-13 21:07:57 178

原创 Letecode#第121题:股票利润

两个for循环嵌套找最大利润,时间复杂度较高,这里不再详细说了,写上去肯定判错。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。看到题第一秒想到的肯定是。

2025-05-12 17:35:28 321

原创 LeteCode#第189题:轮转序列问题(中档题)

给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。至少有不同的方法可以解决这个问题。读一遍题之后就会发现,这道题最困扰人的部分在于很难直接对nums本身进行修改;如果使用额外的内存去保存一段k长度可能被轮转过程覆盖掉的内容,然后对其余nums中内容进行一步到位的k轮转,最后再把保存的k长度放到正确的位置,这样的话代码如下。

2025-05-12 16:07:44 257

原创 【练习项目2】基于物联网MQTT技术的家用温度监测仪

【代码】【练习项目2】基于物联网MQTT技术的家用温度监测仪。

2025-05-04 00:49:22 262

原创 【笔记6】三个GPIO控制74HC595驱动双位数码管

可以看出我们点亮一个数码管需要8个IO,可是如果要直接点亮两个数码管则需要2*8个IO,在STM32F10x、STM32G4x的低配版本中,这种点亮方式无疑是十分占用引脚的。第一个585必须先读取DS信号再读取地址信号,585-1在不同的时间起到了不同的作用,这种解决问题的思想在IT/半导体开发中被称为。该芯片是一个8位串行输入、并行输出的位移缓存器,可以简单理解为用一个IO进行数据输入,可以控制8个IO输出。低-GND时LED熄灭,高-GND时LED点亮;高-5V0时LED熄灭,低-5V0时LED点亮;

2025-04-26 01:54:39 754 1

原创 【练习7】最长公共前缀查找(简单题)

其实可以等价为一个与第一串字符逐位比较的问题,如果在某一列中存在一行元素与第一行不同,则对此列。接下来分享一道力扣题,题目很简单,但是容易出错也容易写复杂。编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。

2025-04-10 17:47:43 232

原创 【练习6】滑动窗口+哈希表解决最长字串问题

从根本上讲,这是因为整个程序没有办法判断fast与slow之间部分是否有重复内容。1. 此逻辑无法解决单个子串问题,例如【a】【a,b,c】2. 也无法解决【a,a,b,c】这类目标子串在结尾的情况。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。

2025-04-08 23:59:46 289

原创 【练习5】极其好用的方法:快慢指针法求解查找+删除问题

给你一个数组nums和一个值val,你需要移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为knumsnumskvalnumsnumsk评测机将使用以下代码测试您的解决方案:// 输入数组// 要移除的值// 长度正确的预期答案。// 它以不等于 val 的值排序。// 调用你的实现// 排序 nums 的前 k 个元素i++) {如果所有的断言都通过,你的解决方案将会。

2025-03-29 16:58:02 572

原创 【练习5】异或运算(XOR)巧解单值查找问题

由a ^ b == b ^ a得,Result == a1 ^ a1^...^ak^...^an^an 这样 双值都被放到一块了 只留一个单值ak。由a ^ a == 0 得,Result == 0 ^ ak ^ 0 == ak ^ 0 ^ 0 == ak ^ 0。给定一个数组,数组中只存在一个单次出现的元素和多个双次出现的元素,找出单次出现的元素并返回。a XOR a = 0 即 a ^ a == 0。最后由 a ^ 0 == a 得,Result == ak。

2025-03-29 00:40:51 152

原创 【练习4】Dijistra算法中容易出现的指针错误

如果简单的如Road r[maxsize]般定义,即使我们用输出传回结构体数组的首地址,首地址对应的一系列内存单元还是会在算法结束后被释放。解题时未考虑到结构体变量作用域,直接定义一个r【maxsize】,解决问题后return r;

2025-03-28 21:13:08 369

原创 【笔记6】SP3485自动收发电路设计分析

则TXD路为1,MOS管导通,2/3引脚为0,芯片实际上事与愿违的进入了接收模式。但是,由于我们采用单根双绞线与上位机通信,在数据发出去前数据线上没有任何信号传输,所以AB处于高阻态,进而受到R1下拉与R2上拉的影响,差分信号为1,所以输出1;此外,RXD内路也被上拉,485总线B端上拉,A端下拉。此时TXD由于没有数据传输,所以一直处于1的状态,因而MOS管导通,2/3引脚为0,芯片处于正常接收状态。总而言之就是,RE#与 DE只能有一个是1,1代表微控制器向外发送,0代表微控制器接收。

2025-03-24 22:17:16 932

原创 【练习3】快速排序法解决字母易位词问题

编写一个函数来判断。

2025-03-22 21:55:25 128

原创 【STM32入门项目1】基于模3运算的双向点灯实现

此外,我们需要一个控制灯流向的全局变量direct,#define LEFT 1,#define RIGHT 0。最后,程序结构设计上讲,我们可以用双触发的外部中断响应来处理按键的按下(松开)状态变化,并在中断响应函数中对全局变量direct进行取反操作。在数论中,对于给定的正整数m,所有整数可以按照除以m的余数进行分类,这些分类被称为模m的。我们可以发现,随着circle的增加(减少),模的值是一直处在0-2循环状态的。灯光的闪烁过程,可以想象成指针在圆环上顺逆时针运动,指针指向的灯光亮起。

2025-03-18 18:09:29 252

原创 【练习2】链表实现进位加法器&&链表的遍历和创建

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。的链表,表示两个非负的整数。它们每位数字都是按照。的方式存储的,并且每个节点只能存储。

2025-03-18 00:45:44 941

原创 【笔记5】malloc函数和多重指针在链表插入中的必要性

错误示例中并没有使用malloc分配内存。

2025-03-17 00:45:39 305

空空如也

空空如也

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

TA关注的人

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