ZigBee切换系统高频时钟+串口的使用

1,ZigBee切换系统高频时钟步骤

    一,让2个高频时钟源启振

    二,等待目标时钟源震荡稳定

    三,延时63us以上

    四,设置输出分频(一般不分频)

    五,选中目标高频时钟源作为系统主时钟

    六,确认一下当前工作的系统时钟是不是所选的高频时钟

知道这些之后我们就来认识一下涉及到的寄存器

ZigBee切换系统高频时钟+串口的使用_第1张图片

ZigBee切换系统高频时钟+串口的使用_第2张图片

ZigBee切换系统高频时钟+串口的使用_第3张图片

好了,有了以上寄存器我们就可以配置时钟了!下面就看看代码上的实现。

#include "ioCC2530.h"

#define uint8_t unsigned char
#define uint16_t unsigned int

#define LED     P1_0

void delay_us(uint16_t us)
{
  uint16_t i;
  for(i = 0;i

2,串口的使用步骤

    串口会用到的寄存器不太多,常用的下面列出来!

PERCFG          外设控制寄存器

U0CSR            USART 0 控制和状态

U0GCR           USART 0 通用控制

U0BAUD         USART 0 波特率控制

 

ZigBee切换系统高频时钟+串口的使用_第4张图片

ZigBee切换系统高频时钟+串口的使用_第5张图片

ZigBee切换系统高频时钟+串口的使用_第6张图片

还有一张配置波特率时需要用到的表

ZigBee切换系统高频时钟+串口的使用_第7张图片

好了,寄存器看完了我们就来看看代码!

下面是串口0初始化函数

void USART0_Config(void)
{
  PERCFG &=~0x01;       //1111 1110 选中串口0 串口备用位置1
  P0SEL |= 0x0C;       //0000 1100 置1,0表示普通IO口,1表示片上外设
  
  U0CSR |=0xC0;        //USART 0 控制和状态寄存器  ,设置UART模式,并使能接收
  U0GCR = 11;          //USART 0 通用控制,设置波特率指数值
  U0BAUD = 216;        //USART 0 波特率控制,设置波特率小数部分的值,波特率,115200
  
  EA = 1;              //打开总中断
  URX0IE = 1;          //打开串口0接收中断
}

然后就是串口接收中断函数

#pragma vector=URX0_VECTOR
__interrupt void USART0_IRQ(void)
{
  uint8_t Temp = 0;
        Temp = U0DBUF;
        U0DBUF = Temp;

        while(UTX0IF == 0);     //串口发送标志位,发送完置1
        UTX0IF = 0;             //发送完毕,清零
        URX0IF = 0;        //清除标志位
}

这个代码的现象就是发送什么,就会返回什么!

好了,以上就是时钟的切换和串口的配置,需要注意的是,串口必须要32M时钟下工作!而且官方给的配置波特率什么的都是在32M时钟的的基础上的!

 

 

 

你可能感兴趣的:(ZigBee)