驱动字库芯片GT23L24M0140
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN8
开发环境:MDK5.13
mcu: stm32f407VGIGH6
字库芯片:GT23L24M0140
说明:
GT23L24M0140是一款支持GB18030标准的字库芯片,有多种大小的字体可供选择。
本文驱动了其中常用的字体。
源代码:
drv_font.h
/********************************************************************** 字库芯片驱动层头文件* (c)copyright 2013,jdh* All Right Reserved*新建日期:2015/2/2 by jdh*修改日期:2015/2/3 by jdh**********************************************************************//*********************************************************************硬件连接说明电路标号 单片机引脚 特殊功能SPI1_NSS PA4 SPI1_NSS SPI1_MISO PA6 SPI1_MISOSPI1_MOSI PA7 SPI1_MOSISPI1_SCK PA5 SPI1_SCK**********************************************************************/#ifndef _DRV_FONT_H_#define _DRV_FONT_H_/********************************************************************** 头文件**********************************************************************/#include "stm32f4xx.h"/********************************************************************** 函数**********************************************************************//********************************************************************** 初始化字库芯片**********************************************************************/void drv_font_init(void);/********************************************************************** 打开SPI使能**********************************************************************/void drv_font_enable(void);/********************************************************************** 关闭SPI使能**********************************************************************/void drv_font_disable(void);/********************************************************************** spi发送一个字节*参数:dat:数据*返回:spi接收到的字节**********************************************************************/uint8_t drv_font_send_byte(uint8_t dat);#endif
drv_font.c
/********************************************************************** 字库芯片驱动层文件* (c)copyright 2015,jdh* All Right Reserved*新建日期:2015/2/2 by jdh*修改日期:2015/2/3 by jdh**********************************************************************//********************************************************************** 头文件**********************************************************************/#include "drv_font.h"/********************************************************************** 静态函数**********************************************************************//********************************************************************** 初始化spi**********************************************************************/static void init_spi(void);/********************************************************************** 函数**********************************************************************//********************************************************************** 初始化字库芯片**********************************************************************/void drv_font_init(void){ //初始化spi init_spi();}/********************************************************************** 打开SPI使能**********************************************************************/void drv_font_enable(void){ GPIO_ResetBits(GPIOA, GPIO_Pin_4);}/********************************************************************** 关闭SPI使能**********************************************************************/void drv_font_disable(void){ GPIO_SetBits(GPIOA, GPIO_Pin_4);}/********************************************************************** spi发送一个字节*参数:dat:数据*返回:spi接收到的字节**********************************************************************/uint8_t drv_font_send_byte(uint8_t dat){ while ((SPI1->SR & SPI_I2S_FLAG_TXE) == (uint16_t)RESET); SPI1->DR = dat; while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET); return (SPI1->DR); }/********************************************************************** 初始化spi**********************************************************************/static void init_spi(void){ //定义IO初始化结构体 GPIO_InitTypeDef GPIO_InitStructure ; //定义SPI初始化结构体 SPI_InitTypeDef SPI_InitStructure ; //配置CS //初始化时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_SPI1); //管脚模式:输出口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //类型:推挽模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //上拉下拉设置 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //IO口速度 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //管脚指定 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //初始化 GPIO_Init(GPIOA, &GPIO_InitStructure); //关闭使能 drv_font_disable(); //初始化SPI //关闭SPI SPI_Cmd(SPI1,DISABLE); //初始化SPI时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); //设置IO口时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_SPI1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_SPI1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_SPI1); //管脚模式:输出口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //类型:推挽模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //上拉下拉设置 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //IO口速度 GPIO_Ini