You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
#ifndef _BSP_DMA2D_H
|
|
#define _BSP_DMA2D_H
|
|
|
|
#include "main.h"
|
|
#include "dma2d.h"
|
|
|
|
// extern uint8_t dma2d_transfering;
|
|
void DMA2D_Fill( void * pDst,
|
|
uint32_t width, uint32_t height, uint32_t lineOff, uint32_t pixelFormat,
|
|
uint32_t color);
|
|
|
|
void DMA2D_MemCopy(uint32_t pixelFormat,
|
|
void * pSrc, void * pDst,
|
|
int xSize, int ySize,
|
|
int OffLineSrc, int OffLineDst);
|
|
|
|
void DMA2D_Blend(void* pFg, void* pBg, void* pDst,
|
|
uint32_t offlineFg, uint32_t offlineBg, uint32_t offlineDist,
|
|
uint16_t xSize, uint16_t ySize,
|
|
uint32_t pixelFormat, uint8_t opa);
|
|
|
|
#endif
|
|
|
|
/*
|
|
Test
|
|
|
|
uint32_t gpubuf1[200];
|
|
uint32_t gpubuf2[200];
|
|
DMA2D_Fill( gpubuf1, 25, 8, 0, DMA2D_ARGB8888, 0xFFFFFFFF );
|
|
if (gpubuf1[0] ==0xFFFFFFFF && gpubuf1[199] ==0xFFFFFFFF){
|
|
log_i( "DMA2d Fill Test Pass %02X " , gpubuf1[199]);
|
|
}
|
|
|
|
dma2d_transfering =1;
|
|
DMA2D_MemCopy(DMA2D_ARGB8888, gpubuf1, gpubuf2, 25, 8, 0, 0);
|
|
osDelay(100);
|
|
if (gpubuf2[0] ==0xFFFFFFFF && gpubuf2[199] ==0xFFFFFFFF){
|
|
log_i( "DMA2D MemCopy Test Pass %02X " , gpubuf2[199]);
|
|
}
|
|
|
|
DMA2D->CR |= DMA2D_IT_TC;
|
|
DMA2D->CR |= DMA2D_CR_START;
|
|
会产生两次DMA 传输完成中断
|
|
第一次中断传输中断后,停止,数据也接收到,可能时间太短
|
|
建议死等
|
|
|
|
// DMA 的寄存器启动
|
|
void MYDMA_Enable(DMA_Stream_TypeDef *DMA_Streamx,u16 ndtr)
|
|
{
|
|
DMA_Streamx->CR&=~(1<<0); //关闭DMA传输
|
|
while(DMA_Streamx->CR&0X1); //确保DMA可以被设置
|
|
DMA_Streamx->NDTR=ndtr; //DMA 存储器0地址
|
|
DMA_Streamx->CR|=1<<0; //开启DMA传输
|
|
}
|
|
|
|
// 读 GPIOB pin13 电平
|
|
#define NAND_RB (((GPIOB->IDR) >> 13) & 0x1U)
|
|
*/ |