完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
Stm32FSMC及TFTLED屏笔记
1.FSMC*(Flexiable Static Memory Controler)* 1)FSMC的应用:
(1)映象部分:
(FSMC只有大容量,多引脚封装的stm32有,我用的是STM32ZET6)具体的引脚连接可参照下图、下表,或者上面的参考博客 (4)寄存器: 主要有FSMC_BCRx*(片选控制寄存器),FSMC_BTRx(读时序控制寄存器),FSMC——BWTRx(写时序控制寄存器)* 按如下组合进行访问: (5)库函数使用:(见如下代码及注释,参考正点原子) void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); //需要填入一个结构体的NORSRAM初始化; typedef struct { uint32_t FSMC_Bank; //来设置使用到的存储块标号和区号, //如NOR/PSRAM是块1;我们用其中(有4块)的块4 FSMC_Bank1_NORSRAM4。 uint32_t FSMC_DataAddressMux; // 地址/数据复用使能,若设置为使能,那么地址的低 16位和数据将共用数据总线, uint32_t FSMC_MemoryType; // 来设置存储器类型,如SRAM FSMC_MemoryType_SRAM。 uint32_t FSMC_MemoryDataWidth;//用来设置数据宽度,如16位FSMC_MemoryDataWidth_16b uint32_t FSMC_BurstAccessMode; uint32_t FSMC_AsynchronousWait; uint32_t FSMC_WaitSignalPolarity; uint32_t FSMC_WrapMode; uint32_t FSMC_WaitSignalActive; uint32_t FSMC_WriteOperation;// 用来设置写使能, uint32_t FSMC_WaitSignal; uint32_t FSMC_ExtendedMode; //扩展模式使能位,扩展模式下,可以读写采用不同的时序 uint32_t FSMC_WriteBurst; FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct; } FSMC_NORSRAMInitTypeDef; 关于读写时序的结构体参数如下*(即上面结构体的最后两个成员变量)*: typedef struct { //主要是设置地址及数据的建立时间,根据所接外设SRAM的不同而设置; uint32_t FSMC_AddressSetupTime; //地址建立时间; uint32_t FSMC_AddressHoldTime; //地址维持时间,在同步模式下才使用 uint32_t FSMC_DataSetupTime; //数据建立时间 uint32_t FSMC_BusTurnAroundDuration; uint32_t FSMC_CLKDivision; //时钟分频系数; uint32_t FSMC_DataLatency; uint32_t FSMC_AccessMode; //访问模式有四种,ABCD,异步访问SRAM用模式A }FSMC_NORSRAMTimingInitTypeDef; FSMC的使能函数如下:(较简单) void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState); void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState); void FSMC_PCCARDCmd(FunctionalState NewState); 2.TFTLED屏(ILI9341驱动) 1)ILI9341驱动: (1)接口时序:8080并口: [tr]接口线作用简介[/tr]
原子帮我们将许多底层的代码都封装好了,但在使用时有一些注意事项:
void LCD_DisplayOn(void); //开显示 void LCD_DisplayOff(void); //关显示 void LCD_Clear(u16 Color); //清屏 void LCD_SetCursor(u16 Xpos, u16 Ypos); //设置光标 void LCD_DrawPoint(u16 x,u16 y); //画点 void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color); //快速画点 u16 LCD_ReadPoint(u16 x,u16 y); //读点 void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //画圆 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //画线 void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); //画矩形 void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color); //填充单色 void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color); //填充指定颜色 void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode); //显示一个字符 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); //显示一个数字 void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode); //显示 数字(高位用0补充) void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p); //显示一个字符串,12/16/24字体,若想字符串不覆盖显示,将其中的Showchar(mode=1)即可 |
||
|
||
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 17:37 , Processed in 1.342773 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号