您的位置:首页 > 娱乐 > 八卦 > dw网页设计作业成品加解析_搜索量排名_百度网_谷歌优化方法

dw网页设计作业成品加解析_搜索量排名_百度网_谷歌优化方法

2024/12/31 6:25:10 来源:https://blog.csdn.net/wgf350357114/article/details/144551727  浏览:    关键词:dw网页设计作业成品加解析_搜索量排名_百度网_谷歌优化方法
dw网页设计作业成品加解析_搜索量排名_百度网_谷歌优化方法

硬件平台:STM32F429IGT6
屏:7寸RGB, 1024 X 600分辨率
1)选择芯片
在这里插入图片描述
2)SYS配置
在这里插入图片描述
3)RCC配置
在这里插入图片描述
4)FMC配置(驱动板载SDRAM)
在这里插入图片描述
这里的配置需要结合硬件原理图的接线:
在这里插入图片描述
原理图中的BA0和BA1决定了配置中有4个BANK
在这里插入图片描述
这里涉及到SDRAM的上电初始化文件:(后面会具体用到)
sdram.c

#include "sdram.h"
#include "fmc.h"
//向SDRAM发送命令
//bankx:0,向BANK5上面的SDRAM发送指令
//      1,向BANK6上面的SDRAM发送指令
//cmd:指令(0,正常模式/1,时钟配置使能/2,预充电所有存储区/3,自动刷新/4,加载模式寄存器/5,自刷新/6,掉电)
//refresh:自刷新次数
//regval:模式寄存器的定义
//返回值:0,正常;1,失败.
u8 SDRAM_Send_Cmd(u8 bankx,u8 cmd,u8 refresh,u16 regval)
{u32 target_bank=0;FMC_SDRAM_CommandTypeDef Command;if(bankx==0) target_bank=FMC_SDRAM_CMD_TARGET_BANK1;       else if(bankx==1) target_bank=FMC_SDRAM_CMD_TARGET_BANK2;   Command.CommandMode=cmd;                //命令Command.CommandTarget=target_bank;      //目标SDRAM存储区域Command.AutoRefreshNumber=refresh;      //自刷新次数Command.ModeRegisterDefinition=regval;  //要写入模式寄存器的值if(HAL_SDRAM_SendCommand(&hsdram1,&Command,0X1000)==HAL_OK) //向SDRAM发送命令{return 0;  }else return 1;    
}
//发送SDRAM初始化序列
void SDRAM_Initialization_Sequence()
{u32 temp=0;//SDRAM控制器初始化完成以后还需要按照如下顺序初始化SDRAMSDRAM_Send_Cmd(0,FMC_SDRAM_CMD_CLK_ENABLE,1,0); //时钟配置使能delay_us(500);                                  //至少延时200usSDRAM_Send_Cmd(0,FMC_SDRAM_CMD_PALL,1,0);       //对所有存储区预充电SDRAM_Send_Cmd(0,FMC_SDRAM_CMD_AUTOREFRESH_MODE,8,0);//设置自刷新次数 //配置模式寄存器,SDRAM的bit0~bit2为指定突发访问的长度,//bit3为指定突发访问的类型,bit4~bit6为CAS值,bit7和bit8为运行模式//bit9为指定的写突发模式,bit10和bit11位保留位temp=(u32)SDRAM_MODEREG_BURST_LENGTH_1          |	//设置突发长度:1(可以是1/2/4/8)SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL   |	//设置突发类型:连续(可以是连续/交错)SDRAM_MODEREG_CAS_LATENCY_3           |	//设置CAS值:3(可以是2/3)SDRAM_MODEREG_OPERATING_MODE_STANDARD |   //设置操作模式:0,标准模式SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;     //设置突发写模式:1,单点访问SDRAM_Send_Cmd(0,FMC_SDRAM_CMD_LOAD_MODE,1,temp);   //设置SDRAM的模式寄存器}
//SDRAM初始化
void SDRAM_Init(void)
{SDRAM_Initialization_Sequence();//发送SDRAM初始化序列//刷新频率计数器(以SDCLK频率计数),计算方法://COUNT=SDRAM刷新周期/行数-20=SDRAM刷新周期(us)*SDCLK频率(Mhz)/行数//我们使用的SDRAM刷新周期为64ms,SDCLK=180/2=90Mhz,行数为8192(2^13).//所以,COUNT=64*1000*90/8192-20=683HAL_SDRAM_ProgramRefreshRate(&hsdram1,683);	
}

sdram.h

#ifndef __SDRAM_H__
#define __SDRAM_H__
#include "sys.h"
#ifdef __cplusplus
extern "C" {
#endif	
#define SDRAM_START_ADDR		0xC0000000	//SDRAM开始地址//SDRAM配置参数
#define SDRAM_MODEREG_BURST_LENGTH_1             ((u16)0x0000)
#define SDRAM_MODEREG_BURST_LENGTH_2             ((u16)0x0001)
#define SDRAM_MODEREG_BURST_LENGTH_4             ((u16)0x0002)
#define SDRAM_MODEREG_BURST_LENGTH_8             ((u16)0x0004)
#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL      ((u16)0x0000)
#define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED     ((u16)0x0008)
#define SDRAM_MODEREG_CAS_LATENCY_2              ((u16)0x0020)
#define SDRAM_MODEREG_CAS_LATENCY_3              ((u16)0x0030)
#define SDRAM_MODEREG_OPERATING_MODE_STANDARD    ((u16)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((u16)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE     ((u16)0x0200)
void SDRAM_Init(void);
#ifdef __cplusplus
}
#endif
#endif

5) DMA2D配置(用来加速)
在这里插入图片描述
在这里插入图片描述
6)LTDC配置
1,设置参数
在这里插入图片描述
2,层参数
在这里插入图片描述
3,中断设置
在这里插入图片描述
4,GPIO设置(必须和硬件连接一致)
在这里插入图片描述
5,背光引脚配置
在这里插入图片描述
7)CRC配置
想用TouchGFX 必须使能CRC.
在这里插入图片描述
8)NVIC中断配置
打开LTDC全局中断
在这里插入图片描述
在这里插入图片描述
9)FreeRTOS配置
1,配置参数,只需要修改栈空间大小为32768 其他的不用更改。
在这里插入图片描述
在这里插入图片描述
2,添加任务
在这里插入图片描述
在这里插入图片描述
10)配置TouchGFX
1,
在这里插入图片描述
2,
在这里插入图片描述
11)时钟配置
注意LTDC的像素时钟,要和具体的液晶屏匹配,这里是42MHZ.
在这里插入图片描述
12)配置项目信息
1,
在这里插入图片描述
2,
在这里插入图片描述
3,
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com