- 博客(61)
- 资源 (5)
- 收藏
- 关注
原创 指针
1 指针的本质就是地址 *p (p是指针,*p是一个值) 对于指针buffer,buffer[i] 与 *(buffer+i)是等价的,只不过都习惯用p[i]来表示 &buffer[i]与 buffer+i 是等价的,代表地址uint16_t* 与uint8_t* :前者一次去内存中取两个字节...
2019-10-30 15:12:59
406
原创 字符串 数组 n++ ++n
1 字符串字符串有两种声明方式,一种是字符数组,一种是字符指针字符数组:char parr[] = “zifuchuanshuzu”;字符指针:char* str=“zifuchuanshuzu”;printf("%s\n",str);...
2019-10-23 16:43:27
334
1
原创 位操作
1、特定位置0用位与& 构造一个特定位为0,其他位为1的数,再与被操作数进行&操作2、特定位置1用位或|构造一个特定位为1,其他位为0的数,再与被操作数进行|操作3、特定位取反用异或^构造一个特定位为1,其他位为0的数,再与被操作数进行^操作...
2019-06-04 11:29:43
215
原创 break continue return
Break:退出当前的for/switch/while/do while循环;当多个for/switch/while/do while语句彼此嵌套时,break是先跳出内部循环,(多层循环一次跳出一层),继续执行外循环Continue:退出for循环的本次循环,接着执行下次for循环Return 退出整个函数(谨记:是退出循环,for之类的语句,而不是if什么的语句)例1:本例...
2019-03-13 15:42:40
235
原创 内存分配 堆与栈
1 内存分配1、栈区(stack segment):栈是向低地址扩展的数据结构,是一块连续的内存的区域。栈顶的地址和栈的最大容量是系统预先规定好的,如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。程序在编译期和函数分配内存都是在栈上进行,且程序运行中函数调用时参数的传递也是在栈上进行2、堆区(heap segment) :一般由程序员分配释放,若程序员...
2019-03-08 14:37:10
293
原创 ADC采集实现温度检测
1 使用nordic库实现 nRF52832ADC采集的一个例子https://www.cnblogs.com/zzu-liulei/p/6519141.html2 用nRF52840自带的ADC采集camera内部的温度 原理图:3 思路:1).camera内部的热敏电阻与上拉电阻分压1.8V2). 通过nRF52840自带ADC采集电压3). 根据分压关系及...
2019-02-25 14:40:43
11383
原创 阈值比较法实现psensor功能
1 P_Sensor功能简述 接近传感器(proximity sensor)可以不断向外发射红外光,当有遮挡物遮挡住其所发射的红外光时,会有部分甚至全部的红外光反射至接近传感器。由此,可以根据遮挡物反射的红外光的能量信号检测用户的移动信息。接近传感器可以将光强度转换为数字信号,且可以通过I2C进行数据的读取。psensor的红外线会周期性的计算反光量,并将光强度转化为数字值,存储于pse...
2019-02-25 14:40:35
3893
原创 union联合体应用举例
union联合体一个重要的作用:(成员函数占用同一块内存)用一个成员把值存储在联合体中,然后用另一个成员查看内容如下例子:想将获取的camera温度的值由整型改为float型但是原子队列函数_atomic_store_n的第二个参数只能是int型,不能为float型,如果还想用原子队列,则可以定义一个union,用int进行存储,在最后需要得到camera温度返回值的时候,返回fl...
2019-02-25 14:40:22
929
原创 nRF52840 ADC校准
ADC具有温度相关偏移量,如果ADC要运行在较大的温度范围内,则开启校准会校准结果更加准确校准方法:定期运行CALIBRATEOFFSET,硬件会自动进行校准1 nordic提供的底层函数:ret_code_t nrf_drv_saadc_calibrate_offset(){ ASSERT(m_cb.state != NRF_DRV_STATE_UNINITIALIZED...
2019-02-25 14:40:14
2329
原创 周期性轮询中断脚实现psensor功能及psensor软件消抖
1 设计方案1)将psensor阈值写到寄存器中(0x90/0x91/0x92/0x93),这样,当得到的测量与之在设置阈值之外时就会产生中断2)设置中断寄存器(0x8F),默认状态是不使能中断,在0x8F中需要使能中断并且设置中断是高电平还是低电平(默认低电平)3)周期性轮询中断引脚,通过电平高低判断是否被遮挡,并在此基础上进行软件消抖处理4)将遮挡状态设置为一个标志位,用于传给...
2019-02-25 14:39:31
650
原创 psensor 硬件消抖 及 产线校准
1 psensor 硬件消抖 (仅中断模式下有支持)INTERRUPT PERSIST Regiseter(0X9E)方框中的值即为可以设置的N的值,连续N个值都在阈值范围内或者范围外才会触发一次中断比如measurement data的时间设置为100ms(0x84寄存器),即100ms会往寄存器中写一次数据,设置遮挡为中断拉低,N设置为0100(即5个PS值在阈值外)的话:则若...
2019-02-25 14:39:01
1063
原创 ububtu14.04安装arm-none-eabi-gcc
1 问题描述采用命令apt install gcc-arm-none-eabi进行安装,安装完成后,使用make指令进行编译,出现如下问题:arm-none-eabi-gcc: error: nano.specs: No such file or directory显示没有nano.specs这个文件浏览到如下页面https://stackoverflow.com/questions/2...
2019-02-20 09:34:06
1676
原创 linux系统安装python3.6
如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境比如yum!!!!!不要动现有的python2环境!1)安装依赖环境# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-dev...
2018-08-17 15:24:47
2758
原创 NRF52840 nrfjprog 擦写问题
1 问题描述1)在用到nrfjprog对hex文件进行升级时,发现第一次升级后无法跳到app中,进入updater,要再次进行升级才可以跳到app2)如果将板子的flash清空,即全部擦除,再用nrfjprog对hex文件进行升级,则可跳到app中2 问题解决1)怀疑我们烧进去的bin文件,在往板子里烧的过程中被篡改,导致烧录前及烧进板子里的bin有差异用J-Flash将...
2018-07-31 09:16:26
5734
原创 大小端、float与0作比较、IIC互斥、printf
1 大小端大端模式(Big Endian):数据的高字节,保存在内存的低地址中;数据的低字节,保存在内存的高地址中。小端模式(Little Endian):数据的高字节,保存在内存的高地址中;数据的低字节,保存在内存的低地址中。例如:16位宽的数0x1234,在不同的模式下,存储方式为: 0x4000 0x4001 小端模式 0x34 0x12 ...
2018-04-25 17:03:31
422
原创 git基本使用
1 各仓库图2举例:假设:项目在test分支上进行开发,在master上进行提交1 首先从服务器上clone项目到本地。2.git clone项目地址3.git branch test//建立一个test的分支4.git checkout test//切换到t...
2018-03-02 09:47:48
200
原创 C#使用axWindowsMediaPlayer实现音乐播放器
1 加载COM组件,把Windows Media Player控件拖放到Winform窗体中工具--》选择工具箱项--》COM组件--》Windows Media Player2 音乐播放器 public partial class Form1 : Form { public Form1() { Initia
2018-01-02 17:27:30
14505
7
原创 c# 对话框:打开对话框 保存文件对话框 设置字体及颜色对话框
1 打开对话框 private void button1_Click(object sender, EventArgs e) { //点击弹出对话框 OpenFileDialog ofd = new OpenFileDialog(); //设置对话框的标题 ofd.Title
2017-12-27 13:29:49
1260
原创 c# 添加MouseEnter事件 /Directory类 /ListBox实现双击更换图片/播放音乐
1 c# 添加MouseEnter事件当鼠标进入按钮的可见部分的时候,给按钮一个新的坐标 private void btnUnLove_MouseEnter(object sender, EventArgs e) { //给按钮一个新的坐标 //这个按钮活动的最大宽度就是 窗体的宽度减去按钮的宽度 i
2017-12-26 09:45:39
1373
原创 实时操作系统任务调度 DMA 中断向量表和中断处理 Memory 一种升级模式(从BootLoader到main)
1 任务调度:(优先级抢占调度+时间片轮洵调度)低优先级的任务正在执行中,另一个高优先级的任务进入就绪状态,则立马进入处理器抢占,执行高优先级任务,直到高优先级的任务释放处理器(完成、挂起、阻塞),才可继续用执行低优先级任务任务切换:任务切换时,把当前任务的现场数据保存在自己的任务栈里面,再把待运行的任务 的数据从自己的任务栈装载到 CPU 中,改
2017-12-23 16:04:52
987
原创 菜单 MDI多文档界面 Random产生随机数 imagebox实现图片上下切换
1 菜单:MenuStrip2 MDi(多文档界面)1)设置Form1位父窗口:将属性中IsMdiContainer设置为True 2)添加3个Windows窗体作为子类窗口,并设置其父窗体为Form1; Form2 frm2 = new Form2(); //新建一个窗体 Form2 frm2.MdiParent = this; //设置窗体 Form2
2017-12-23 09:33:36
260
原创 winform属性/事件/退出程序/ MessageBox.Show/TextBox和Label/Lbel实现跑马灯和闹钟/TextBox保存
1 控件属性visible:指示一个控件是否可见。Enabled:指示一个控件是否可用。Anchor设置为Up,Bottom,Left,Right后控件会随着窗口大小的改变而改变2 退出程序:1).this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2).Applic
2017-12-21 14:20:31
577
原创 c# path类与File类 文件流
1 Path类 static void Main(string[] args) { string str = @"C:\3000soft\Red Spider\Data\Message\老赵.wav"; //获得文件名 Console.WriteLine(Path.GetFileName(st
2017-12-19 15:40:23
593
原创 c# ArryList 键值对
1 ArrayListList1)新建ArrayList ArrayList list = new ArrayList();2)添加单个元素 list.Add(true); ist.Add(1); list.Add("张三");3)添加集合元素 list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7,
2017-12-19 14:47:35
3936
原创 c# 继承
1、继承我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类。Reporter、Programer、Driver 子类 派生类Person 父类 基类1)子类继承了父类,那么子类从父类那里继承过来了什么?首先,子类继承了父类的属性和方法,但是子
2017-12-18 16:50:11
278
原创 c#值类型与引用类型 /字符串的不可变性/字符串的方法
1 值类型与引用类型 值类型:int、double、bool、char、decimal、struct、enum 引用类型:string、自定义类、数组 存储: 值类型的值是存储在内存的栈当中。 引用类型的值是存储在内存的堆中。 2、字符串 1)、字符串的不可变性 当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。 当程序结束后,GC(垃圾回收器)扫描整
2017-12-18 14:22:45
397
2
原创 c# 构造函数 析构函数 this关键字
1 构造函数 作用:帮助我们初始化对象(给对象的每个属性依次的赋值) 构造函数是一个特殊的方法: 1)、构造函数没有返回值,连void也不能写。 2)、构造函数的名称必须跟类名一样。创建对象的时候会执行构造函数。 构造函数是可以有重载的。(如下例中的构造函数1/2/3/4实现了重载)类当中会有一个默认的无参数的构造函数,当你写一个新的构造函数之后,不管是有参数的还是无参数的,那个默认的无参
2017-12-15 16:05:49
786
原创 C#静态和非静态的区别及举例介绍
静态和非静态的区别1)、在非静态类中,既可以有实例成员,也可以有静态成员。2)、在调用实例成员的时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要使用类名.静态成员名;总结:静态成员必须使用类名去调用,而实例成员使用对象名调用。静态函数中,只能访问静态成员,不允许访问实例成员。实例函数中,既可以使用静态成员,也可以使用实例成员。 静态类中只允许有
2017-12-15 14:56:37
590
原创 c# 类和属性
1 类语法:public class 类名{ 类中可以存放的对象有: 字段;属性;方法;构造函数;}好了一个类之后,我们需要创建这个类的对象,管创建这个类的对象过程称之为类的实例化。使用关键字 new类是不占内存的,而对象是占内存的。2 属性属性的作用就是保护字段、对字段的赋值和取值进行限定。属性的本质就是两个方法,一个
2017-12-15 14:02:40
880
2
原创 内存分配与字段 堆和栈 XIP(片上执行)
1 内存分配与字段 程序编译时,编译器将代码翻译成汇编代码,然后汇编器将汇编代码翻译成机器代码(二进制),得到目标文件,最后链接器将目标文件链接成可执行文件。而目标文件和可执行文件的格式一般是类似的,由一个个section(段)组成,一般来说有代码段、数据段、bss段等,有些平台还会有.rodata段(只读数据段),用来放置只读变量(const变量)和字符串常量,这样不仅可以在语义上
2017-12-15 09:37:26
755
转载 变量的生命周期和{ }的相关知识
生命周期如果和寄存器、内存什么的挂钩,就变得不那么好理解。、其实生命周期的概念也很简单,无非就是变量从哪到哪有效。这里只说生民周期和大括号{ }的联系浅显一点说,一个变量的生命周期就是从上一个 { 开始,到下一个 } 结束为止[1]看这么一个程序,就会对生命周期的概念更了解一点[cpp] view plain copy
2017-12-11 10:32:40
241
原创 c# out、ref、params使用
1)、out参数。如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。out参数就侧重于在一个方法中可以返回多个不同类型的值。using System;using System.Collections.Generic;using System.Linq;
2017-12-09 15:49:07
243
原创 C# 数据类型 占位符 convert 数组声明
1 快捷键Ctrl+J 智能提示Ctrl+Z撤销:ctrl+K+D: 快速对齐代码Ctrl+K+C 注释所选代码Ctrl+K+U 取消注释代码2 打印Console.WriteLine("要打印的内容"); //往控制台打印数据Console.ReadKey(); //暂停当前程序,等待用户按下任意键继续,按下的任意键将显示在我们的控制台当中C
2017-12-09 15:03:06
678
原创 C#枚举 枚举和int以及string类型之间的转换 结构 重载 全局变量
1 枚举语法:public enum 枚举名{ 值1, 值2, 值3, ........}public:访问修饰符。公开的公共的,哪都可以访问。enum:关键字,声明枚举的关键字将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。枚举就是一个变量类型 ,int--double strin
2017-12-09 15:01:37
2146
转载 MFC自制进度条
改变进度条的颜色http://www.codefans.net/articles/1454.shtml使用方法1.将三个文件添加到工程2.在对话框上添加一个进度条;新建一个类CGradientProgressCtrl,其基类为CProgressCtrl3.为进度条添加变量,变量类型CGradientProgressCtrl,否则运行不成功添加方法:进度条右键--
2017-12-05 11:23:26
2881
原创 MFC自绘进度条
添加类继承 CProgressCtrl[cpp] view plain copy#pragma once class CMyProgressCtr:public CProgressCtrl { public: CMyProgressCtr(); ~CMyProgressCtr(); priv
2017-12-01 14:46:44
2509
2
转载 MFC——文件打开和保存对话框(CFileDialog)
最近要做一个文件打开和保存的对话框,现将相关的代码记录如下,用以备忘!所用控件:2个静态标签(Static Text):用以显示功能标签;2个文本框(Edit):用以显示打开的文件路径全名要保存的文件路径全名,设置其Read Only属性为true将文本框设置为不可编辑;2个按钮(Button):用以浏览文件;打开文件对话框C
2017-12-01 10:53:48
4482
转载 CString转为char* unicode,MFC中的使用
MFC中添加图片,现将图片加入到资源[cpp] view plain copy////加入升级成功的图片 //CBitmap bitmap; //bitmap.LoadBitmapW(IDI_ICON1); //CStatic *p = (CStatic*)GetDlgItem(showPic); //p->Modif
2017-12-01 10:50:44
341
原创 MFC 静态文本框使用/更改button背景色/不使能button/设置标题/不显示控件/窗口最大最小化
1 设置标题SetWindowText(_T("Lenovo Mirage AR Headset FW Upgrade Tool"));2 不显示某个控件 GetDlgItem(IDC_STATIC)->ShowWindow(SW_HIDE);3、实现窗口的最大化和最小化 将对话框的Border选为None,添加两个按钮,min和close,将按钮的bitmap设置为TRUE;用于添加最小和
2017-11-30 15:48:05
975
原创 mac OS开发 线程/定时器/控件隐藏与不使能/关闭窗口与退出app
1 新建线程: 方法1:使用对象方法 //创建一个线程,第一个参数是请求的操作,第二个参数是操作方法的参数 NSThread *thread=[[NSThread alloc]initWithTarget:self selector:@selector(loadImage) object:nil]; //启动一个线程,注意启动一个线程并非就一定立即执行,而是处于就绪状态,当系统
2017-11-29 10:05:16
1281
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人