• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > STM32F103和CC2530之间的串口通信问题

STM32F103和CC2530之间的串口通信问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了cc2530串口通信,cc2530串口引脚,cc2530串口,cc2530串口通信实验,cc2530串口中断等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: STM32F103和CC2530之间的串口通信问题
描述:

STM32ZigBee串口通信

        最近在写Zigbee网关通信程序,需要用到CC2530和STM32F103ZET6之间的串口通信。两者的串口配置都是一样的,CC2530之间可以进行通讯,STM32之间也可以进行通讯;STM32发CC2530收也可以正常通讯,但是CC2530发、STM32收就不能正常通讯,请问这是怎么回事?求大神指点,谢谢! 

1)STM32串口通信程序:
void uart1_init(u32 bound){
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
      
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
   
    //USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
    
  //USART1_RX     GPIOA.10初始化
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
    
  //Usart1 NVIC 配置
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;  //USART1中断通道
    NVIC_InitStructure.NVIC_IRQChannelPreempti//抢占优先级3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;      //子优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能
    NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
   
   //USART 初始化设置
    USART_InitStructure.USART_BaudRate = bound;//串口波特率
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
    USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
 
  USART_Init(USART1, &USART_InitStructure); //初始化串口1
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
  USART_Cmd(USART1, ENABLE);                    //使能串口1 
}
//USART1串口中断程序
void USART1_IRQHandler(void)
{
    u8 res;
     if(USART_GetITStatus(USART1,USART_IT_RXNE))
  {
     res= USART_ReceiveData(USART1); 
     USART_SendData(USART1,res); 
             
        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);    
  }
}
 
 
2)CC2530串口通信程序:
#include <ioCC2530.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制LED灯的端口
#define LED1 P1_0    //定义LED1为P10口控制
#define LED2 P1_1    //定义LED1为P11口控制
//函数声明
void Delayms(uint xms);    //延时函数
void InitLed(void);        //初始化P1口
void InitUart();           //初始化串口
void Uart_Send_String(char *Data,int len);
char Rxdata[50];
uchar RXTXflag = 1; 
char temp; 
uchar  datanumber = 0;
/****************************
          延时函数
*****************************/
void Delayms(uint xms)   
{
  uint i,j;
  for(i=xms;i>0;i--)
    for(j=587;j>0;j--);
}  
/****************************
//初始化程序
*****************************/
void InitLed(void)
{
  P1DIR |= 0x03; //P10、P11定义为输出
  LED1 = 0;     //关LED1
  LED2 = 0;     //关LD2
}
 
/**************************************************************** 
   串口初始化函数     
***********************************************************/
void InitUart()
{
    CLKCONCMD &= ~0x40;      // 设置系统时钟源为 32MHZ晶振
    while(CLKCONSTA & 0x40);    // 等待晶振稳定 
    CLKCONCMD &= ~0x47;      // 设置系统主时钟频率为 32MHZ
    SLEEPCMD|=0x04;        //关闭不用的RC振荡器
     
    PERCFG = 0x00;           //使用串口1的备用位置1 P0口 
    P0SEL  = 0x3c;           //P0_2,P0_3,P0_4,P0_5用作串口,第二功能 
    P2DIR &= ~0XC0;         //P0优先作为UART0 ,优先级
     
    U0CSR |= 0x80;           //UART 方式 
    U0GCR |= 8;              //U0GCR与U0BAUD配合     
    U0BAUD |= 59;           //波特率设为9600
    UTX0IF = 1;              //UART0 TX 中断标志初始置位1  (收发时候)
    U0CSR |= 0X40;         &nbs
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • STM32F103和CC2530之间的串口通信问题

相关文章

  • 2017-06-05 请问在菜单上如何设定分隔符?
  • 2017-06-05 stm32can接收数据问题
  • 2017-06-05 学习单片机编程过程中的一个问题
  • 2017-06-05 STC89S52片内RAM物理结构
  • 2017-06-05 自己写的驱动,感觉probe函数应该要有打印信息的,没有打印是个什么鬼?
  • 2017-06-05 急问:谁能告诉我如何编写访问硬件的程序啊?!
  • 2017-06-05 单片机C语言中标志位结构的运用是怎么样的
  • 2017-06-05 求助关于虚拟磁盘驱动的问题
  • 2017-06-05 WINCE20读写数据库怪问题
  • 2017-06-05 TCP/IP:在广域网(外网)上传输数据时会用到ARP协议吗?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求pci口的详细资料
    • arm汇编中MCR中的协处理器操作码是做什么的
    • 在基于WindowsServer的DNS服务器中配置可转发的根域?
    • help:pcibusmaster驱动,应用程序如何访问commonbuffer
    • 关于ISE中NGC文件调用
    • 初学驱动编写遇到的问题
    • FPGAI2C配置SAA7114问题
    • ttysc是什么东东
    • uCOSii关于OSTCBDly与OSTimeTickHook的问题
    • windowsddkUSB复合设备驱动,如何同时读两个pipe?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有