初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2019-9-9
- 在线时间
- 20 小时
|
10金钱
在用HAL库STM32F4阿波罗开发板写LVGL框架,用的是FMC总线,发现界面刷新就和PPT似的,网上查了很多FSMC+DMA的范例,都是标准库的。用HAL库按标准库移植了一份,DMA一直跑不起来,进中断后就没然后了,贴驱动代码希望大家帮忙看看哪里有问题 LCD代码是原子哥的F429HAL库触摸屏驱动。
typedef struct
{
vu16 LCD_REG;
vu16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A18作为数据命令区分线
//注意设置时STM32内部会右移一位对其!
#define LCD_BASE ((u32)(0x60000000 | 0x0007FFFE))
#define LCD ((LCD_TypeDef *) LCD_BASE)
DMA_HandleTypeDef DMA_HandlerStructure;
void DMA_fsmc_Init()
{
__HAL_RCC_DMA2_CLK_ENABLE();
// HAL_DMA_DeInit(&DMA_HandlerStructure);
DMA_HandlerStructure.Instance = DMA2_Stream3; //数据流
DMA_HandlerStructure.Init.Channel = DMA_CHANNEL_0 ; //通道0
DMA_HandlerStructure.Init.Direction = DMA_MEMORY_TO_MEMORY; //存储器到存储器
DMA_HandlerStructure.Instance-> AR = 0; //DMA_PeripheralBaseAddr
DMA_HandlerStructure.Instance->M0AR = (u32)&LCD->LCD_RAM; //DMA_Memory0BaseAddr
DMA_HandlerStructure.Init.PeriphInc = DMA_PINC_DISABLE; //外设是否递增
DMA_HandlerStructure.Init.MemInc = DMA_MINC_ENABLE; //内存是否递增
DMA_HandlerStructure.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //半字 16位
DMA_HandlerStructure.Init.PeriphDataAlignment = DMA_MDATAALIGN_HALFWORD; //半字 16位
DMA_HandlerStructure.Init.Priority = DMA_PRIORITY_HIGH; //设置优先级 高
DMA_HandlerStructure.Init.Mode = DMA_NORMAL; // 循环模式先测试
HAL_DMA_Init(&DMA_HandlerStructure); //进行初始化
}
void DMA_Fill_Color(u16 X0, u16 Y0, u16 X1, u16 Y1, u16 *color)
{
int Point_Num = (X1-X0+1)*(Y1-Y0+1); //要填充的点数
u16 i=0;
LCD_Set_Window(X0,Y0,X1,Y1);
// HAL_DMA_Abort(&DMA_HandlerStructure);
while(HAL_DMA_GetState(&DMA_HandlerStructure) != HAL_DMA_STATE_RESET)
HAL_DMA_Start(&DMA_HandlerStructure,(u32)(color),(u32)&LCD->LCD_RAM , Point_Num); //开启DMA传输
}
void DMA2_Stream3_IRQHandler(void)
{
u8 u8DMA_FLAG = 0;
u8DMA_FLAG = __HAL_DMA_GET_FLAG(&DMA_HandlerStructure,DMA_FLAG_TCIF0_4);
if(u8DMA_FLAG != 0)
{
__HAL_DMA_CLEAR_FLAG(&DMA_HandlerStructure,DMA_FLAG_TCIF0_4);
}
}
|
-
|