Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4513389
  • 博文数量: 252
  • 博客积分: 5347
  • 博客等级: 大校
  • 技术积分: 13838
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-30 10:13
文章分类
文章存档

2022年(12)

2017年(11)

2016年(7)

2015年(14)

2014年(20)

2012年(9)

2011年(20)

2010年(153)

2009年(6)

分类: 嵌入式

2010-11-22 09:27:38

     看ZigBee方面的知识有一段时间了,不过一直都没有入手开发板,所以也就没有办法实践,今天终于下了决心入手了三块CC2430的开发板,调试了第一程序,虽然没有和Z-Stack协议相关,但总之是迈出开始开发的第一步。这个程序也非常的简单,就是一个灯不停的闪烁。
   我使用的开发环境是AR Embedded Workbench for MCS-51 V7.30H。对开发环境进行简单的配置以后就可以开始了 。

#include <iocc2430.h>

void Delay(unsigned char n)
{
  unsigned char i;
  unsigned char j;
  for(i=0;i<n;i++)
    for(j=1;j;j++);
}

void main(void)
{
  /* CC2430 中,I/O 口做普通 I/O 使用时和每个 I/O 端口相关的寄存器有 3 个,分别是 //PxSEL功能选择寄存器,PxDIR 方向寄存器,PxINP 输入模式寄存器,其中 x 为 0,1,2 。
这里选择 P1.0 上的 色 LED 作为 I/O 测试。*/
  CLKCON &=~0x04;
  while(!(SLEEP & 0x04)); //晶体振荡器开启且稳定
  CLKCON &=~0x47; //选择 32MHz 晶体振荡器
  SLEEP |=0x04;
  P1SEL = 0x00; //P1.0 为普通 I/O 口 选择寄存器
  P1DIR = 0x01; //P1.0 输出  方向寄存器
  while(1)
  {
  P1_0=1;
  Delay(10);
  P1_0=0;
  Delay(10);
  }
}

   我们可以看到本程序中包含了头文件#include ,那么这个头文件是在哪里呢,我们也并没有创建这个文件,还有就是程序中许多IO端口,寄存器的地址定义都是在这个头文件中,这个文件是在我们配置编译器选项时自动会建立的。在IAR开发环境中的"project"->"options"->"General Options"->"Target"->"Derivative"中选择的是CC2430.其中我们要理解各个寄存器的含义可以查看CC2430的DataSheet。
其中的一些寄存器含义如下:
SLEEP寄存器 Sleep Mode Control
bit 7:OSC32K_CALDIS   读/写 禁用32K RC振荡器 校正
bit6:XOSC_STB    只读 XOSC稳定性状态(设备必须等晶振稳定后才能进行后续操作)
bit5:HFRC_STB    只读 高频RC振荡器稳定性状态
bit4:bit3 :RST[1:0] 只读 指示上一次设备复位原因
bit2:OSC_PD        读/写 32MHz晶振和16MHz RC振荡器的掉电设定(High-frequency (32 MHz) crystal oscillator and High-frequency (16MHz) RC oscillator power down setting.)
bit1:bit0 :读/写 功耗模式设定(Power Mode Setting)
CLKCON寄存器 时钟控制(Clock Control)
bit7:OSC32K 读/写   32KHz时钟振荡器选择位。当要选择此位时,需要选择16MHz RC振荡器作为系统时钟源
bit6:OSC         读/写 系统时钟振荡器选择位
                                         0:32MHz晶振
                                         1:16MHz RC振荡器
bit5:bit3    TICKSPD[2:0] 读/写 定时器时钟频率输出设定,其设定的值不能够比通OSCar设置的系统时钟高。Timer ticks output setting, can not be higher than system clock setting given by OSC bit setting(Timer ticks不是很会翻译)
bit2:bit1 保留位 无功能
bit0:CLKSPD 只读 指示当前系统时钟频率 。

 

阅读(4132) | 评论(0) | 转发(7) |
给主人留下些什么吧!~~