野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12795|回复: 2

485通讯试验,将传感器数据显示在显示屏上,求大神赐教!!

[复制链接]
发表于 2016-4-14 15:08:05 | 显示全部楼层 |阅读模式
目前已完成将开发板的16进制数据通过485口打印到电脑上,(传感器串口配置要求是9600,8位数据位,偶检验位),但是改用开发板向传感器发相同的命令却没有数据返回,是不是我的串口配置有问题?
主函数
static void Delay ( __IO uint32_t nCount )
{
  for ( ; nCount != 0; nCount -- );
       
}

        uint8_t ch;
char chen[9];
char chen2[9];
char che[5];
int i;
uint16_t send_AHRSO[5]={0x01,0x05,0x00,0x23,0x50};
        uint8_t ch;
         static void delay_ms(u16 time)
{
        u16 i=0;
        while(time--)
        {
                i=12000;
                while(i--){}
        }
}


        void USART_PutHEX(USART_TypeDef* USARTx,uint8_t Data)
{
         USART_SendData(USARTx, Data);
   while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);
}


        int SendUrt()
        {
           GPIO_SetBits(mac485REDE_PORT,mac485REDE_PIN);
     USART_PutHEX(USART2,send_AHRSO[0]);
                 USART_PutHEX(USART2,send_AHRSO[1]);
                 USART_PutHEX(USART2,send_AHRSO[2]);
                 USART_PutHEX(USART2,send_AHRSO[3]);
                 USART_PutHEX(USART2,send_AHRSO[4]);
     //USART_PutHEX(USART2,send_AHRSO[4]);  
        }
//char CH[];

int DisplayDemo()
{
        /* í¨1yDT¸ÄGRAMμÄé¨Ãè·½Ïò£¬è»oóí¨1y¿′òo¾§ÇåÆáμÄ髿飬¾í¿éòÔÖaμàGRAMμÄêμ¼êé¨Ãè·½ÏòáË */
  ILI9341_GramScan ( 1 );
       
  ILI9341_Clear ( 0, 0, 240, 320, macBACKGROUND);
       
  ILI9341_DispString_EN ( 0, 10, "This is a lcd demo to display ascii", macBACKGROUND, macRED );

}


/**
  * @brief  Ö÷oˉêy
  * @param  ÎT  
  * @retval ÎT
  */
extern int iup;
char Num[3];
int main ( void )
{
        //char cStr [ 10 ];
       
  //uint32_t ulCount;
   uint8_t ch=0;
        iup=0;
        USART2_Config();
        LED_GPIO_Config();
        NVIC_Configuration();
        LCD_Init ();         //LCD 3õê¼»ˉ
        DisplayDemo();
  Num[2]='\0';
        che[5]='\0';               
        while(1)
                {
                        GPIO_ResetBits(mac485REDE_PORT,mac485REDE_PIN);
                        SendUrt();
                               
                Delay(1000);
                if(iup>4)
     {
             iup=0;
                         
                         Num[0]=che[2];
                         Num[1]=che[3];
        //                 sprintf(chen,"%c",che);
//                         sprintf(chen2,"%c",Num);
                         
                         
                         ILI9341_DispString_EN ( 60, 60, che, macBACKGROUND, macRED );
                        ILI9341_DispString_EN ( 60, 100, Num, macBACKGROUND, macRED );
     }

        }       

}       
中断函数
void USART2_IRQHandler(void)
{
         uint8_t ch;
        //u8 temp=0;
        extern char che[5];
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
        {        
            //ch = USART1->DR;
                        ch=USART_ReceiveData(USART2);
                GPIO_SetBits(mac485REDE_PORT,mac485REDE_PIN);
                delay_ms(1);
                che[iup]=ch;
                iup++;
       }
}


回复

使用道具 举报

发表于 2016-4-14 15:09:29 | 显示全部楼层
先用sprintf标准的C库函数把要显示的数据转换成字符,然后调用液晶的显示函数就可以显示了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-14 15:10:16 | 显示全部楼层
串口配置函数如下
void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

        //ÅäÖÃÖD¶ÏÔ′
        NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}
void USART2_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;

        /* config USART2 clock */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        RCC_APB2PeriphClockCmd(mac485REDE_GPIO_CLK, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

        /* USART2 GPIO config */
   /* Configure USART2 Tx (PA.02) as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
            
  /* Configure USART2 Rx (PA.03) as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
        // 485 ½óêÕ·¢Ëíê1Äü GPIO
  GPIO_InitStructure.GPIO_Pin = mac485REDE_PIN ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(mac485REDE_PORT, &GPIO_InitStructure);
          
        /* USART2 mode config */
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_9b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_Even ;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

        USART_Init(USART2, &USART_InitStructure);
  USART_Cmd(USART2, ENABLE);
}

static void delay_ms(u16 time)
{
        u16 i=0;
        while(time--)
        {
                i=12000;
                while(i--){}
        }
}
int fputc(int ch, FILE *f)
{
                /* ·¢Ëíò»¸ö×Ö½úêy¾Yμ½USART1 */
                USART_SendData(USART2, (uint8_t) ch);
               
                /* μè′y·¢Ëííê±Ï */
                while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);               
        //  delay_ms(2);
  //        GPIO_ResetBits(GPIOE,GPIO_Pin_5);
                return (ch);
}

/// Öض¨Ïòc¿aoˉêyscanfμ½USART1
int fgetc(FILE *f)
{
                /* μè′y′®¿ú1êäèëêy¾Y */
                while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET);

                return (int)USART_ReceiveData(USART2);
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-26 19:18 , Processed in 0.068349 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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