stm32使用fsmc总线驱动彩屏(基于神舟三号)

发布者:DelightfulWish最新更新时间:2017-11-17 来源: eefocus关键字:stm32  fsmc总线  驱动彩屏 手机看文章 扫描二维码
随时随地手机看文章

使用fsmc总线驱动彩屏的特点是速度快,与使用IO口模拟的时序的做法相比,FSMC稳定性好,缺点是配置复杂,较难理解。现将配置步骤总结如下:

1.配置引脚

[转载]stm32使用fsmc总线驱动彩屏(基于神舟三号)[转载]stm32使用fsmc总线驱动彩屏(基于神舟三号)[转载]stm32使用fsmc总线驱动彩屏(基于神舟三号)

配置函数如下:

void LCD_CtrlLinesConfig(void)

{

  GPIO_InitTypeDef GPIO_InitStructure;

 

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |

                         RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |

                         RCC_APB2Periph_AFIO, ENABLE);

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |

                                GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | 

                                GPIO_Pin_15;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

  GPIO_Init(GPIOD, &GPIO_InitStructure);

 

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | 

                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | 

                                GPIO_Pin_15;

  GPIO_Init(GPIOE, &GPIO_InitStructure);

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

  GPIO_Init(GPIOF, &GPIO_InitStructure);

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

  GPIO_Init(GPIOG, &GPIO_InitStructure);

}

2.配置fsmc总线

void LCD_FSMAC_Config(void)

{

   FSMC_NORSRAMInitTypeDef fsmc_config;

   FSMC_NORSRAMTimingInitTypeDef p;

   p.FSMC_AccessMode=FSMC_AccessMode_A;

   p.FSMC_AddressHoldTime=0;

   p.FSMC_AddressSetupTime=2;

   p.FSMC_BusTurnAroundDuration=0;

   p.FSMC_CLKDivision=0;

   p.FSMC_DataLatency=0;

   p.FSMC_DataSetupTime=2;

   fsmc_config.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;

   fsmc_config.FSMC_Bank=FSMC_Bank1_NORSRAM4;

   fsmc_config.FSMC_BurstAccessMode=FSMC_BurstAccessMode_Disable;

   fsmc_config.FSMC_DataAddressMux=FSMC_DataAddressMux_Disable;

   fsmc_config.FSMC_ExtendedMode=FSMC_ExtendedMode_Disable;

   fsmc_config.FSMC_MemoryDataWidth=FSMC_MemoryDataWidth_16b;

   fsmc_config.FSMC_MemoryType=FSMC_MemoryType_PSRAM;

   fsmc_config.FSMC_ReadWriteTimingStruct=&p;

   fsmc_config.FSMC_WaitSignal=FSMC_WaitSignal_Disable;

   fsmc_config.FSMC_WaitSignalActive=FSMC_WaitSignalActive_BeforeWaitState;

   fsmc_config.FSMC_WaitSignalPolarity=FSMC_WaitSignalPolarity_Low;

   fsmc_config.FSMC_WrapMode=FSMC_WrapMode_Disable;

   fsmc_config.FSMC_WriteBurst=FSMC_WriteBurst_Disable;

   fsmc_config.FSMC_WriteOperation=FSMC_WriteOperation_Enable;

   fsmc_config.FSMC_WriteTimingStruct=&p;

   FSMC_NORSRAMInit(&fsmc_config);

   FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);

   

}

#define LCD_REG_ADDR (*((unsigned short int *)0x6c000000))

#define LCD_RAM_ADDR (*((unsigned short int *)0x6c000002))

#define Lcd_Reg (LCD_REG_ADDR)

#define Lcd_Ram (LCD_RAM_ADDR)

void LCD_WriteReg(u16 lcd_reg,u16 lcd_regval)

{

Lcd_Reg=lcd_reg;

Lcd_Ram=lcd_regval;

}

u16 LCD_ReadReg(u8 addr)

{

u16 data;

data=Lcd_Ram;

return data;

}

void LCD_WriteRAM(u16 color)

{

Lcd_Ram=color;

}

void LCD_WriteRAM_Prepare(void)

{

  Lcd_Reg= R34;

}

void LCD_SetCursor(u16 Xpos, u16 Ypos)

{

  LCD_WriteReg(0x06,Ypos>>8);

  LCD_WriteReg(0x07,Ypos);

  

  LCD_WriteReg(0x02,Xpos>>8);

  LCD_WriteReg(0x03,Xpos);  

}


关键字:stm32  fsmc总线  驱动彩屏 引用地址:stm32使用fsmc总线驱动彩屏(基于神舟三号)

上一篇:stm32之TFT触摸屏(ILI9320):通过LCD_ShowChar显示的过程分析
下一篇:单片机键盘去抖程序

推荐阅读最新更新时间:2024-03-16 15:45

基于STM32与机智云的智能蜡疗机
摘要: 随着物理疗法在慢病治疗中的效果获得认可, 传统的石蜡疗法被广泛应用在医院的理疗科。目前, 蜡疗机的制蜡方法虽已趋于成熟, 但仍存在制蜡效率低下、功耗大、不够智能等问题, 因此有必要对蜡疗机的制蜡效率及智能化程度进行研究。以STM32微控制器为核心, 结合G510通信模块, 对蜡疗机的硬件系统进行优化设计;通过机智云物联网开发技术, 对蜡疗机进行控制和通信。 试验结果表明, 与现有产品相比, 该系统减少了制蜡时间、降低了蜡疗机的功耗, 实现了蜡疗机的物联网控制。该研究为进一步完善蜡疗机的功效提供了设备基础, 对蜡疗机的广泛应用具有积极促进作用, 对今后利用石蜡疗法进行理疗大数据的挖掘与应用具有重要意义。 0 引言 经
[单片机]
基于<font color='red'>STM32</font>与机智云的智能蜡疗机
初学stm32-外部中断(EXTI按键中断)
外部中断概述 STM32F4的每个IO都可以作为外部中断输入。 STM32F4的中断控制器支持23个外部中断/事件请求: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。 EXTI线21:连接到RTC入侵和时间戳事件。 EXTI线22:连接到RTC唤醒事件。 对于每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。 STM32F4供IO使用的
[单片机]
初学stm32-外部中断(EXTI按键中断)
stm32超声波测距程序
闲来传一些电设的时候写的一些小的功能程序,与大家分享交流。 单片机用的是STM32F103VC系列,超声波是淘宝买的一个模块,只有5个引脚,用起来很方便。 用的时候只需要其中4个脚,VCC,GND,TRIG,ECHO。 TRIG接PA8,OUT_PP模式;ECHO接PA9,IN_FLOATING模式。 #include stm32f10x_heads.h #include HelloRobot.h #include display.h void Tim2_Init(void); void TIM2_IRQHandler(void) { if(GPIO_ReadInputDataBit(GPIOE,
[单片机]
当前STM32几种最流行的开发环境对比
序 时间进入2020年年底,越来越多的开发者跟我一样不再满足于高级语言和WEB前后端开发,逐渐开始把玩各类MCU,MPU,FPGA等硬件产品,同时这些嵌入式开发的门槛也随着互联网的发展渐渐降低,更好地吸引了众多开发者的加入。毫无疑问,那些软硬结合、能解决实际生产生活需求的小项目,总是更能引发人们的好奇心和学习欲望。 今天我们就来谈谈当前最流行的几种STM32家族MCU的开发方案,主要向新人朋友们介绍几种集成开发环境,对于大佬们来说,如果您还在使用破解版的KEIL开发项目,不妨试试我下面提到的另外几种IDE,或许会有更好的开发体验。 Keil5 最正统,最经典的嵌入式MCU开发环境。 价格/跨平台 ★ 收费。国内由米尔科技
[单片机]
STM32】SPI的基本原理、库函数(SPI一般步骤)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第23章 串行外设接口SPI SPI的基本介绍 SPI的简介 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM920
[单片机]
【<font color='red'>STM32</font>】SPI的基本原理、库函数(SPI一般步骤)
STM32:基本定时器详解
一、基本定时器介绍 在STM32中,基本定时器有TIM6、TIM7等。基本定时器主要包含时基单元,提供16位的计数,能计数0~65535。基本定时器除了计数功能以外,还能输出给DAC模块一个TRGO信号。基本定时器框图如下: 二、时基单元介绍 STM32的所有定时器都具备时基单元,时基单元的功能就是简单的计数,即计数时钟源TMxCLK的脉冲个数,这个时钟源来至APB1总线。高级和通用定时器还可以使用其他的时钟源进行计数,在高级定时器和通用定时器中会详细介绍。在基本定时器框架中可知时基单元包含如下三个部分: 1.ARR 自动重装载寄存器 2.CNT 计数器 3.PSC 预分频器 基本定时器的定时(计数)功能配置
[单片机]
<font color='red'>STM32</font>:基本定时器详解
stm32HAL库学习——UART学习笔记
这里只是简单的记录自己使用过程中的经验,并非详细阐述原理。 一、串口输出打印重定向printf,代码如下: int fputc(int ch,FILE *f) { uint8_t temp ={ch}; HAL_UART_Transmit(&huart1,temp,1,1000); return (ch); } int fgetc(FILE *f) { uint8_t ch; HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 1000); return ch; } 用作程序调试输出时,可以使用一组宏定义,方便开发完成后关闭printf; /* 调试日志串口
[单片机]
STM32单片机半主机模式的应用
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。 在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragmaimport(__use_no_semihosting_swi)#pragmaimport(_main_redirection)constchar__stdin_name[150]
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved