玩转蓝牙4.0系列教程(第一季)-第十课 CC2540的串口初级应用
今天为大家带来CC2540串口操作,现在很多项目通信都采用串口,RS485,不论是自己定义的协议通信,还是用标准的modbus协议进行通信,都采用串口进行通信,操作起来简单,稳定性高,工业现场普遍的应用;我们现在来学习如何操作CC2540实现串口发送接收数据;
我们板子上用PL2303实现串口操作,只要插上USB线,既可以给板子供电还可以串口通信;
电路图为:

首先实现串口发送数据到PC的串口调试助手,波特率为115200, 8位数据, 1位停止位,程序运行时不断发送:LKZN_CC2540_Bluetooth 4.0
寄存器配置:
P0SEL |= 0X0C;//P0_2,P0_3选择USART
PERCFG &= 0XFE;// Alternative 1 location 选择一位置
P2DIR &= 0X3E;//1st priority: USART 0
U0CSR |= 0XC0;//UART mode,Receiver enabled
U0UCR |= 0X20;//数据长度=8位 一个停止位 无奇偶校验 非硬件流控制
U0GCR |= 0X0B;
U0BAUD |= 0XDB; //波特率115200







源代码如下:
/**************************************************
** 本程序只供学习使用,未经作者许可,不得用于其它任何用途
** 蓝牙4.0底板开发板
** 作者: shizhe
** 创始时间:2014-05-08
** 修改人:shizhe
** 修改时间:2014-05-08
** 修改人:shizhe
** 修改时间:2014-05-08
** 描述:
** 串口查询发送…
** 版权所有,盗版必究。
** All rights reserved
*************************************************/
#include<ioCC2540.h>
#define uint unsigned int
#define uchar unsigned char
uchar TX_BUFF[]="LKZN_CC2540_Bluetooth 4.0";
/****************************
延时函数
*****************************/
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=600;j>0;j--);
}
/****************************
系统时钟初始化函数
*****************************/
void Sys_clockinit(void)
{
CLKCONCMD &= 0x80;
while(CLKCONSTA & 0x40);
CLKCONCMD &= ~0x47;
}
/****************************
串口初始化函数
*****************************/
void uart_init(void)
{
P0SEL |= 0X0C;//P0_2,P0_3选择USART
PERCFG &= 0XFE;// Alternative 1 location 选择一位置
P2DIR &= 0X3E;//1st priority: USART 0
U0CSR |= 0XC0;//UART mode,Receiver enabled
U0UCR |= 0X20;//数据长度=8位 一个停止位 无奇偶校验 非硬件流控制
U0GCR |= 0X0B;
U0BAUD |= 0XDB; //波特率115200
}
/****************************
串口发送一个字节函数
*****************************/
void UartSend(uchar infor)
{
U0DBUF = infor;
while(UTX0IF == 0);
UTX0IF = 0;
}
/****************************
串口发送字符串函数
*****************************/
void uart_send_string(uchar *str,uchar len)
{
uchar i;
for(i=0;i<len;i++){
UartSend(*str++);
}
}
void main()
{
Sys_clockinit(); //系统时钟初始化
uart_init(); //串口初始化
while(1)
{
uart_send_string(TX_BUFF,sizeof(TX_BUFF));
Delayms(500);
UartSend('\n'); //发送转义字符
Delayms(500);
}
}
好东西谢谢好资料
好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好
好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好 好好 好 好 好 好
