打印
[STM32F1]

STM32 V5发送十六进制报文

[复制链接]
1313|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
businiao2014|  楼主 | 2014-4-22 23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本人用stm32串口连接一个加速度计,需要发送“0xFA 0x01 0x00 0x82 0x7B”后方可使能设备,设备之后才可以
回传数据。
求大侠帮助,不胜感激。
(程序用串口助手验证没有任何问题,硬件连接没问题,但是始终无法激发加速度计,个人觉得是发送指令数据

格式方面有问题)
程序如下:
   uint8_t send_AHRSO[5]={0xfa,0X01,0x8,0x00,0X7b};

   USART_PutHEX(USART1,send_AHRSO[0]);
  USART_PutHEX(USART1,send_AHRSO[1]);
  USART_PutHEX(USART1,send_AHRSO[2]);
  USART_PutHEX(USART1,send_AHRSO[3]);
  USART_PutHEX(USART1,send_AHRSO[4]);


void USART_PutHEX(USART_TypeDef* USARTx,uint8_t Data)
{
  USART_SendData(USARTx, Data);
  while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);
}
  void USART1_IRQHandler(void)      //串口1 中断服务程序
{
uint32_t a;
a=0;
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)    //判断读寄存器是否非空
  {
   
    RxBuffer1[RxCounter1] = USART_ReceiveData(USART1);   //将读寄存器的数据缓存到接收缓冲区里
USART_PutHEX(USART1,RxBuffer1[RxCounter1]);
RxCounter1++;

if(a==0 && RxCounter1==0x10) {GPIO_SetBits(GPIOB, GPIO_Pin_5); a=1; Delay(1000000);}        
                 
else {GPIO_ResetBits(GPIOB, GPIO_Pin_5);a=0;  }
RxCounter1 &=0x0F;
if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)                   //这段是为了避免STM32 USART
第一个字节发不出去的BUG
  {
     USART_ITConfig(USART1, USART_IT_TXE, DISABLE);          //禁止
发缓冲器空中断,
  }
  
}

沙发
pattywu| | 2014-4-23 01:15 | 只看该作者
又使用中断,又不使用中断,搞什么飞机。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝