STM32开源板全屏图片提速例程/RA8875/SPIFLASH/DMA

过节之前这个没调出来

今天继续搞,下午才搞出来,中午去吃饭的时候带到了线,板子从桌上摔到瓷砖上,液晶朝下亮点STM32开源板全屏图片提速例程/RA8875/SPIFLASH/DMA

液晶不能用了,扔了,换了一块,亮点STM32开源板全屏图片提速例程/RA8875/SPIFLASH/DMA也许这是能调出来的先兆哈

 

确实搞定了,速度比不用DMA方式快很多

步骤:1.将图片处理后保存在TF卡上(macro sd)

2.将TF卡上的图片通过编程,复制到SPI FLASH

3.设置RA8875一堆寄存器,透过DMA方式将SPIFALSH上数据传到显存

4.继续显示下一张图片,速度太快,两张图片间要延时

 

部分代码供参考:

 

 


      


#include "bp_config.h"
#include "stdio.h"
INT8U backlight; //背光亮度

//#ifdef PRINTF_SUPPORT

//为解决PRINTF重定向的问题
int SendChar (int ch)  {  

  while (!(USART1->SR & USART_FLAG_TXE)); // USART1 可换成你程序中通信的串口

  USART1->DR = (ch & 0x1FF);

  return (ch);

}

int GetKey (void)  {

  while (!(USART1->SR & USART_FLAG_RXNE));
  return ((int)(USART1->DR & 0x1FF));
}
//#endif

INT8U KeyPressed;
u8 TEXT_BUF[]={"BP STM32 develop board SPI FLASH OK!"};


#define SIZE sizeof(TEXT_BUF)


u8 tff_state;
FATFS tff_fs;
FRESULT tff_res;
UINT tff_br;


int main(void)
              
 INT16U temp,count;
 u8 datatemp[SIZE];

 u8 * p1,data,step;

 u32 id,i,j,line=0;


 temp=0;  

 clock_config();   //启动时钟
 led_init();       //led初始化
 key_init();       //按键初始化
    usart_init();
 tft_init();       //4.3寸触摸屏TFT液晶初始化
 iic_init();
 spiflash_init();  //初始化SPIFLASH所用的SPI
 exti_config();    //中断配置
 if (TFT_SUPPORT) LcdClear(WHITE);

 while(at24c02_check()!=0) //校验IIC
 {
  LCD_ShowString(10,line,"iic error!");
  beep_run(100);
  delay_ms(1500);
  lineadd; 
 }
 while(tfcard_init()!=0)  //校验TF卡
   
  if (TFT_SUPPORT)
   LCD_ShowString(10,line,"TFCARD NOT FOUND!"); 
  lineadd;
  beep_run(100);
  delay_ms(1500);
 }
 tff_res = f_mount(0, &tff_fs); //校验文件系统
 if(tff_res!=FR_OK)
    {
  LcdPrintf(10,line,RED,WHITE,"f_mount FAILED!ERR=%d",tff_res);
   beep_run(500);
  while(1);
    }
 if (TFT_SUPPORT) LcdClear(WHITE);
 if (TFT_SUPPORT) LCD_ShowString(10,10,"BMP TEST"); 
 while((id=spiflash_readid())!=SPIFLASH_ID)//校验SPIFLASH W25Q64
   
   if(ISDEBUG) printf("ID:%x",id);
   if (TFT_SUPPORT) LcdPrintf(10,30+line,RED,WHITE,"Check Failed return ID is:%d",i);
   line+=20;
   if(ISDEBUG) printf("Check Failed return ID is:%d",i);
   delay_ms(500);
 }
 delay_ms(1500);  
 LcdClear(WHITE);   
 LcdPrintf(10,10,RED,WHITE,"W25Q64 Check OK!id=%x",id);
 temp=SIZE;

 //写入图片
 LcdClear(WHITE);
 data=0;
 line=10; 

 GPIO_SetBits(spi2_selectgpio,spi2_selectpin );
 FontSize(16);
 LcdPrintStr("◆开始写入文件tu2.bmp到FLASH",10,line,RED,WHITE,1);
 lineadd;
 //bmp_disp("bmp/tu2.bmp",0,0);
    // bmp_tf2flash("bmp/tu2.bmp",bmp_startaddress);
 
 //bmp_tf2flash("bmp/bplogo.bmp",bmp_logoaddress);
   


 GPIO_SetBits(spi2_selectgpio,spi2_selectpin); //SPIFLASH由RA8875控制
 LcdPrintStr("◆文件已写入FLASH",10,line,RED,WHITE,1);
 lineadd;
 bmp_dispflash(bmp_startaddress,0,0);
  delay_ms(1000);

 while(1)
 {

  LcdClear(WHITE);
 bmp_dispflash(bmp_logoaddress,10,50);
 FontSize(32); //选择 设置2EH
 LcdPrintStr("◆亮点STM32",170,60,RED,WHITE,1);
 LcdPrintStr("◆图片显示程序2",170,100,RED,WHITE,1);
 LcdPrintStr("◆快速图片显示范例",170,140,RED,WHITE,1);
 LcdPrintStr("◆brightpoint.taobao.com",10,220,RED,WHITE,1);
 lineadd;
 delay_ms(5000);
 bmp_dispflash(bmp_address1,0,0);
 delay_ms(500);
 bmp_dispflash(bmp_address2,0,0);
 delay_ms(500);
 bmp_dispflash(bmp_address3,0,0);
 delay_ms(500);
 bmp_dispflash(bmp_address4,0,0);
 delay_ms(500);
 bmp_dispflash(bmp_address5,0,0);
  delay_ms(500);
 bmp_dispflash(bmp_address6,0,0);
  delay_ms(500);
 bmp_dispflash(bmp_address7,0,0);
  delay_ms(500);
 bmp_dispflash(gbmp_address1,0,0);
  delay_ms(500);
 //bmp_dispflash(gbmp_address2,0,0);
 // delay_ms(500);
 bmp_dispflash(gbmp_address3,0,0);
  delay_ms(500);
 bmp_dispflash(gbmp_address4,0,0);
  delay_ms(500);
 bmp_dispflash(gbmp_address5,0,0);
  delay_ms(500);
 bmp_dispflash(gbmp_address6,0,0);
  delay_ms(500);

 bmp_dispflash(gbmp_address7,0,0);
 delay_ms(500);
   LcdClear(WHITE);
 }

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值