- 博客(211)
- 资源 (13)
- 收藏
- 关注
转载 【转载】从单片机到操作系统,走进FreeRTOS
大家还可以了解一下遍历列表的宏,它在list.h文件中:2{ \8 { \10 } \12}这是一个宏,用于列表的遍历,返回的是列表中列表项的pxOwner成员,每次调用这个宏(函数)的时候,其pxIndex索引会指向当前返回列表项的下一个列表项。
2024-07-30 08:33:27
30
原创 嵌入式编程中,高低位交换如何实现?
最近的协议中遇到字节高低位转换的问题,于是偷懒上网查看,遇到类似的问题,也认识一个新的名字,叫做蝶式交换。协议要求字节低位在左,高位在右,对每个字节做转换处理,逐个交换其高低位,例如,经过对应位的交换,变成。这里就需要有位操作的知识,参考 位操作运算有什么奇技淫巧?(附源码)这里我们以8位数据高低位转换为例子:...
2022-06-17 09:47:58
795
1
原创 【无标题】单片机上升沿和下降沿
单片机开发过程中,GPIO上升沿和下降沿检测应用的地方还是很多,但是怎么样编写这个功能模块,网上资料参差不齐,结合实际和参考PLC逻辑,自行编写了一套逻辑。
2022-06-17 08:37:04
2552
2
转载 模拟I2C
I2C协议的描述请网上搜索,下面将结合时序图+源代码程序一起讲解关于I2C协议中重要的几点。 1.开始和停止条件SCL时钟电平为高:SDA数据线由高 -> 低 为总线开始条件;SDA数据线由低 -> 高 为总线结束条件;(注意:开始之后将SCL变为低电平,防止误操作SDA使其通信停止,见源代码)时序图:源代码程序: 2.数据位传输SCL时钟电平为低, 可以改换SDA数据线的电平,在SC...
2018-03-09 17:26:22
1427
转载 VIM 简单的替换删除命令
1,简单替换表达式去掉所有的行尾空格: %s/\s\+$//去掉所有的空白行: %s/\s∗\n\+/\r/去掉所有的"//"注释: %s!\s*//.*!!去掉所有的"/*...*/"注释: %s!\s*/ \*\_.\{-}\*/\s*! !g删除DOS方式的回车^M :%s/r//g :%s= *$== 删除行尾空白
2017-04-22 10:52:50
548
转载 [LCD,hdimi,tvout]显示驱动的基本知识,VSYNC,HSYNC,PCLK
在手机平台,LCD,Camera,TV的接线上,都会用到PCLK,VSYNC和HSYNC这三个信号。可见这三个信号跟显示的关系非常的大。首先我们先看看这三个信号的作用:PCLK:有些方案给他起名叫:DotCLK。是像素点的同步时钟信号。也就是每个PCLK对应一个像素点。VSYNC:是场同步信号。以高电平有效为例,VSYNC置高直到被拉低,这个区段所输出的所有影像数据组成一个frame
2017-04-14 09:41:04
4049
转载 UML类图关系和StarUML使用说明
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现转自:http://blog.csdn.net/hguisu/article/details/7609483类与类图1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的
2017-01-23 14:23:35
2716
转载 Android下USB Accessory的实现分析
Android下USB Accessory的实现分析 摘要:本文介绍了USB Accessory的一些背景知识,并从Linux驱动到Android Framework层,阐述了USB accessory的整个实现过程。关键词: Android,USB,Accessory, ADK1. 背景介绍自Android 3.1之后的版本,Google引入了USB Accessori
2017-01-19 17:13:41
1169
转载 UE复制内容,粘贴到source insight的时候不会自动换行,而是显示为很长一行
UE复制内容,粘贴到source insight的时候不会自动换行,而是显示为一行这个问题是设置一下UE就可以了.Advanced--->Configuration--->文件处理--->Dos/UNIX/MAC处理 ---> 自动转换到DOS格式
2016-12-26 19:22:52
4261
转载 Linux 常用命令
Linux 常用命令基本cd - 返回到上一次的工作目录export LANG=en_US,export 对于环境变量的设置也能作用于子shellps -ef | grep nginx ,搜索,这儿用到了管道passwd root 修改密码top 监控CPU 内存等$? 上一个命令执行的退出状态,成功为0,不成功为非0hostna
2016-10-13 10:17:26
323
转载 android 里面的 AutoMutex
在 frameworks/base/libs/binder/ProcessState.cpp 的 startThreadPool() 函数中,函数一开始,就声明了:AutoMutex _l(mLock);就去了解了一下,不复杂,但感觉很有思想。在 frameworks/base/include/utils/threads.h 中,有:
2016-08-31 17:51:32
511
转载 linux下c程序调用reboot函数实现直接重启
#include #include int reboot(int flag);------------------------------------1 #include 2 #include 3 int main()4 {5 /* 同步磁盘数据,将缓存数据回写到硬盘,以防数据丢失 */6 sync();7 return
2016-08-09 19:17:04
2105
转载 linux 同步IO: sync、fsync与fdatasync
传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed write)(Bach
2016-06-16 10:21:39
437
转载 linux open 函数O_DIRECT标志位使用说明
打开文件的时候如果使用O_DIRECT按照man命令说的就是直接进行文件IO,而系统不进行缓存,会影响文件读写速度,但可能对用户内存影响较小。这个标志位在使用的时候还是有些东西需要注意的,否则写文件时既没有报错,而内容也没有写入文件,会搞得人一头雾水。注意事项:1. 每次写入的数据块大小要是文件所在块设备 block size的整数倍。 可以通过如下命令查看当前文件系统
2016-06-16 10:18:33
925
转载 C++析构函数为什么要为虚函数
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #includeusing namespace std;class ClxB
2016-06-13 17:36:09
331
转载 MP4文件格式的解析,以及MP4文件的分割算法
mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime。以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的“媒体头”。当然,流媒体点播也可以采用flv格式来做,flv也可以封装H.264视频数据的,不过Adobe却不推荐这么做,人家说毕竟mp4才是H.264最佳的存储格式嘛。 这篇文章先简单介绍一下mp4文件的
2016-05-31 14:06:32
372
转载 MP4文件格式详解——结构概述
一、基本概念1、 文件,由许多Box和FullBox组成。2、 Box,每个Box由Header和Data组成。3、 FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version和24bits flags。 4、 Header,包含了整个Box的长度size和类型type。当size==0时,代表这是文件中最后
2016-05-31 14:04:53
890
1
转载 MP4文件格式详解——文件类型ftyp
ISO 14496 - 12 定义了一种封装媒体数据的基础文件格式,mp4、3gp、ismv等我们常见媒体封装格式都是以这种基础文件格式为基础衍生的。本系列文档从MP4文件入手,对文件中重要的box进行解析。本次解析ftyp box[cpp] view plaincopyprint?aligned(8) class FileTyp
2016-05-31 14:03:30
975
转载 MP4格式分析之元数据moov(一)
movie box —— container box whose sub-boxes define the metadata for a presentation (‘moov’) moov包含的一系列次级box中存储着媒体播放所需的元数据(metadata)。两点疑问:什么是元数据?moov有哪些次级box?1)元数据:描述数据的数据。针对媒体文件而言元数
2016-05-31 13:57:03
782
转载 MP4格式分析二
4.2.2.3.1 Media Information Header Box(vmhd、smhd、hmhd、nmhd)Video Media Header Box(vmhd) 字段字节数意义box size4box大小box type
2016-05-31 13:54:35
482
转载 mp4格式分析之元数据moov(三)
由于我本地没有找到包含tref box的MP4文件,因此无法以实际数据分析。但通过协议足以使我们明白tref box的作用:tref box可以描述两track之间关系。比如:一个MP4文件中有三条video track,ID分别是2、3、4,以及三条audio track,ID分别是6、7、8。在播放track 2视频时到底应该采用6、7、8哪条音频与其配套播
2016-05-31 13:53:04
1049
转载 MP4格式分析之元数据moov(二)
本次继续解析moov box, moov √ container for all the metadata mvhd √
2016-05-31 13:51:00
723
转载 MP4格式分析一
目前MP4的概念被炒得很火,也很乱。最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。随后MP4概念被转移到视频上,对应的是MPEG-4标准。而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器。但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分
2016-05-31 13:46:57
370
转载 C++静态成员函数和变量
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静
2016-05-27 14:18:58
309
原创 <minigui>GDI双缓冲之道
图形界面编程,常见棘手问题就是出现绘图出现闪屏。这一现象也严重影响用户体验。前段时间刚接触minigui就出现一个闪屏半天不得其解的一个问题,查了很多网络资料使用方法都尽人意。双缓冲绘图原理:双缓冲双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘
2016-05-27 11:44:22
2640
转载 AAC ADTS格式分析 .
[+]ADTS是个啥ADTS内容及结构将AAC打包成ADTS格式1.ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资
2016-03-08 16:02:33
1710
转载 MP4V2--如何使用 MP4SetTrackESConfiguration .
如何使用 MP4SetTrackESConfigurationhttp://swchoutech.blogspot.hk/2012/11/mp4settrackesconfiguration.html在使用 MP4v2 製作 .mp4 檔案時,如果你要使用的 Audio 編碼格式是 AAC,那麼你就需要使用 MP4SetTrackESConfiguration 這個函式來設定解碼需要的資料
2016-03-07 17:59:49
834
转载 使用git 新建分支以及管理分支
使用git 新建分支以及管理分支Created Saturday 24 November 2012 在你的github分支上, 你需要保持你的主分支干净,我说的干净就是没有任何改变,那么你可以在任何时候从你的主分支修建一个分支。每次,你想提交一个补丁或者一个新特性时,你需要为它新建一个分支,而这个分支无论如何都会从你的主分支复制过来。 当你要在一个分支做拉请求时
2016-01-20 15:55:23
330
转载 xTaskCreate .
创建新的任务并添加到任务队列中,准备运行 Parameters: pvTaskCode 指向任务的入口函数. 任务必须执行并且永不返回 (即:无限循环).pcName 描述任务的名字。主要便于调试。最大长度由configMAX_TASK_NAME_LEN.定义usStackDepth 指定任务堆栈的大小 ,堆栈能保护变量的数目- 不是字
2015-12-26 14:52:21
5720
转载 h264中avc和flv数据的解析 .
1、计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据(只有第一帧需要);2、计算 NALUs 得到帧数据。 计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据H.264 视频流的 CodecPrivateData 实际上就是 AVCDecoder
2015-12-16 20:09:41
427
转载 doc基础操作命令
[+]一clsclear screen的简写二dirdirectory的简写三cdchange directory的简写四从一个分区进入另一个分区中五文件操作命令movecopydel六文件夹操作命令mdmkdirrdrmdir七type命令八fc命令九find命令十findstr命令十一more命令十二prompt命令十三title命令十四ver命令十五help命令十六管道命令
2015-12-15 16:59:39
1104
转载 RGB YUV转换原理
[+]RGB TO YUV转换原理及代码示例数据表述方式转换公式代码示例1前言2YUV相关色彩空间模型1YUV 与 YIQ YcrCb3YUV2RGB快速算法分析1整型算法2部分查表法3完全查表法4进一步的思考4RGB2YUV RGB TO YUV转换原理及代码示例[转]RGB TO YUV转换原理及代码示例
2015-10-08 14:33:05
1649
2
转载 WIFI学习
开始学习WIFI相关内容,目前只了解一点WIFI 的相关名字和概念,对其实现和相关标准的了解基本为零,所以可以认为是从零学起。由于上年龄易忘事,所以强迫记录之。一、WIFI工作的几种模式: WIFI最常见的使用是做为WIFI热点,让其他用户以无线的方式接入构建LAN或WAN,此时WIFI也即作为AP模式,即术语中的 master模式。关于wifi的模式可以直接查看 iwcon
2015-08-06 16:51:25
724
原创 QT安装
step 1 安装依赖库,在安装说明的最下面sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
2015-08-05 10:49:45
454
转载 #!/bin/sh与#!/bin/bash的区别
Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux 操作系统缺省的 sh
2015-07-20 17:09:53
1454
转载 ioctl用法详解
ioctl 函数 本函数影响由fd 参数引用的一个打开的文件。 #include int ioctl( int fd, int request, .../* void *arg */ ); 返回0 :成功 -1 :出错 第三个参数总是一个指 针,但指针的类型依赖于request 参数。 我们可以把和网络相关 的请求划分为6 类: 套接口
2015-05-11 11:01:23
604
转载 sscanf函数用法详解
sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只
2015-03-26 10:50:32
670
转载 exec()与system()的区别
这应该算是老生长谈的问题了,在此做一个记录。执行exec()后,老的进程上下文将被exec出来的新的进程上下文覆盖,新进程代替原进程执行。执行system()后则相当于fork()出一个子进程,并等待此子进程执行完毕。请看如下程序以加深理解。[cpp] view plaincopyprint?/* rt.c */ int main() {
2015-03-24 14:44:09
409
转载 GUN Makefile
GUN Make介绍1 GUN Make 和 makefile简介在大型的开发项目中,通常有几十到上百个的源文件,如果每次均手工键入 gcc 命令进行编译的话,则会非常不方便。因此,人们通常利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源 文件。利用这种自动编译可大大
2015-02-13 16:44:55
890
原创 find . -name "*ab*" -exec rm -f {}\;
. 在此表示当前目录-name “*ab” 表示查找以ab结尾的文件或文件名。-exec表示执行什么命令。后面跟要执行的命令。此处是rm -f,表示不确认删除。{} \;表示把查找到的结果发送到此来。整句命令表示:在当前目录下查找以ab结尾的文件,并删除
2015-02-10 14:00:24
2316
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人