求各位大神看一下哪里出错了 我想把发送的数据显示在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);
}
}
#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部分有问题,你可以把原理图和代码发上来看看,要是不方便,可以加我好友!
