利用了暑假,想接触下stm,就想着先显示点东西,然后下了一个程序,直接驱动1602的程序,我想请教下大家如何修改引脚?该例程RS.RW.EN是接PB3-5,D0-7接的是PB8-15,如果我要是想用不同的引脚,比如RS,RW.EN接PB12-10,而D0-7接的却是PE的15-8,请问该怎么办呢?刚接触,也看了蛮多资料,感觉有感觉可就是调不出来。请教请教。是不是修改如下两个就行了??
#define RS GPIO_Pin_3
#define RW GPIO_Pin_4
#define EN GPIO_Pin_5
#define LCD1602_GPIO GPIOB
#define LCD1602_GPIOCLK RCC_APB2Periph_GPIOB
#define GPIO_Pin_DAT GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15
#define GPIO_Pin_CMD GPIO_Pin_3| GPIO_Pin_4 |GPIO_Pin_5
#define GPIO_BUSY GPIO_Pin_15
#define LCD1602WriteData(x) {GPIOB->BSRR = x<<8 & 0xff00;GPIOB->BRR = ((~x)<<8) & 0xff00;}
#define BUSY GPIO_ReadInputDataBit(LCD1602_GPIO,GPIO_BUSY)
和这个
oid LCD1602_InitPort(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(LCD1602_GPIOCLK | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOE, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); //把调试设置普通IO口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CMD;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出的最大频率为50HZ
GPIO_Init(LCD1602_GPIO, &GPIO_InitStructure); // 初始化GPIOB端口 //配置1602液晶数据端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_DAT;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; // 开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出的最大频率为50HZ
GPIO_Init(GPIOE, &GPIO_InitStructure); // 初始化GPIOE端口
GPIO_Write(LCD1602_GPIO,0xffff);
GPIO_Write(GPIOE,0xffff); //将GPIOB 16个端口全部置为高电
|