摘要:
本实验与上一个实验都以看门狗为学习目标,在实验二十一学会初始化看门狗,同时也知道了看门狗的作用,本实验着重学习复位看门狗。复位看门狗后小灯不会闪烁。void FeetDog(void) ; 函数原型: 1 void FeetDog(void) 2 { 3 WDCTL = 0xa0; 4 WDCTL = 0x50; 5 } 函数功能:复位看门狗,必须在看门狗时间间隔内调用本函数复位看门狗,否则系统会被强制复位。间隔之后再调用本函数无意义。 1 //main.c 2 3 # include <ioCC2430.h> 4 5 #define uint unsigned int 6 7 . 阅读全文
摘要:
程序在主程序中没有连续改变小灯的状态,而在开始运行时将系统复位,点亮再复位。实验现象是一只小灯不断闪烁,这是因为程序中启动了看门狗,看门狗时间长度为1 秒,如果 1 秒内没有复位看门狗的话,系统将复位。系统复位后再次开启看门狗,1 秒后复位。WDCTL(看门狗定时器控制寄存器) 7:4 CLR[3:0] 看门狗复位(喂狗),先写0xa 再写0x5 复位看门狗,两次写入不超过0.5个看门狗周期,读出为0000 3 EN 看门狗定时器使能位,在定时器模式下写0 停止计数,在看门狗模式下写0 无效 0 停止计数 1 启动看门狗/ 开始计数 2 MODE 看门狗定时器模式 0 看门狗模式 1 定时器模 阅读全文
摘要:
这个实验利用睡眠定时器工作在多个电源模式下这一特性来实现定时唤醒,最长的唤醒时隔为8 分32 秒,而最短的时隔可达 30余微秒。实验中在设定好唤醒时间后让 CC2430进入PM2 模式,在达到指定时间后小灯闪烁,之后再次是设定唤醒时间,进入PM2 ,唤醒的循环。void Init_SLEEP_TIMER(void) ; 函数原型: 1 void Init_SLEEP_TIMER(void) 2 { 3 EA = 1; // 开中断 4 STIE = 1; 5 STIF = 0; 6 } 函数功能: 打开睡眠定时器(ST)的中断,并且将ST的中断标志位清零。在使用ST时必须于add... 阅读全文
摘要:
在小灯快速闪烁5 次后进入睡眠状态 PM2 ,在 PM2 下睡眠定时器 SLEEP TIMER(ST)仍然可以正常工作,从0x000000 到0xffffff 反复计数,当ST计数超过写入ST[2 -0] 的0x000f00 时,系统由中断唤醒,小灯闪烁 5 次后进入 PM2 ,这样周而复始的唤醒工作然后睡眠。系统睡眠的时间为8 分32 秒,这已经是最长睡眠时间。ST2 (睡眠定时器2) 7:0 ST2[7:0] 睡眠定时器计数/ 比较值[23 -16]位。读出为ST计数值,写入为比较值。读寄存器应先读ST0 ,写寄存器就后写ST0 。 ST1 (睡眠定时器1) 7:0 ST1[7:0] 0X 阅读全文
摘要:
本次实验使能外部I/O 中断唤醒CC2430,每次唤醒红色 LED 闪烁10 次,然后进入低功耗模式,在进入PM3 之前程序会将两个LED 灯关闭。在应用中也可以不关闭以指示CC2430处于低功耗模式,可以中断激活。void PowerMode(uchar sel); 函数原型: 1 void PowerMode(uchar sel) 2 { 3 uchar i,j; 4 i = sel; 5 if(sel<4) 6 { 7 SLEEP &= 0xfc; 8 SLEEP |= i; 9 for(j=0;j<4;j++); 10 PCON = 0x01... 阅读全文
摘要:
本实验在小灯闪烁10 次以后进入低功耗模式 PM3 。CC2430 一共有4 种功耗模式,分别是PM0,PM1,PM2,PM3,以 PM3 功耗最低。SLEEP (0xBE) - Sleep mode control0X03:0000 0011bit7 - Unused bit6 XOSC_STB XOSC stable status: 0 – XOSC is not powered up or not yet stable 1 – XOSC is powered up and stable bit5 HFRC_STB RCOSC stable status: 0 – HF RCOSC is 阅读全文
摘要:
void InitT1(void) ; 函数原型: 1 void InitT1(void) 2 { 3 T1CCTL0 = 0X44; 4 //T1CCTL0 (0xE5) 5 //T1 ch0 中断使能 6 // 比较模式 7 8 T1CC0H = 0x03; 9 T1CC0L = 0xe8; 10 //0x0400 = 1000D) 11 12 T1CTL |= 0X02; 13 //start count 14 // 在这里没有分频。 15 // 使用比较模式 MODE = 10(B) 16 17 IEN1 |=... 阅读全文
摘要:
在PC上从串口向 CC2430发任意长度为 30 字节的字串,若长度不足 30 字节,则以“#“为字串末字节,CC2430在收到字节后会将这一字串从串口反向发向 PC,用串口助手可以显示出来。 1 //main.c 2 #include <iocc2430.h> 3 #include <string.h> 4 5 #define uint unsigned int 6 #define uchar unsigned char 7 #define FALSE 0 8 #define TURE 1 9 10 //定义控制灯的端口 11 #define led1 P1_0 12 阅读全文
摘要:
在PC上从串口向CC2430发数,即可控制 LED 灯的亮灭,控制数据的格式为“灯编号 开|关 #”,红色 LED 编号为1,绿色 LED 编号为2,0 是关灯,1 是开灯,如打开红色 LED 的命令是“11#”void initUARTtest(void) ; 函数原型: 1 void initUARTtest(void) 2 { 3 4 CLKCON &= ~0x40; //晶振 5 while(!(SLEEP & 0x40)); // 等待晶振稳定 6 CLKCON &= ~0x47; //... 阅读全文
摘要:
USART0 和USART1. 是串行通信接口,它们能够分别运行于异步UART 模式或者同步SPI模式。两个USART具有同样的功能,可以设置在分隔开的I/O 引脚。 1. UART 模式 UART 模式提供异步串行接口。在UART 模式中,接口使用2 线或者含有 RXD、TXD、RTS和CTS 的4 线。UART 模式的操作具有下列特点:8 位或者 9 位数据;奇校验、偶校验或者无奇偶校验;配置起始位和停止位电平;配置LSB 或者MSB首先传送;独立收发中断;独立收发DMA触发;奇偶校验和帧校验出错状态。UART 模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART 字节包. 阅读全文
摘要:
DMA控制器 CC2430 内置一个存储器直接存取(DMA) 控制器。该控制器可以用来减轻 8051 CPU核传送数据时的负担,实现CC2430在高效利用电源的条件下的高性能。只需要CPU 极少的干预,DMA控制器就可以将数据从ADC或RF收发器传送到存储器。DMA控制器匹配所有的DMA传送,确保DMA请求和CPU 存取之间按照优先等级协调、合理地进行。DMA控制器含有若干可编程设置的DMA信道,用来实现存储器一存储器的数据传送。 DMA 控制器控制数据传送超过整个外部数据存储器空间。由于SFR 寄存器映射到DMA存储器空间,使得DMA信道的操作能够减轻CPU 的负担。例如,从存储器传送数据. 阅读全文
摘要:
将AD的源设为电源电压,AD参考电压为AV D D ,并将转换得到温度通过串口送至电脑。开始转换黄灯亮绿灯暗,转换完毕绿灯亮黄灯暗。void InitialAD(void); 函数原型: 1 void InitialAD(void) 2 { 3 //P1 out 4 P1DIR = 0x03; //P1 控制LED 5 led1 = 1; 6 led2 = 1; //关LED 7 8 ADCH &= 0X00; // 清EOC标志 9 ADCCON3=0xbf; //单次转换, 参考电压为电源电压,对 1/3 AVDD进行A/D 转换 ... 阅读全文
摘要:
将AD的源设为1/3 电源电压,并将转换得到温度通过串口送至电脑ADCCON1 7 EOC 0 R H0 ADC 结束标志位 0 ADC进行中 1 ADC 转换结束 6 ST 0 R W1 手动启动AD转换(读1 表示当前正在进行AD转换)0 没有转换 1 启动 AD 转换(STSEL=11) 5:4 STSEL[1:0] 11 R/W AD 转换启动方式选择 00 外部触发 01 全速转换,不需要触发10 T1 通道 0 比较触发 11 手工触发 3:2 RCTRL[1:0] 00 R/W 16 位随机数发生器控制位(写01,10会在执行后返回00) 00 普通模式(13x 打开)01 开启 阅读全文
摘要:
AD CC2430/CC2431 的ADC支持14位的模数转换,这跟一般的单片机 8 位ADC不同。这个 ADC包括一个参考电压发生器,8 个独立可配置通道,电压发生器和通过 DMA模式把转换结果写入内存控制器。 CC2430/CC2431 的ADC具有以下特征: ADC 转换位数可选,从8 位至14 位; 8 个独立可配置输入通道; 参考电压发生器可作为内、外部单一参考电路,外部差分电路或AV D D _ S O C; 产生中断; 转换完成触发DMA; 温度传感输入; 电池电压检测。 当使用ADC时,P0口必须配置成ADC输入作为8 个ADC输入。把P0相应的个引脚当作ADC输入使用时... 阅读全文
摘要:
PICTL (0x8C) – Port Interrupt Control PICTL |= 0X11; 7 - 0 R0 Not used 6 PADSC Strength control for port pads in output mode. Selects output drive capability to account for low I/O supply voltage on pin DVDD. 0 Minimum drive capability 1 Maximum drive capability 5 P2IEN Port 2, inputs 4 to 0 inter.. 阅读全文
摘要:
中断介绍 CPU 有18 个中断,每个中断源都有它自己的位于一系列特殊功能寄存器中的中断请求标志,中断分别组合为不同的,可以选择的优先级别。中断屏蔽 每个中断请求可以通过设置特殊功能寄存器中特定位 IEN0,IEN1 或者IEN2,使能或禁止。某些外部设备会因为若干事件产生中断请求,这些中断请求可以作用在P0、P1、P2、DMA计数器1 、计数器 3 、计数器 4 或者RF上,对于每个内部中断源对应的特殊功能寄存器,这些外部设备都有中断屏蔽位。 为了使用CC2430中的中断功能,应当执行下列步骤; 1 、设置IEN0 中的EAL 位1 ; 2 、设置寄存器 IEN0、IEN1 合IEN2 .. 阅读全文
摘要:
CC2430/CC2431 包括四个定时器:一个一般的 16 位(Timer 1) 和两个8 位(Timer3,4)定时器,支持典型的定时/ 计数功能,例如测量时间间隔,对外部事件计数,产生周期性中断请求,输入捕捉、比较输出和PWM 功能。一个 16 位MAC定时器(Timer 2),用以为IEEE802.15.4 的CSMA-CA 算法提供定时以及为IEEE802.15.4 的MAC层提供定时。本实验使用T4,输入捕捉、比较输出和PWM 功能。脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种 阅读全文
摘要:
CC2430/CC2431 包括四个定时器:一个一般的 16 位(Timer 1) 和两个8 位(Timer3,4)定时器,支持典型的定时/ 计数功能,例如测量时间间隔,对外部事件计数,产生周期性中断请求,输入捕捉、比较输出和PWM 功能。一个 16 位MAC定时器(Timer 2),用以为IEEE802.15.4 的CSMA-CA 算法提供定时以及为IEEE802.15.4 的MAC层提供定时。本实验使用T3,产生周期性中断请求。1、##timer## 表示用宏定义的数字代换#define TIMER34_INIT(timer) \ do { \ T##timer##CTL = 0x06; 阅读全文
摘要:
CC2430/CC2431 包括四个定时器:一个一般的 16 位(Timer 1) 和两个8 位(Timer3,4)定时器,支持典型的定时/ 计数功能,例如测量时间间隔,对外部事件计数,产生周期性中断请求,输入捕捉、比较输出和PWM 功能。一个 16 位MAC定时器(Timer 2),用以为IEEE802.15.4 的CSMA-CA 算法提供定时以及为IEEE802.15.4 的MAC层提供定时。三个一般定时器与普通的8051 定时器相差不大,本实验使用 MAC定时器(Timer2) 。 MAC定时器主要用于为802.15.4 的CSMA-CA 算法提供定时/ 计数和802.15.4 的MAC 阅读全文
摘要:
CC2430/CC2431 包括四个定时器:一个一般的 16 位(Timer 1) 和两个8 位(Timer3,4)定时器,支持典型的定时/ 计数功能,例如测量时间间隔,对外部事件计数,产生周期性中断请求,输入捕捉、比较输出和PWM 功能。一个 16 位MAC定时器(Timer 2),用以为IEEE802.15.4 的CSMA-CA 算法提供定时以及为IEEE802.15.4 的MAC层提供定时。本实验使用的是T1定时器,对外部事件计数。要设置这个:T1CTL = 0x05;//清中断,8分频;自动重装模式(0x0000->0xffff);如果只有一个定时器T1,那么通过查看IRCON是 阅读全文