|
本帖最后由 EEFOCUS小白 于 2015-4-1 10:13 编辑 现在明白了我们的bit17对应的是FSMC的bit16,也就是A16了,所以我们的硬件连线应该是PA16了,也就是说HADDR 信号线是需要转换到外部存储器的内部AHB地址线,是字节地址。 给地址、将地址映射到外存储器(由HADDR的A25--A1映射到A24---A0) 注意点就是这个地方了,其他的时序问题和前面用IO模拟是差不多的,唯一的好处就是,我们有很多控制信号就不需要管了。最后贴上代码吧
/******************************************************************************** Function Name : LCD_WriteReg* Description : Writes to the selected LCD register.* Input : - LCD_Reg: address of the selected register.* - LCD_RegValue: value to write to the selected register.* Output : None* Return : None*******************************************************************************/void LCD_WriteReg(unsigned char LCD_Reg,unsigned int LCD_RegValue){ /* Write 16-bit Index, then Write Reg */ LCD->LCD_REG = LCD_Reg; //这里表示写寄存器 /* Write 16-bit Reg */ LCD->LCD_RAM = LCD_RegValue; //这里表示写寄存器的值(也就是数据)}/******************************************************************************** Function Name : LCD_ReadReg* Description : Reads the selected LCD Register.* Input : None* Output : None* Return : LCD Register Value.*******************************************************************************/u16 LCD_ReadReg(unsigned char LCD_Reg){ /* Write 16-bit Index (then Read Reg) */ LCD->LCD_REG = LCD_Reg; //这里表示先写寄存器 /* Read 16-bit Reg */ return (LCD->LCD_RAM); //读取值}/******************************************************************************** Function Name : LCD_WriteRAM_Prepare* Description : Prepare to write to the LCD RAM.* Input : None* Output : None* Return : None*******************************************************************************/void LCD_WriteRAM_Prepare(void){ LCD->LCD_REG = R34;}/******************************************************************************** Function Name : LCD_WriteRAM* Description : Writes to the LCD RAM.* Input : - RGB_Code: the pixel color in RGB mode (5-6-5).* Output : None* Return : None*******************************************************************************/void LCD_WriteRAM(u16 RGB_Code) { /* Write 16-bit GRAM Reg */ LCD->LCD_RAM = RGB_Code;}/******************************************************************************** Function Name : LCD_ReadRAM* Description : Reads the LCD RAM.* Input : None* Output : None* Return : LCD RAM Value.*******************************************************************************/unsigned int LCD_ReadRAM(void){ unsigned int dummy; /* Write 16-bit Index (then Read Reg) */ LCD->LCD_REG = R34; /* Select GRAM Reg */ /* Read 16-bit Reg */ dummy = LCD->LCD_RAM; return dummy;}/******************************************************************************** Function Name : LCD_SetCursor* Description : Sets the cursor position.* Input : - Xpos: specifies the X position.* - Ypos: specifies the Y position. * Output : None* Return : None*******************************************************************************/void LCD_SetCursor(unsigned int Xpos, unsigned int Ypos){ LCD_WriteReg(0x06,Ypos>>8); LCD_WriteReg(0x07,Ypos); LCD_WriteReg(0x02,Xpos>>8); LCD_WriteReg(0x03,Xpos); } 对比下之前的用IO驱动的方式,确实是少了一些控制信号! |
| 楼主乃绝对强人 |
| 谢谢支持 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版