野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13083|回复: 2

传感器无法接收到stm32发送的数据

[复制链接]
发表于 2017-5-2 15:58:23 | 显示全部楼层 |阅读模式
本帖最后由 hld0711 于 2017-5-2 20:29 编辑

我有一个姿态传感器,想上电后先发送一条指令给传感器,传感器接收到以后就开始回传数据,我的思路是:在程序中把指令发送给串口2,然后把串口2接收到的数据转发给串口1,串口1回显到pc上。由于指南者没有232转TTL的模块,我就淘宝上买了个转换模块,把传感器、转换模块、stm32都连接好了(转换模块的tx接A3,rx接A2),也供电了。
现在的问题是指令无法传输给传感器(我设置发完数据LED灯会闪,结果没有闪),请问是哪边出现了问题?
初始化串口2:

  1.   //GPIO端口设置
  2.   GPIO_InitTypeDef GPIO_InitStructure;
  3.     USART_InitTypeDef USART_InitStructure;
  4.     NVIC_InitTypeDef NVIC_InitStructure;

  5.     RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB2Periph_GPIOA, ENABLE);    //使能USART2,GPIOA时钟

  6.     //USART1_TX   GPIOA.2
  7.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
  8.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
  10.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.2
  11.    
  12.   //USART1_RX      GPIOA.3初始化
  13.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
  14.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  15.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.3

  16.   //Usart1 NVIC 配置
  17.   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  18.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
  19.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;        //子优先级3
  20.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ通道使能
  21.     NVIC_Init(&NVIC_InitStructure);    //根据指定的参数初始化VIC寄存器
  22.   
  23.   //USART 初始化设置
  24.     USART_InitStructure.USART_BaudRate = bound;//串口波特率
  25.     USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
  26.     USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
  27.     USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
  28.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
  29.     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    //收发模式

  30.   USART_Init(USART2, &USART_InitStructure); //初始化串口2
  31.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接受中断
  32.   USART_Cmd(USART2, ENABLE);                    //使能串口2
复制代码


发送指令:

  1.     uint16_t DB[5]={0x00,0x05,0x01,0xEF,0xD4};
  2.     for(i=0;i<5;i++)
  3.     {
  4.         USART_SendData(USART2,DB[i]);
  5.         while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
  6.     }
  7.     LEDR(ON);
  8.     Delay(0x0FFFFF);
  9.     LEDR(OFF);//红灯亮,传输完成
复制代码


回复

使用道具 举报

发表于 2017-5-2 16:36:06 | 显示全部楼层
把接收到的数据打印出来,看看是不是接收到正确的数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-2 19:22:04 | 显示全部楼层
本帖最后由 hld0711 于 2017-5-2 20:29 编辑
随风 发表于 2017-5-2 16:36
把接收到的数据打印出来,看看是不是接收到正确的数据

但是我现在连发送都发送不出去,请问我的代码有问题吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 05:13 , Processed in 0.035323 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表