05 2016 档案

摘要:工作中看同事摄像头配置的时候有2种格式PAL、NTSC。如果摄像头的格式配置不对的话会出现重影、黑白没颜色、闪屏等等。 TVP5150 PAL、NTSC配置。http://bbs.csdn.net/topics/370132387 TVP5150的资料 http://www.docin.com/p- 阅读全文
posted @ 2016-05-29 16:59 SuGuolin 阅读(607) 评论(0) 推荐(0) 编辑
摘要:TCP/IP协议分层 提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。如图所示 TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这 阅读全文
posted @ 2016-05-27 11:33 SuGuolin 阅读(199) 评论(0) 推荐(0) 编辑
摘要:互斥锁和信号量很相似, RT-Thread 中的互斥锁也有静态和动态之分,和互斥锁有关的操作如下:初始化—rt_mutex_init()(对应静态互斥锁);建立—rt_mutex_create()(对应动态互斥锁);获取—rt_mutex_take();释放—rt_ mutex_release(); 阅读全文
posted @ 2016-05-23 11:26 SuGuolin 阅读(2517) 评论(0) 推荐(0) 编辑
摘要:上面是魔笛开发板上 LED 和按键的 IO 分布,我们通过信号量的方法来同步按键线程和LED 线程,实现当 enter 键按下后,点亮或关闭 LED 的动作。 在开发板上实际运行程序后,我们看到,信号量确实起到了按键线程和 led 线程之间的同步作用:只有当按键按下后, led 灯才会有动作。 阅读全文
posted @ 2016-05-23 11:07 SuGuolin 阅读(1991) 评论(0) 推荐(0) 编辑
摘要:以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行。按照以前的方法,我写了一段汇编代码,如下: 代码没做什么具体的操作,大致如下: 1.只是将0写入看门狗寄存器0xE 阅读全文
posted @ 2016-05-20 10:48 SuGuolin 阅读(322) 评论(0) 推荐(0) 编辑
摘要:除了串口可以登入控制台,还可以用SSH2. ftp连接的时候要打开 vi /usr/sbin/stupid-ftpd.conf 修改端口,修改完端口,登入的时候root的密码跟以前不一样,可以从stupid-ftpd.conf 查看到 vi /etc/init.d/auto_config_netwo 阅读全文
posted @ 2016-05-19 17:16 SuGuolin 阅读(401) 评论(0) 推荐(0) 编辑
摘要:抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为 0 时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: take ( 获取) 和Release(释放)。当一个线程调用 take 阅读全文
posted @ 2016-05-17 17:03 SuGuolin 阅读(2431) 评论(0) 推荐(0) 编辑
摘要:禁止系统调度上一节《 多线程导致的临界区问题》中由于 test1 线程被 test2 线程打断,才导致了我们没有得到预期的结果,我们一般可通过关闭中断和调度器上锁这两种简单的途径来禁止系统调度,防止线程被打断,从而保证临界区不被破坏。 1、 关闭中断线程中关闭中断保护临界区的结构如下: 把调度器锁住 阅读全文
posted @ 2016-05-17 16:13 SuGuolin 阅读(1749) 评论(0) 推荐(0) 编辑
摘要:结果分析:在 test1 线程的 for 循环中我们对 i 做了 10000 次累加,如果没有其他线程的“干预”,那么全局变量 g_tmp 的值应该是 10000,现在的输出结果是 10001,这意味全局变量 g_tmp 的值被线程 2 修改过。整个程序运行过程中各个线程的状态变化是这样的: rt_ 阅读全文
posted @ 2016-05-17 12:02 SuGuolin 阅读(2894) 评论(0) 推荐(0) 编辑
摘要:CPU 的使用率一般是我们比较关心的问题,在这里我们就用空闲线程的钩子函数去统计 CPU 的使用率,并通过串口打印出来。首先我们在初始化线程中设置好钩子函数,并在 LED 线程中给系统人为的加入很多“事情”,让其占用率变高,方便统计,然后每个 1 秒中打印一次 CPU 使用率。其中 CPU 的使用率 阅读全文
posted @ 2016-05-17 11:46 SuGuolin 阅读(2595) 评论(0) 推荐(1) 编辑
摘要:前面两个例子演示的线程调度是由系统“主动干预”的情况的线程切换,其实我们也可以根据实际情况,采用主动让出 CPU 使用权。RT-Thread 中的系统函数: rt_thread_yield(),可以让调用它的线程暂时让出 CPU 的使用权,而使下一个最高优先级的线程得以运行,但这时调用 rt_thr 阅读全文
posted @ 2016-05-17 11:35 SuGuolin 阅读(1818) 评论(0) 推荐(0) 编辑
摘要:线程 test2 的打印信息输出不全,说明 test2 线程的执行被打断了, 因为 test1 线程和 test2线程的优先级都是 15,并不会发生抢占的情况,所以说 test2 线程是等到自己的执行时间片到达时,被系统剥夺了 CPU 使用权,而将使用权交给了 test1 线程,从而 test1 线 阅读全文
posted @ 2016-05-17 11:21 SuGuolin 阅读(1549) 评论(0) 推荐(0) 编辑
摘要:程序运行分析:1、首先系统调度 test1 线程投入运行,打印第 0 次运行的信息,然后通过延时函数将自己挂起 100 个时间片,系统将 test2 线程调度运行;2、 test2 线程打印第 0 次运行信息,然后通过延时函数将自己挂起 50 个时间片;3、系统中无任务运行,系统将空闲线程调入运行; 阅读全文
posted @ 2016-05-17 09:32 SuGuolin 阅读(2895) 评论(0) 推荐(0) 编辑
摘要:RT-Thread 实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性,当进行最小配置时,内核体积可以到 3k ROM 占用、 1k RAM 占用。 RT-Thread 中的“线程”一般由三部分组成:线程代码(函数)、 线程控制块、 线程堆栈。 /* 指向线程控制块的指 阅读全文
posted @ 2016-05-16 17:17 SuGuolin 阅读(835) 评论(0) 推荐(0) 编辑
摘要:#include using namespace std; int func(int c) { cout<<"int func(int c)"<<endl; } int func(char c) { cout<<"int func(char c)"<<endl; } //函数的重载就是函数名相同,根据参数的类型决定调用哪个函数 int main() { int ... 阅读全文
posted @ 2016-05-15 23:36 SuGuolin 阅读(243) 评论(0) 推荐(0) 编辑
摘要:这段代码在C语言是编译不通过,因为C语言不支持表达式不赋值;在C++可以编译过。 C++里的a=b=3;与C语言一样,但是C++还有一种写法(a=b)=10,这样的是b的值赋给a,然后又把10赋给a,但是10没有赋给b;这里涉及到运算符重载的知识。 C++ C语言 C++ 阅读全文
posted @ 2016-05-15 18:30 SuGuolin 阅读(4178) 评论(0) 推荐(0) 编辑
摘要:1、DMA中配置要放在串口的配置后面。 2、DMA有3种中断方式:传输完成、传输一半、传输错误 3、如果要用DMA容易造成串口数据还没发完就把485的控制脚拉低导致数据没发完。解决办法是DMA发送完成中断里加延时(但是中断里延时不好)。 阅读全文
posted @ 2016-05-14 17:48 SuGuolin 阅读(449) 评论(0) 推荐(0) 编辑
摘要:在Flash中有一块只读区域,从地址0x780E开始,蓝牙的MAC以小端方式存放在里面。 在TI的Peripheral例程里面,添加一个特征值,只读属性,6字节长度(蓝牙MAC长度为48-bit,6字节)。 蓝牙的MAC是全球唯一的,一般情况下,固件的开发中不会去使用,但也不排除二般情况。 #def 阅读全文
posted @ 2016-05-11 15:52 SuGuolin 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:Task1的 0处创建了一个信号量mySem,1处获得mySem,执行完PrintStr(),释放mySem,3处才能得到mySem,执行PrintStr();在执行PrintStr假设时间较长Task1任务优先级比较高,可能会抢占Task2,但是由于mySem已经被Task2的3处占用,所以Tas 阅读全文
posted @ 2016-05-11 07:24 SuGuolin 阅读(319) 评论(0) 推荐(0) 编辑
摘要:在 simpleBLEPeripheral.c的 #define SBP_PERIODIC_EVT_PERIOD 1000// How often to perform periodic event多久执行周期性事件 设置广播周期时间1000表示每秒广播一次 advertData[]这个就是广播数据 阅读全文
posted @ 2016-05-10 17:25 SuGuolin 阅读(367) 评论(0) 推荐(0) 编辑
摘要:HCI_EXT_SetTxPowerCmd()是用来设置发射功率的. 有-23dbm, -6dbm, 0 dbm, +4dbm四个级别. #define LL_EXT_TX_POWER_MINUS_23_DBM 0 // -23dbm 功率 最小#define LL_EXT_TX_POWER_MIN 阅读全文
posted @ 2016-05-10 15:35 SuGuolin 阅读(745) 评论(0) 推荐(0) 编辑
摘要:错误的做法: [1] (A)不检查指针的有效性,说明答题者不注重代码的健壮性。 (B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型的隐式转换没有深刻认识。在本例中char *转换为bool即是类型隐式转换,这 阅读全文
posted @ 2016-05-10 14:49 SuGuolin 阅读(7731) 评论(0) 推荐(0) 编辑
摘要:1、C语言 C++ 阅读全文
posted @ 2016-05-09 07:19 SuGuolin 阅读(264) 评论(0) 推荐(0) 编辑
摘要:osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)与osal_set_event(Music_TaskID,event)的区别是osal_start_timerEx周期性的一直推送事件周期时间由SB 阅读全文
posted @ 2016-05-07 11:28 SuGuolin 阅读(1279) 评论(0) 推荐(0) 编辑
摘要:产品唯一的身份标识非常适合:● 用来作为序列号(例如USB字符序列号或者其他的终端应用)● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。● 用来激活带安全机制的自举过程96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情 阅读全文
posted @ 2016-05-03 22:10 SuGuolin 阅读(2138) 评论(2) 推荐(0) 编辑
摘要:#include /* date type defination */ typedef signed char rt_int8_t; typedef signed short rt_int16_t; typedef signed long rt_int32_t; typedef unsigned char rt_uint8_t; typedef unsigne... 阅读全文
posted @ 2016-05-03 22:09 SuGuolin 阅读(494) 评论(0) 推荐(0) 编辑