微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 玩转蓝牙4.0系列教程(第一季)-第十课 CC2540的串口初级应用

玩转蓝牙4.0系列教程(第一季)-第十课 CC2540的串口初级应用

时间:10-02 整理:3721RD 点击:

今天为大家带来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);

  }

}



好东西谢谢好资料

好  好 好  好  好  好  好   好  好  好     好  好  好  好  好   好  好  好  好  好  好  好  好  好  好  好  好  好  好  好   好  好  好  好  好  

好  好  好  好  好    好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好  好好  好  好  好  好   

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top