TA的每日心情 | 开心 2019-11-19 11:07 |
---|
签到天数: 226 天 连续签到: 1 天 [LV.7]常住居民III
|
本帖最后由 zhjb1 于 2018-2-12 14:31 编辑
在下载的例程中一时找不到专门IO控制函数只好借助其控制LED的函数Hal_RGB.c和hal_rgb.h。具体更改如下:
打开hal_rgb.h在 #define LED2 2 下边增加:
#define sdat 3
#define sclk 4
#define sreg 5
#define sres 6
在 #define LED_B_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_9)
#define LED_B_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_9)的下边增加:
#define sdat_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_12)
#define sdat_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_12)
#define sclk_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define sclk_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define sreg_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_14)
#define sreg_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_14)
#define sres_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_15)
#define sres_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_15)
注意,xxxx_OFF()是设置IO口为高;xxxx_ON()设置IO口为低!在最后增加两个函数:
void lcd_Init(void);
void lcdControl(uint8_t Object,uint8_t State);
后一个没有用到,但觉得可能会有用。
打开Hal_RGB.c,在最后边增加两个函数:
//函数名称 : lcdInit 功能描述 : lcd初始化
void lcd_Init(void){
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
sdat_OFF();
sclk_OFF();
sreg_OFF();
sres_OFF();
}
//函数名称 : lcdControl 功能描述 : LED控制
void lcdControl(uint8_t Object,uint8_t State){
switch(Object){
case sdat:
if(State == 1) sdat_ON();else sdat_OFF();
break;
case sclk:
if(State == 1)sclk_ON();else sclk_OFF();
break;
case sreg:
if(State == 1)sreg_ON();else sreg_OFF();
break;
case sres:
if(State == 1)sres_ON();else sres_OFF();
break;
}
}
前者是定义PB_12~PB_15为4线串口LCD控制GPIO口,后者暂时无用,觉得可能有用。余下的就相当简单了,只需要将变好的显示屏驱动代码写成.h文档include连接上去就一起Ok了。
41
照片41显示了较大的128x64黑白串口屏连接板子驱显示意图。为满屏刷显ASCII码。以后的E1S与F103的通讯就可以截获显示在LCD上了,相当于终端设备。
以上工程是在IAR8.11下修改的wifi_mcusdk_dev_stm32_v3.0.3文档。
|
|