微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求各位大神看一下哪里出错了 我想把发送的数据显示在lcd上 可是下载以后lcd直接熄灭了

求各位大神看一下哪里出错了 我想把发送的数据显示在lcd上 可是下载以后lcd直接熄灭了

时间:10-02 整理:3721RD 点击:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "dma.h"
#define SEND_BUF_SIZE 1        //·¢?íêy?Y3¤?è,×?o?μèóúsizeof(TEXT_TO_SEND)+2μ???êy±?.
u8 SendBuff[SEND_BUF_SIZE];        //·¢?íêy?Y?o3???
const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA ′??úêμ?é"};
int main(void)
{         
        u16 i;
        u8 len=0,t=0;
        u8 j,mask=0;
        u8 *data={0};
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éè???D??ó??è??·?×é?a×é2£o2???à??ó??è??£?2???ìó|ó??è??
        uart_init(115200);                 //′??ú3?ê??ˉ?a115200
        LCD_Init();                                   //3?ê??ˉLCD                 
        MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);//DMA1í¨μà4,íaéè?a′??ú1,′?′¢?÷?aSendBuff,3¤?èSEND_BUF_SIZE.
        POINT_COLOR=RED;//éè??×?ì??aoìé?
        j=sizeof(TEXT_TO_SEND);          
        for(i=0;i<SEND_BUF_SIZE;i++)//ì?3?êy?Yμ?SendBuff
  {
         if(t>=j)//?óè???DD·?
                {
                        if(mask)
                         {
                                SendBuff[i]=0x0a;
                                t=0;
                   }
                         else
                         {
                                SendBuff[i]=0x0d;
                                mask++;
                         }       
                }
                else//?′??TEXT_TO_SENDó???
                {
                        mask=0;
                        SendBuff[i]=TEXT_TO_SEND[t];
                        t++;
                }              
  }          
        USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //ê1?ü′??ú1μ?DMA·¢?í      
        MYDMA_Enable(DMA1_Channel4);//?aê?ò?′?DMA′?ê?£?          
        while(1)
        {
        if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=RESET)        //?D??í¨μà4′?ê?íê3é
                {
                 DMA_ClearFlag(DMA1_FLAG_TC4);//??3yí¨μà4′?ê?íê3é±ê??
                 break;
                }                      
        }
        while(1);
        if(USART_RX_STA&0X8000)       
        {
          len=USART_RX_STA&0x3fff;//μ?μ?′?′??óê?μ?μ?êy?Y3¤?è  
    for(t=0;t<len;t++)
      {
        USART_SendData(USART1, USART_RX_BUF[t]);//?óê?μ?μ?êy?Y·¢μ?′??ú1
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
      }
                                data[t]=USART_RX_BUF[len];
        USART_RX_STA=0;                               
        LCD_ShowString(30,30,210,30,30,data);
        }               
       
}

用万用表测测背光引脚的电平,看看有没有和其他模块共用。在者单步调试,看程序是不是死在某个地方了。

看不懂

你的意思背光引脚驱动不足

我试试 谢谢

多了一个while(1);

下载以后直接熄灭的是什么意思?是亮过之后呢?还是一直没显示,我怀疑你的LCD1602的vdd部分有问题,你可以把原理图和代码发上来看看,要是不方便,可以加我好友!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top