CC2530串口数据收发

发布者:乐观向前最新更新时间:2022-10-11 来源: csdn关键字:CC2530  串口  数据收发 手机看文章 扫描二维码
随时随地手机看文章

实验要求

代码实现

#include "ioCC2530.h"

 

#define D3 P1_0

#define D5 P1_3

 

//系统时钟切换函数

void Set_Clock_32M()

{

  CLKCONCMD &=~0x40;

  while(CLKCONSTA &0X40)

  {

    

  }

  CLKCONCMD &=~0x47;

}

 

//端口初始化函数

void Init_Prot()

{

//配置4个LED灯的引擎

  //选择端口的功能

  P1SEL &=~0x1B;//设置通用io端口

  //配置端口的方向

  P1DIR |=0x1B;

  //关闭LED灯

  P1 &=~0x1B;

}

 

//串口初始化函数

void Init_Uart0()

{

  //1.设置串口的引脚功能,将P0_2和P0_3设置为外设功能

  PERCFG &=~0X01;

  P0SEL |=0x0C; //0000 1100

  //2.设置串口的波特率:32M——9600

  U0BAUD = 59;

  U0GCR = 8;

  //3.设置一个UART控制寄存器 U0UCR

  U0UCR |=0x80;

  //4.设置控制与状态寄存器 U0CSR

  U0CSR |=0xc0; //1100 0000

  

  //5.清除中断标志

    //发送

    UTX0IF = 0;

    //接收

    URX0IF = 0;

  //6.使能串口数据接收完成中断和总中断

  URX0IE = 1;

  EA = 1;

}

 

//串口字节发送函数

void URD_SendByte(unsigned char dat)

{

  U0DBUF =dat;

  while(UTX0IF==0);

  UTX0IF=0;

}

 

//串口数据接受完成中断服务函数

#pragma vector = URX0_VECTOR //起始语句

//中断服务函数

__interrupt void Service_UR0Recv()

  D3=1;//收

  unsigned char temp;

  temp=U0DBUF;

  temp++;

  D5=1;//发

  URD_SendByte(temp);

   D3=0;

   D5=0;

}  

   

 

 

void main(void)

{

  Set_Clock_32M();

  //端口初始化

  Init_Prot();

  Init_Uart0();

  while(1)

  {

   

  }

}

关键字:CC2530  串口  数据收发 引用地址:CC2530串口数据收发

上一篇:CC2530串口命令控制LED灯开关
下一篇:CC2530串口数据发送

推荐阅读最新更新时间:2024-11-17 12:22

GD32串口接收异常的几个原因
前面我们介绍过GD32 485发送时出现异常的最常见原因,有小伙伴反馈想要知道GD32 串口接受异常的可能原因,今天我们就来安排。 一、波特率异常导致收发出错 我们知道,串口是异步通讯接口,通讯双方或者多方都需要工作在相同波特率下,如果波特率不对,则发送和接收都会异常。通常引起波特率异常的原因有以下几种: 外部晶振频率设置错误 GD32 固件库中,波特率的运算是需要去获取挂载这个串口的内部总线的频率 而获取总线频率的的函数中需要用到HXTAL_VALUE这个值,即外部晶振的实际频率。 GD32库中这个值默认是8M或25M,而有的小伙伴在用其他频率的晶振时,虽然根据实际频率修改了配置主频的函数,但没将HXTAL_VA
[单片机]
GD32<font color='red'>串口</font>接收异常的几个原因
STM32_USART 串口通讯详解
对51单片机有了解的都知道51单片机的串口通讯工作原理,我们单片机使用的电平TTL电平,为了使我们的的单片机与PC进行通信,就需要一个电平转换芯片,把TTL电平转换为USB电平(使用的USB接口,如果使用的DB9接口,电平转换芯片则为TTL转RS232电平芯片),然后通过对SBUF寄存器的读写操作来实现PC与MCU的通信。STM32的串口通讯原理与51相同。下面就对USART尽行具体的介绍。 USART(Universal synchronous asynchronous receivertransmitter )通用同步异步收发器,是STM32上基于串口通讯协议来实现与外部通信的一个外设,因为串口通讯协议的简单,便捷,所以在
[单片机]
STM32_USART <font color='red'>串口</font>通讯详解
12M晶振下,STM32串口波特率设置问题
使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systick走时不准等问题,在无论是在实际调试还是在软件模拟中都会发现这个情况,其实,这不能怪ST官方,我们必须肯定ST官方为方便用户开发所做的努力,下面我们就通过简单的三个步骤就可以让你随意的使用4—16MHz之内任何频点的晶振,我们以STM32F10x_StdPeriph_Lib_V3.4.0为例说明。 第一步,打开stm32f10x.h,将 #define HSE_VALUE ((uint32_t)8000000) 修改为: #define HSE_VALUE ((uint32_t)12000000) 第二步,打开system_stm32f10x.c,
[单片机]
STM32 DMA详解——一串口为例
一. DMA原理: DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。 DMA 传输将数据从一个地址空间复制到另外一个地址空间。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。 二.STM32使用DMA 1
[单片机]
MSP430设置串口波特率的方法
给定一个BRCLK时钟源,波特率用来决定需要分频的因子N: N = fBRCLK/Baudrate 分频因子N通常是非整数值,因此至少一个分频器和一个调制阶段用来尽可能的接近N。 如果N等于或大于16,可以设置UCOS16选择oversampling baud Rate模式 注:Round():指四舍五入。 Low-Frequency Baud Rate Mode Setting 在low-frequency mode,整数部分的因子可以由预分频实现: UCBRx = INT(N) 小数部分的因子可以用下列标称公式通过调制器实现: UCBRSx = round( ( N – INT(N) ) × 8 )
[单片机]
STM32学习笔记(串口、IAP)
串口: 一. USART_ITConfig(USART1, USART_IT_TXE, ENABLE): 只要发送寄存器为空,就会一直有中断,因此,要是不发送数据时,把发送中断关闭,只在开始发送时,才打开。 二. 以下是字符发送的配置过程,注意第6点,在设置USART_CR1中的TE位时,会发送一个空闲帧作为第一次数据发送,所以即便你执行了USART_ClearFlag(USART1, USART_FLAG_TC); (这个函数肯定在空闲帧数据发送完成前执行),所以当空闲帧发送完后,就进入发送完成中断。 配置步骤: 1. 通过在USART_CR1寄存器上置位UE位来激活USART 2. 编程USART_CR1的M位来定义
[单片机]
STM32F103利用定时器2与串口接收指令控制LED亮度
通过串口接收到的数据改变PA8输出的占空比来控制LED小灯的亮度 主函数 char *str_light = LIGHT: ; unsigned char PWM_BUF = 0; int main(void) { PWM_Init(); USART3_TIM2_Init(115200); delay_init(); while(1) { if(RX_SATA == 1) { if(strstr(RX_BUF,str_light) != 0) { delay_ms(1); PWM_BUF =(RX_BUF -0x30)*10+(RX_BUF -0x30); TIM_SetC
[单片机]
STM32F103利用定时器2与<font color='red'>串口</font>接收指令控制LED亮度
Segment BANKED_CODE must be defined in a segment definition option (-Z, -b or -P)
是链接(Link)时出错: Fatal Error : Segment BANKED_CODE must be defined in a segment definition option (-Z, -b or -P) 原因是IAR新版本使用旧版本文件 解决方法: 打开project- options- linker- config- override default 选择文件C:Program Files (x86)IAR SystemsEmbedded Workbench 6.0 Evaluation8051configdevicesTexas Instrumentslnk51ew_cc2530F256_banked.xcl
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved