- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 从零开始学习CC1101开发之路(三)
CC1101的寄存器初始化,是在CC1101工作这前必须做的一件事情,最主要初始化的三个参数是频率,速率,功率。最好是以结构体的方式初始化,否则当你改动速率或者频率或者功率的时候,你还要改变其他几个相关的寄存器,这样做就比较麻烦,我当初的做法是:利用SmartRF,把我需要的频率431,433,435,我需要的速率1.2K,2.4K,4.8K,10K......等等全部配置一边,然后利用截图截下S
2012-07-26 14:58:43
4672
3
原创 从零开始CC1101的学习开发之路(二)
先说说GDO0和GDO2,这两个东西是搞CC1101很重要的两个东西,它连着你的单片机的IO口。因此你完全可以利用中断来判断当前的模块处于一种什么样的情况,当然这个还跟你怎么去设置IFGDO0和IFGDO2这两个寄存器有关系了,详见CC1101中文手册64页。不过我的发送没有用中断来做,因为查询够了。当然查询也看你怎么查了,我见到过的有两种,如下:1.先判断GDO0/GDO2(看你怎么连了
2012-07-24 19:04:59
8181
2
原创 从零开始CC1101的学习开发之路(一)
希望能通过这几天的连续几篇博客,能让和我一样从零开始接受CC1101的朋友,少走弯路,加快进度!同时也记录自己开发的时候遇到的困难,或许以后也能用到!!公司的项目总是急的如夏日里的雷阵雨,又快又狠!这次是个无线抄表项目,用到的模块式TI的CC1101,在这里要再次感谢利尔达的FAE和AE们,要不是他们。哎~~从拿到CC1101的中文手册,无论如何也不知道该如何下手,把文档从头到尾看了一
2012-07-23 20:05:12
3424
2
原创 第一个自己做的项目-窨井盖防盗系统
小的是终端节点,我叫他XSensor,很酷的名字大的是基站,我叫它XTelegon,有点搓 不过最终他们的命运如何,我自己都不清楚。期待有个不错的表现
2011-07-26 13:49:19
488
原创 MSP430低功耗策略探讨
众所周知,MSP430以其低功耗的特性一直傲视群单片机,但是除了MSP430单片机本身的低功耗的特点,我们还可以使用一些方法和策略,使我们的系统功耗更低,这些策略是我书上看到的,觉得很有用,拿来和大家分享一下:1、将不用的I/O引脚设置为高或者低状态,不要让其悬空。2、在不需要运行时间严格要求的任务,如UART通信或精密脉冲时钟时序等,尽可能使用内 部时钟,这通常是低功耗的首选。3、关断所有不使用的外设:如PWM模块、AD转换器等等。4、尽可能在程序代码中使用查找表,而不是让CPU去计算结果
2011-06-01 10:57:00
1771
1
转载 MSP430单片机低功耗结构
当系统时钟发生器基本功能建立之后,CPU内状态寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF位是重要的低功耗控制位。只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可恢复先前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些控制位;这样允许程序在中断返回(RETI) 后,以另一种功耗方式继续运行。 <br /> <br /> 各控制位的作用如下:<br />SCG1: 复位,使能SMCLK;置位,禁止SMCLK。<br />SCG0: 复位,激
2011-06-01 10:43:00
735
原创 电压跟随器的作用
<br />电压跟随器具有输入阻抗高、输出阻抗低的特点,你可以极端一点去理解,当输入阻抗很高时,就相当于对前级电路开路,当输出阻抗很低时,(输出阻抗低,相当于电源内阻小,在电源输出电流变化情况下,落在内阻上的压差变化小,所以... )对后级电路就 相当于一个恒压源,即输出电压不受后级电路阻抗影响。一个对前级电路相当于开路,输出电压又不受后级阻抗影响的电路当然具备隔离作用,即使前、后级电路之 间互不影响。<br /> <br /> <br />电压隔离器输出电压近似输入电压幅度,并对前级电路呈高阻状态,对后级
2011-05-30 16:41:00
1140
原创 ucgui移植到stm32
<br />这段时间移植了一下ucgui的,在ourdev上收益匪浅,这次移植也从中得到了很大的帮助,尤其是sunyouyuan 苹果写的这篇文章介绍的也很详细,但我在此补充一下,他的工程只能适合特定分辨率的屏,原因就在ucgui.lib这个文件上,这因为这个它的存在,如果你的屏超过了320*240的话,只修改配置LCDConf.h文件是不行的。在此我把最新的ucgui3.9版本的源码整合了进去,从此甩开了ucgui.lib的限制,下面我详细说一下: <br /> 硬件:stm32开发版(stm32f1
2011-01-19 14:28:00
3777
转载 关于STM32的systick定时器的详细说明
<br />SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。<br />Cortex‐M3处理器内部
2010-11-10 15:34:00
377
转载 关于STM32的systick定时器的详细说明
<br />SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。<br />Cortex‐M3处理器内部
2010-11-10 15:34:00
395
转载 关于STM32的systick定时器的详细说明
<br />SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。<br />Cortex‐M3处理器内部
2010-11-10 15:33:00
1756
原创 STM32定时器的输入滤波机制
<br />STM32的定时器输入通道都有一个滤波单元,分别位于每个输入通路上(下图中的黄色框)和外部触发输入通路上(下图中的兰色框),它们的作用是滤除输入信号上的高频干扰。<br /> <br /><br />具体操作原理如下:<br />在TIMx_CR1中的CKD[1:0]可以由用户设置对输入信号的采样频率基准,有三种选择:<br />1)采样频率基准fDTS=定时器输入频率fCK_INT<br />2)采样频率基准fDTS=定时器输入频率fCK_INT/2<br />3)采样频率基准fDTS=定时器
2010-11-10 10:54:00
1405
3
转载 STM32中定时器的时钟源
<br />STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。<br />下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:<br /><br />从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。<br />下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系
2010-11-10 10:45:00
708
转载 三态门
<br />三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。高阻态相当于隔断状态(电阻很大,相当于开路)。 三态门都有一个EN控制使能端,来控制门电路的通断。 可以具备这三种状态的器件就叫做三态(门,总线,......). <br /> 计算机里面用 1和0表示是,非两种逻辑,但是,有时候,这是不够的, 比如说,他不够富有,但是他也不一定穷啊;她不漂亮,但也不一定丑啊,处于这两个极端的中间,就用那个既不是+ 也不是―的中间态表示,叫做高阻态。 高电
2010-07-24 09:44:00
517
转载 三态门
<br />三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。高阻态相当于隔断状态(电阻很大,相当于开路)。 三态门都有一个EN控制使能端,来控制门电路的通断。 可以具备这三种状态的器件就叫做三态(门,总线,......). <br /> 计算机里面用 1和0表示是,非两种逻辑,但是,有时候,这是不够的, 比如说,他不够富有,但是他也不一定穷啊;她不漂亮,但也不一定丑啊,处于这两个极端的中间,就用那个既不是+ 也不是―的中间态表示,叫做高阻态。 高电
2010-07-24 09:44:00
514
转载 LM386
<br />LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。<br /> <br />一、LM386内部电路<br /> <br /> <br /> <br />LM386内部电路原理图如图所示。与通用型集成运放相类似,它是一个三级放大电路。<br /> <br />第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从
2010-07-14 15:41:00
4303
原创 1602
<br />日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。 <br />在单片机系统中应用晶液显示器作为输出器件有以下几个优点:<br />显示质量高<br />由于液晶显示器每一
2010-07-05 10:26:00
1771
1
原创 C语言中的联合体
<br /> 联 合(union) <br /> 1. 联合说明和联合变量定义 <br /> 联合也是一种新的数据类型, 它是一种特殊形式的变量。 <br /> 联合说明和联合变量定义与结构十分相似。其形式为: <br /> union 联合名{ <br /> 数据类型 成员名; <br /> 数据类型 成员名; <br /> ... <br /> } 联合变量名; <br
2010-06-24 16:31:00
1371
原创 S3C2440的基础功能模块实现过程
<br />串口模块<br />Uart.c <br />包含方法: <br />void Uart_Select(int ch); <br />void Uart_TxEmpty(int ch); <br />void Uart_Init(int pclk,int baud); <br />char Uart_Getch(void); <br />char Uart_GetKey(void); <br />void Uart_GetString(char *string); <br />int Uart_
2010-06-21 15:28:00
801
转载 单片机软件延时C语言的误差表
<br />单片机C语言延时程序<br />用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时很不好控制,我们常常很难知道一段延时程序它的精确延时到底是多少,这和汇编延时程序没法比。但有时后写程序又不得不要用到比较精确的延时,虽然说可以用混合编程的方式解决,但这种方式不是每个人都能掌握,且写起来也麻烦。所以,通过测试我给大家提供一个延时子程序模块,并以此给一个出我们经常用到的延时的数据表格。(注意:表格中的数据只适合我的延时模块,对其
2010-06-13 16:44:00
814
原创 世界杯第二天
<br />昨天一大群人闹了一个晚上,输了一百块钱不说,差点把彩票给输了,还好墨西哥争气,让我避免第一场就没中。<br />今天要看三场球,够累的。fuck
2010-06-12 16:59:00
198
原创 ds1302操作
<br />单片机常用器件驱动及应用实例 <br /> <br />1 DS1302 简介: <br />DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日
2010-06-07 11:13:00
2316
1
原创 LPC2132
<br /> 老周的LPC2132.我又要重新捡起来偷偷的看看了,想到在宁大的时候为了搞懂些以为自己很容易搞懂的LPC2132,其实那个时候我连单片机都不怎么懂,C语言重修。最后我才发现,自己也是搞技术的料,够有耐心的,呵呵!<br /> <br /> DS1302,实时时钟芯片,原来它那么简单,我高估他了。至此,我怀疑自己的评估能力,我似乎永远都是高估或者低估,我该正视自己,改掉陋习。<br /> <br /> 6.1儿童节,离我已经好远好远了。仅存的记忆也被擦去!<br /> <br />
2010-06-01 16:43:00
350
原创 DS1302的设计应用
<br />#include <br />#define uint unsigned int<br />#define uchar unsigned char<br />sbit RS=P3^5;//数据/命令选择线<br />sbit EL=P3^6;//使能信号线<br />sbit ls164_clk=P1^1;//控制时钟<br />sbit ls164_dat=P1^2;//数据输入<br />sbit ds1302_clk=P1^5;//脉冲线<br />sbit ds1302_io=P1^6;
2010-06-01 16:38:00
290
转载 回调函数
//typedef简单的理解就是定义了类型CallBackFun是"一个指向//函数的指针,该函数具有一个char*类型的参数,返回值类型为inttypedef int (*CallBackfun)(char *p); int Afun(char *p);int Cfun(char *p);int func(CallBackFun pCallBack, char *p);void
2010-05-25 15:19:00
212
转载 什么是源型 漏型?什么是上拉电阻?下拉电阻?什么是 线驱动输出 集电极开路输出,推挽式输出?
我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极c跟发射极e之间相当于断开),所以5v电源通过1k电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而
2010-05-19 16:36:00
649
原创 基础不咋地
单片机的IO口工作原理,三态门,CMOS管,推挽输出,开漏输出,那么多听到,看到许多遍地东西,似乎还是没有搞明白,小崔,你基础不咋地,别异想天开自己能干什么大事!的确。 原来DSP还有这么简单的应用,看来我是高估它了。 江西的同事感叹家乡美好的田园生活,这让我想到梁山水泊。自由在在,旱涝保收。和兄弟们替天行道,当然绝不招安朝廷。试问,现在还有这地方吗? 家里
2010-05-18 16:49:00
208
转载 单片机的IO口
一、P0端口的结构及工作原理P0端口8位中的一位结构图见下图: 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。下面,我们先就组成P0口的每个单元部份跟大家介绍一下:先看输入缓冲器:在P0口
2010-05-18 09:27:00
886
原创 粘滋嘎达
天气极其闷热,嘉兴话来说就是身上粘滋嘎达。 从LINUX到单片机开发,不知道算不算是一种退步。如果心甘情愿,退步也可以当做是一种进步。 英文pdf看着昏昏欲睡,自认为英语还不错。其实看的都是云里雾里,还是中文好,看着带劲。 昨天去打篮球的时候,总感觉自己是病了,体力差到这种程度。不能拿平时不锻炼当借口,难道是身体有病? 还有半个小时回家,吃饭,魔
2010-05-17 16:22:00
219
转载 机器周期,时钟周期,振荡周期
1、时钟周期 时钟周期T又称为状态周期,是时序中最小的时间单位。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。 2、机器周期 机器周期定义为实现特定功能所需的时间,或完成某一规定操作所需的时间,通常由若干时钟周期构成。具体计算为:时钟周期 X cycles。如果单片机是
2010-05-17 15:53:00
520
转载 c语言中的union
一、 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同
2010-05-13 11:00:00
463
1
原创 volatile
讲讲volatile的作用44推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子
2010-05-13 10:41:00
258
转载 Linux 平台下多线程编程的高效开发经验
2009 年 4 月 23 日本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些
2009-08-10 16:26:00
269
原创 无线AP的组网方式
无线局域网(WLAN:Wireless Local Area Network)是计算机网络和无线通信技术相结合的产物。具体地说就是在组建局域网时不再使用传统的电缆线而通过无线的方式以红外线、无线电波等作为传输介质来进行连接,提供有线局域网的所有功能。无线局域网的基础还是传统的有线局域网,是有线局域网的扩展和替换,它是在有线局域网的基础上通过无线集线器、无线访问节点、无线网桥、无线网卡等设备来实现
2009-07-23 10:35:00
1007
转载 c函数指针
函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return 0;}void MyFun(int x)
2009-07-01 16:48:00
248
转载 链表操作
在turbo c 2.0 下调试通过.(把汉语注释去掉)#i nclude"stdio.h"#i nclude"malloc.h"#define NULL 0#define L sizeof(struct integer)struct integer /*定义结构体*/{int num;int zhengshu; struct inte
2009-05-16 21:36:00
217
原创 数据结构
链表的专题研究:链表是一种重要的,动态的,数据存储结构.数组的特点是元素个数固定,不适合相对元素个数不固定的时候.虽然它用起来比较简单直观.链表看上去比较复杂,但是它却克服了数组的这一缺点,在某些时候用链表是很有效果的.这里要深入理解一个问题,那就是:链表的结构.它是一个由结构体类型的多个结点组成的,每一个结构体里都含有一个指向另一个结构体的指针.链表有一个”头指针”指向这个链表的首地址,用来表示
2009-05-16 20:51:00
398
原创 关于对ORTP协议栈的分析(连载。。)
首先进行RTP的初始化,函数为ortp_init(),标志位initialized设为TRUE,然后调用一个av_profile_init函数进行profile的初始化包括设置payload的各种类型,在这里就包含了第一个比较重要的结构体就是:struct _RtpProfile{ char *name; PayloadType *payload[RT
2009-05-13 16:48:00
4031
3
原创 关于SNMP的一些琐碎
被困扰很久的snmpset总算搞定了,之前总是提示出现noCreation的错误,找了半天也找不到究竟是怎么回事,原来是没有真正理解TABLE中INDEX的意义,原来TABLE中的snmpset和简单变量的snmpset相差很多,这就利用到了TABLE中的INDEX 首先我先查看自己制定的表中的所有内容[root@beijing2008 snmp]# snmptable -c pub
2009-05-06 13:38:00
718
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅