- 博客(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
原创 力扣(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
原创 力扣(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
基于遗传算法的机器人路径规划
2024-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人