自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ADC、SPI--stm32

Analog-to-Digital Converter,指模拟/数字转换器ADC的性能指标量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、12、16位等;位数越多,分辨率越高,一般来说分辨率越高,转化时间越长转化时间:从转换开始到获得稳定的数字量输出所需要的时间称为转换时间ADC通道总共2个ADC(ADC1,ADC2),每个ADC有18个转换通道: 16个外部通道、 2个内部通道(温度传感器、内部参考电压)。

2024-05-24 12:39:13 1986

原创 STM32标准库版本

STM32标准库版本一. 基础操作1. 新建工程文件夹1.1 Drivers文件二 . 系统时钟配置三. GPIO工作模式3.1 点亮一个LED灯3.2 流水灯3.3 蜂鸣器3.4 按键控制小灯四. 中断4.1 NVIC(嵌套向量中断控制器)4.1.1 NVIC寄存器4.2 EXTI4.2.1 中断事件4.3 AFIO4.4 EXTI配置流程4.5 实操-按键点灯(中断法)4.6 振动传感器4.7 继电器4.8 433M无线收发模块4.9 电动车报警器五. SysTick(滴答定时器)5.1 工作原理5.2

2024-05-21 20:10:22 1936

原创 基于stm32的FreeRTOS操作系统

简单来说任务FreeRTOS中就是一个无限循环无法返回的函数,在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务一个任务负责项目的一块功能,每个任务都有一个独立的栈。这个函数不能返回,无限循环。同一个函数,可以用来创建多个任务;换句话说,多个任务可以运行同一个函数。每个任务都有自己的栈,每个任务运行这个函数时任务A的局部变量放在任务A的栈里、任务B的局部变量放在任务B的栈里,函数内部所有栈的开销都是使用任务自己的栈。

2024-05-13 12:46:29 678

原创 非标协议外设(lcd1602显示和dht11温湿度传感器)

第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择==指令(选地址)==寄存器。第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W共同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W 为高电平时可以读忙信号,当== RS 为高电平R/W 为低电平时可以写入数据==。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。指令 9:读忙信号和光标地址。BF:为忙标志位,高电平表示忙。

2024-05-05 13:38:11 953

原创 IIC协议(使用OLED小屏幕)-51和32版本

IIC属于半双工同步通信方式。

2024-05-04 12:11:16 150

原创 力扣(Leetcode)第88题:合并两个有序数组(C语言版本)

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]

2024-04-26 16:21:05 400

原创 全志H6(ARM-Linux)持续更新!!!

这一排引脚对应上面的端口。来比对两个文件的差异。

2024-04-25 19:58:34 359

原创 力扣(Leetcode)第66题:加一(C语言版本)

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。

2024-04-25 17:58:50 274

原创 力扣(Leetcode)第35题:搜索插入位置(C语言版本)--二分法(无重复元素 的 升序 排列数组)

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。

2024-04-24 18:40:07 404

原创 力扣(Leetcode)第27题:移除元素(C语言版本)--双指针方法

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。

2024-04-24 14:47:06 145

原创 力扣(Leetcode)第26题:删除有序数组中的重复项(C语言版本)---双指针方法

给你一个 非严格递增排列 的数组 ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。考虑 的唯一元素的数量为 ,你需要做以下事情确保你的题解可以被通过:numsk。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]

2024-04-23 17:57:46 534

原创 力扣(Leetcode)第20题:有效的括号(C语言版本)-堆栈

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 ‘()[]{}’ 组成。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”

2024-04-21 17:16:53 146

原创 力扣(Leetcode)第14题:最长公共前缀(C语言版本)

输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。strs[i] 仅由小写英文字母组成。解释:输入不存在公共前缀。

2024-04-20 14:24:55 329

原创 力扣(Leetcode)第13题:罗马数字转整形(C语言版本)

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。27 写做 XXVII, 即为 XX + V + II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。

2024-04-19 15:06:59 270

原创 力扣(Leetcode)第9题:回文数(C语言版本)

给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。本题主要是判断一个数是否为回文数(相当于正着读和反着读,数值都是一样的)回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。- 1 -----可见在定义整型数时需要。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。

2024-04-17 20:37:31 261

原创 力扣(Leetcode)第2题:两数相加(C语言版本)

通常,我们从左到右书写数字,例如数字123,最左边的是最高位(百位),然后是十位,最后是个位。但是在这个特殊的表示法中,链表的第一个节点将代表个位数,第二个节点代表十位数,以此类推,最左边的节点(链表的头节点)代表最低位,而最右边的节点(链表的尾节点)代表最高位。在这种表示法中,每个节点只存储一个数字(0-9),并且每个链表的第一个节点(最近个位)实际上是整个数字的最低有效位,而最后一个节点(最远离个位)是最高位。由于每个节点只存储一位数字,相加的结果可能需要进位到下一个更高的位。它们每位数字都是按照。

2024-04-15 20:45:09 905

原创 力扣(Leetcode)第1题:两数之和(C语言版本)

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6

2024-04-14 21:02:22 861

原创 C语言中的问题(自用)

int * p[4] ://定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。int ※ p[4]:变量p先跟右侧结合,所以他是一个数组,再跟左侧结合,所以是指针。由于[ ]比※优先级高,所以p先和[4]结合,形成p[4]形式,再与p前面的※结合,int(※ p)[4]:变量p先跟解引用结合,是指针,再跟右侧结合,所以是数组。int (*p)[4]:int (*p)[4]的长度为1,为一个数组。int *p[4]:int *p[4]的长度为4,有四个元素空间。

2024-04-10 21:10:04 306

原创 STM32单片机的学习(持续更新中!!!)--HA库版本

可见led1和led2分别对应。PB8和PB9使用相同操作。

2024-04-08 17:04:18 167

原创 linux 网络编程

linux系统编程-网络编程

2022-09-16 17:24:35 4401

原创 linux线程

linu系统编程--线程

2022-09-12 18:47:42 172

原创 网络爬虫之规则

网络爬虫之规则

2022-09-10 19:41:58 961

原创 Linux进程间通信

linux进程间通信

2022-09-10 15:16:46 355

原创 linux进程

linux系统编程--进程

2022-09-01 12:34:58 364 2

原创 linux文件编程

linux文件编程

2022-08-28 21:32:45 271 4

基于遗传算法的机器人路径规划

完整程序 外带报告 在matlab运行 随着机器人技术的不断发展,人们对于可自主移动机器的导航,动态避障,路径规划提出了更高的要求。移动机器人工作环境的复杂性和多变性,决定了移动机器人的路径规划问题是机器人领域的一个研究重点。如何是移动机器人按照某一规则寻找一条从起始状态到目标状态的最优路径,成为该研究的重要问题之一。遗传算法是建立在自然选择和群体遗传学基础上的随机、迭代和进化过程,是路径规划研究领域中的一种十分有效地算法。本文选择遗传算法来解决移动机器人的路径规划问题,对移动机器人避障寻路方案进行了优化。

2024-02-06

空空如也

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

TA关注的人

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