CC2530的波特率有BAUD_E和BAUD_M共同决定:
F为系统时钟频率,16MHz或32MHz
TI公司提供的数据手册中,给出了32MHz系统时钟频率下各种常用波特率的参数值
由计算公式可已计算出16MHz系统时钟频率下对应的参数值
- 16MHz下9600波特率的UxBAUD.BAUD_M:U0BAUD = 59
- 16MHz下9600波特率的UxGCR.BAUD_E:U0GCR = 9
3.串口0的UART初始化设置
void Init\_Uart0(){
//端口配置
PERCFG &= ~0x01; //将串口0的引脚映射到位置1,即P0\_2和P0\_3
P0SEL = 0x0C; //将P0\_2和P0\_3端口设置为外设功能
/\*======使用CC2530的内部16MHz晶振产生9600的波特率====\*/
//波特率配置
U0BAUD = 59;
U0GCR = 9;
//流控配置
U0UCR |= 0x80; //禁止流控,8位数据,清楚缓冲器
//串口模式配置
U0CSR |= 0xC0; //选择UART模式,使能接收器
//中断配置
UTX0IF = 0; //清除TX发送中断标志
URX0IF = 0; //清除RX接收中断标志
URX0IE = 1; //使能URAT0的接收中断
EA = 1; //使能总中断
}
4.案例
4.1.串口数据发送
要求:
- USART0选择UART模式,波特率9600,I/O引脚映射到备用位置1
- 利用看门狗定时器的定时功能实现1秒定时
- 在看门狗中断服务模式中,由串口向上机位发送“Hello World!”,回车换行
D5等作为数据发送指示灯,在字符串发送前点亮,字符串发送结束后熄灭
代码:
#include "ioCC2530.h"
#define D5 P1\_3
/\*=============系统时钟切换16MHz→32MHz(32MHz更为准确)====================\*/
void Set\_Clock\_32M(){
CLKCONCMD &= ~0x40; //选择系统时钟源为32MHz晶振
while(CLKCONCMD & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHz
}
/\*========================端口初始化函数====================================\*/
void Init\_Port(){
//初始化LED灯的I/O口
P1SEL &= ~0x1B; //P1\_0、P1\_1、P1\_3和P1\_4作为通用I/O口
P1DIR |= 0x1B; //P1\_0、P1\_1、P1\_3和P1\_4端口输出
P1 &= ~0x1B; //关灯D3~D6
}
/\*=&