CC2530串口发送

参考博客:CSDN博客_cc2530串口通信

 

波特率计算:

CC2530的波特率由BAUD_E和BAUD_M共同决定:

 

 

测试代码:

#include "ioCC2530.h"  //定义led灯端口
#define LED1 P2_0     // P1_0定义为P1.0

unsigned int counter = 0;       //统计定时器溢出次数
void initUART0(void)
{
	PERCFG = 0x00;
	P0SEL = 0x3c;
	U0CSR |= 0x80;
	U0BAUD = 216;
	U0GCR = 10;
	U0UCR |= 0x80;
	UTX0IF = 0;  // 清零UART0 TX中断标志
	EA = 1;   //使能全局中断
}

/************************************************************
 * 函数名称:inittTimer1
 * 功    能:初始化定时器T1控制状态寄存器
*************************************************************/
void inittTimer1()
{
	CLKCONCMD &= 0x80;   //时钟速度设置为32MHz    
	T1CTL = 0x0E;  // 配置128分频,模比较计数工作模式,并开始启动
	T1CCTL0 |= 0x04;             //设定timer1通道0比较模式
	T1CC0L = 50000 & 0xFF;    // 把50000的低8位写入T1CC0L
	T1CC0H = ((50000 & 0xFF00) >> 8); // 把50000的高8位写入T1CC0H 

	T1IF = 0;           //清除timer1中断标志
	T1STAT &= ~0x01;  //清除通道0中断标志

	TIMIF &= ~0x40;  //不产生定时器1的溢出中断
	//定时器1的通道0的中断使能T1CCTL0.IM默认使能
	IEN1 |= 0x02;    //使能定时器1的中断  
	EA = 1;        //使能全局中断 
}

void UART0SendByte(unsigned char c)
{
	U0DBUF = c;
	while (!UTX0IF);  // 等待TX中断标志,即U0DBUF就绪
	UTX0IF = 0;       // 清零TX中断标志 
}

/**************************************************************
 * 函数名称:UART0SendString
 * 功    能:UART0发送一个字符串
**************************************************************/
void UART0SendString(unsigned char* str)
{
	while (*str != '\0')
	{
		UART0SendByte(*str++);   // 发送一字节
	}
}

/************************************************************
 * 功    能:定时器T1中断服务子程序
 ************************************************************/
#pragma vector = T1_VECTOR //中断服务子程序
__interrupt void T1_ISR(void)
{
	EA = 0;   //禁止全局中断
	counter++;  //统计T1的溢出次数
	T1STAT &= ~0x01;  //清除通道0中断标志
	EA = 1;   //使能全局中断    
}

/************************************************************
 * 函数名称:main
 * 功    能:main函数入口
*******************************************************/
void main(void)
{
	P2DIR |= 0x01;   /* 配置P1.0的方向为输出 */
	LED1 = 0;
	inittTimer1();  //初始化Timer1
	initUART0();  // UART0初始化  


	while (1)
	{
		if (counter >= 15)
		{
			counter = 0;
			LED1 = 1;
			UART0SendString("Hello ! I am CC2530 .\n");
			LED1 = 0;
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值