相关寄存器:
UxCSR:USARTx 控制和状态寄存器
UxUCR:USARTx UART控制寄存器
UxGCR:USARTx 通用控制寄存器
UxBUF:USARTx 接收/发送数据缓冲器 (将要)
UxBAUD:USARTx 波特率控制寄存器
UART模式:有2个独立的8位中断向量(发送中断/接收完成中断) 发送时将数据存入UxDBUF
流程:
设置外设控制寄存器——>设置波特率——>(常用9600)——>串口属性的相关配置
一、CC2530 USART0所对应的外设端口为P0_2(RX接收位)和P0_3(TX发送位)
二、波特率选择(一般9600):尽量32MHz(当32MHz时将U0GCR = 8);
三、串口属性的相关配置
实训案例:
#include "ioCC2530.h"
#define D5 = P1_3
void Init_prot()
{
P1SEL &= ~0x1b;
P1DIR |= 0x1b;
P1 &= ~0x1b;
}
void Init_WDT()
{
WDCTL = 0x0C; //0000 1100
}
void Init_32M()
{
CLKCONCMD &= ~0x40;
while(CLKCONSTA & 0x40);
CLKCONCMD &= ~0x07;
}
//===================================
void Init_Uart0()
{
//1.将IO引脚映射到备用位置1
PERCFG &= ~0x01;
//1.1 P0_2、P0_3设置成外设的功能
P0SEL |= 0x0C;
//2.波特率9600,32M
U0BAUD = 59;
U0GCR = 8;
//3.设置UART控制
U0UCR |= 0x80;
//4.控制与状态寄存器
U0CSR |= 0xC0;
}
void UR0_SendByte(unsigned char dat)
{
U0DBUF = dat;
while(UTX0IF == 0);
UTX0IF = 0;
}
void UR0_SendString(unsigned char *str)
{
while(*str != '\0')
{
UR0_SendByte(*str++);
}
}
//===================================
void main()
{
Init_prot();
Init_32M();
Init_Uart0();
Init_WDT();
while(1)
{
if(WDTIF == 1)
{
WDTIF = 0;
UR0_SendString("你好,Hello World!!!\r\n");
}
}
}