非常奇怪,同一个程序,2星期前能正常驱动,程序没改动过,但是现在死活点不亮。各位大神帮忙看下,谢谢。
另外分享一下DMA+SPI点亮这个屏的一段程序
void LCD_clear(u16 color)
{
SPI2_bit(8);
LCD_set_xy(0,0,319,239);
SPI2_bit(16);
LCD_CS=0; //LCD_CS=0
LCD_RS=1;
////////////////////////////DMA刷屏方式//////////////////////
SPI2->CR2|=1<<1;//使能发送DMA
LCD_DMA_start((u32)&color,0xFFFF);
while(!(DMA1->ISR&(1<<17)));//等待传输完成,DMA每次只能传65535个数据
DMA1->IFCR|=1<<17;//清除传输完成标志位
LCD_DMA_start((u32)&color,11267);
while(!(DMA1->ISR&(1<<17)));//等待传输完成,DMA每次只能传65535个数据
DMA1->IFCR|=1<<17;//清除传输完成标志位
while(SPI2->SR&(1<<7));//等待传输完成
SPI2->SR;//消除错误
SPI2->DR;//消除错误,这个很重要,不然不能重新设置。
SPI2->CR2&=~(1<<1);//失能发送DMA
LCD_CS=1;
SPI2_bit(8);
}
DMA+SPI发送完成后一定要消除错误,不然再次用DMA发送数据会出错。
一周热门 更多>