自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将数组轮转

输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]

2023-09-10 17:22:50 124

原创 找出多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。抵消策略,两数比较,相同就count加1,不同count减1,当count为0时,将当前值替换为需要比较的值。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]

2023-09-10 16:07:01 193

原创 删除有序数组中的重复项 II

2.取每个元素遍历相比,第一次相等就说明元素已经出现了两次,将flag置1且将两值保存下来,再相且flag为1,说明元素出现了三次,就将数组元素前移,覆盖掉相同的元素,每遍历一次需要将flag置为0,以防下次遍历时带入错误的flag(乱序数组可剔除)解释:函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]nums 已按升序排列。

2023-09-10 14:47:25 222 1

原创 工作笔记4-- 展讯NFC BBAT

1.调试NXP一款NFC,功能通了,但是做BBAT无法测试,经过一段时间调试,主要遇到以下问题1).适配平台流程,open/read/close,平台原本自带的是三星的NFC,是通过调用so库实现的BBAT,但是调试时NXP无法提供so库,所以换成了直接操作驱动实现2).直接open设备节点/dev/xxx即可,注意添加权限,否则无法open成功3).读写指令不成功,看log发现是I2C通信失败,最后发现是因为没有下载固件导致4).NXP NFC 在读写指令时,需要先使用ioctl下载固件,

2023-09-10 13:39:49 316 1

原创 删除有序数组中的重复项

2.定义两个指针指向数组,相同时其中一个nums[i++],nums[a]指针不动,不同时nums[++a] = nums[i],也就是nums[a]从0开始,只要有不同的就将不同的放在nums[a+1]处(乱序数组无法剔除)更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,0,1,1,1,2,2,3,3,4]

2023-09-10 13:36:34 123 1

原创 移除相同元素

例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。2.定义两个指针指向数组,然后进行遍历,如果值不相等就nums[b++] = nums[a++],如果值相等,a++跳过相同的元素,以此达到剔除的目的。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输入:nums = [3,2,2,3], val = 3。

2023-09-10 13:27:54 102 1

原创 合并两个有序数组

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。定义三个指针,分别指向nums1[m-1],nums2[n-1],nums1[m+n-1]合并结果是 [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]。

2023-09-10 13:20:22 111 1

原创 工作笔记3-- 展讯SC7731G 安卓6.0 兼容TP

1.添加TP驱动文件sprd\kernel\drivers\input\touchscreen\focaltechfocaltech.cfocaltech_ctl.cfocaltech_ex_fun.cFT6336U_20191009_app.i //TP效果固件,需要在驱动文件中调用2.添加编译规则sprd\kernel\drivers\input\touc...

2019-12-16 19:03:53 1042 1

原创 工作笔记2-- 展讯SC7731G 安卓6.0 兼容CAMERA

1.添加camera驱动文件1)sprd\vendor\sprd\modules\libcamera\sensor\ov5640 //前摄同理sensor_ov5640_mipi_raw.csensor_ov5640_mipi_raw_param.c2)Sprdroid.mk 添加编译规则LOCAL_SRC_FILES += \ #前摄同理 $(CUR_DIR...

2019-10-21 20:54:09 560

原创 工作笔记1-- 展讯SC7731G 安卓6.0 兼容LCM

1.uboot层1)sprd/u-boot64/drivers/video/sprdfb/lcd此路径下添加LCM驱动文件,如lcd_st7701_mipi.c修改Makefileobj-$(CONFIG_FB_LCD_ST7701S_MIPI) += lcd_st7701s_mipi.o2)sprd\u-boot64\drivers\video\sprdfb修改配置spr...

2019-10-19 11:48:44 1258

原创 嵌入式学习10--浅析输入子系统

1.输入子系统handler我们先从输入子系统的核心层文件开始解析,kernel\drivers\input\input.c中包含了输入子系统框架需要的函数从入口input_init开始,可以看到注册一个input_class->input_proc_init->register_chrdev在这里只注册了输入子系统的class,但是没有注册device,因为此时我们也...

2019-09-02 17:48:24 312 1

原创 嵌入式学习9--platform驱动模型

1.驱动模型platform驱动模型由bus、device、driver组成,bus已经是由内核做好的,我们使用这个模型主要是需要将device和driver添加进去,并让其能够正确匹配进行工作,使用驱动模型是为了让程序运行得更加稳定,将驱动程序分开编写,也便于维护和修改。流程主要是将不同的设备的driver和device分别添加进链表,再用设备名去匹配,如果有相同的设备名就连接起来,然后...

2019-08-27 17:13:57 361 1

原创 嵌入式学习8--模拟PWM与呼吸灯

最近看了看PWM,但是我手上的板子4路PWM只接出来2路,还都占用了,没有办法,就想试试软件模拟pwm,本身模拟PWM是比较简单的事,但是在做了以后我又想做做呼吸灯,在呼吸灯上卡了挺久了,不过经过调试,也算勉强实现了 1.PWM概念 其实PWM的概念比较简单,无非就是在固定的周期内,设置高电平占用的时间长短,简单的说一秒一个周期,这个周期的占空比是50%。说明高电平的时...

2019-08-16 14:54:03 2621

原创 嵌入式学习7--动态定时器和看门狗

1.在嵌入式系统中,定时器的使用时非常普遍的,看门狗、中断触发、防抖之类的功能和定时器有一定的关系,而linux中动态定时器的使用也是非常方便的,可以帮助我们完成很多的功能。动态定时器是依赖于内核时钟的,所以在使用的时候需要注意触发周期的设置。下面简单介绍一下动态定时器的使用方法:#include <linux/module.h>#include <linux/kern...

2019-05-11 17:17:22 540 1

原创 嵌入式学习6--中断和等待队列

中断是指CPU处理在进行运作时,突发某种情况,使CPU暂停当前处理的事件,转向处理突发的事件,当突发事件处理完成以后,再回到暂停处继续执行未完的操作。中断可分为外部中断和内部中断:1.外部中断:指CPU外部器件发生变化时所触发的操作,典型的外部中断就是按键,当按键按下时,去执行相应的操作2.内部中断:指CPU内部发生某种异常所触发的操作,如溢出、软中断指令等中断机制将中断处理分为上...

2019-04-26 16:32:05 1104

原创 嵌入式学习5--GPIO标准接口函数

在上一篇的混杂设备驱动中,我们使用了一些GPIO的接口函数,包含申请、设置等功能,下面简单介绍一下这些接口函数1.int gpio_request(unsigned gpio, const char *label); //申请一个GPIO给自己用unsigned gpio:GPIO对应的"ID"--》GPIO号,在Linux系统中可以在内核中平台对应的配置中查看,kernel\arch\...

2019-04-26 11:42:13 1123 1

原创 嵌入式学习4--混杂设备驱动

混杂设备驱动主要用于一些功能简单的器件,将之整合到一起,major为10,minor一般为动态分配,其实实际的还是字符设备驱动。比常规字符设备驱动更好的地方就是在于它简化了编写过程,将一些步骤整合到了一起,使代码更加简洁,可读性更高,也便于维护和移植。以下代码为超声波传感器的驱动代码1.超声波SRF05传感器,在这里只用了Vcc、Trig、Echo、GND四个脚A.Vcc 接5V电...

2019-04-23 18:07:59 573

原创 嵌入式学习3--字符设备驱动

Linux系统中将驱动分为三种--字符设备驱动、块设备驱动、网络设备驱动,其中前两种是有设备文件的,可以在 /dev 下查看到具体的设备名。字符设备驱动访问使用系统IO:open、read、write、close等块设备驱动访问使用文件IO:fopen、fread、fwrite、fclose等在实际中,大多数设备都是使用字符设备驱动,如led、key、beep等接在IO口上的设备都可以...

2019-04-02 20:17:00 583

原创 嵌入式学习2--点灯

点灯可以说是嵌入式界的Hello world了,基本在开始学习嵌入式编程的时候都是先点灯,同事开玩笑说,点一盏灯是Hello world,点流水灯是Hello Hello world,按键点灯就是外语版的Hello world,^_^1.点灯肯定是要结合原理图的,所以我们的第一步就是先看看原理图,原理图上可以看到,有5盏灯是接在GPIO上的,并且是GPIO输出方式,那我们首先确认的...

2019-03-14 10:48:58 2544

原创 嵌入式学习1--安装系统

之前由于板子出现问题,所以研究了一段时间的重刷系统,终于把板子救回来了,我的板子是6818由于没有U-Boot了,所以需要先刷U-Boot需要准备SD卡一张、Linux系统、VMware、匹配板子的U-Boot1.先制作SD启动卡1)先将SD卡连接到Linux系统下,在连接的时候我就费了很多功夫,始终无法读取到SD卡,后来发现在VMware的右下角有个选项,可以使SD卡连接到Lin...

2019-03-01 13:53:35 716

原创 十六进制转换为十进制

int APICOM_htoi(char *src){ char *dst = src; char *calc = src; int total = 0; int length = 0; if(src ==PNULL) { return PNULL; } while(*dst++) { ...

2018-08-30 14:25:34 1466

原创 字符串操作

主要使用指针操作字符串,基础练习:char* APICOM_strcpy( char* dst, const char* src); //字符串拷贝char* APICOM_strncpy(char* dst, const char* src, int length); //字符串拷贝,限制个数char* APICOM_strcat(char* dst, const char...

2018-08-30 14:19:35 193

空空如也

空空如也

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

TA关注的人

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