1.初始化
ENC 初始化
/*
* InputPin : ENC脉冲输入管脚 LQ_GPT12_ENC.h 中枚举体
* DirPin : ENC方向管脚 LQ_GPT12_ENC.h 中枚举体
* 函数返回:无
*/
void ENC_InitConfig(ENC_InputPin_t InputPin, ENC_DirPin_t DirPin)
{
}
在母版上有些脉冲管脚是被占用的,比如摄像头,摄像头数据占用,所以要选则合适的脚。
一般编码器正转为正值,反转为负值。
2.获取ENC读取值
/*
* 功能说明:ENC 得到计数值,使用前需要对ENC初始化
* 参数说明:InputPin : ENC脉冲输入管脚 LQ_GPT12_ENC.h 中枚举体
* 函数返回:无
*/
int16_t ENC_GetCounter(ENC_InputPin_t InputPin)
{
}
3.例程:
void LQ_GPT_4mini512TFT(void)
{
char txt[32];
ENC_InitConfig(ENC2_InPut_P33_7, ENC2_Dir_P33_6);
//ENC_InitConfig(ENC3_InPut_P02_6, ENC3_Dir_P02_7);//摄像头冲突,不建议用
ENC_InitConfig(ENC4_InPut_P02_8, ENC4_Dir_P33_5);
ENC_InitConfig(ENC5_InPut_P10_3, ENC5_Dir_P10_1);
ENC_InitConfig(ENC6_InPut_P20_3, ENC6_Dir_P20_0);
TFTSPI_Init(1); //LCD初始化 0:横屏 1:竖屏
TFTSPI_CLS(u16BLUE); //蓝色屏幕
TFTSPI_P8X16Str(0, 0, "Test Encoder",u16WHITE,u16BLACK); //字符串显示
while(1)
{
encValue1 = ENC_GetCounter(ENC2_InPut_P33_7);
UART_PutStr(UART0,"\n");
sprintf(txt, "Enc1: %05d; ", encValue1);
UART_PutStr(UART0,txt);
TFTSPI_P8X16Str(0, 2, txt,u16WHITE,u16BLACK); //字符串显示
encValue3 = ENC_GetCounter(ENC4_InPut_P02_8);
sprintf(txt, "Enc3: %05d; ", encValue3);
TFTSPI_P8X16Str(0, 3, txt,u16WHITE,u16BLACK); //字符串显示
UART_PutStr(UART0,txt);
encValue4 = ENC_GetCounter(ENC5_InPut_P10_3);
sprintf(txt, "Enc4: %05d; ", encValue4);
TFTSPI_P8X16Str(0, 4, txt,u16WHITE,u16BLACK); //字符串显示
UART_PutStr(UART0,txt);
encValue5 = ENC_GetCounter(ENC6_InPut_P20_3);
sprintf(txt, "Enc5: %05d;", encValue5);
TFTSPI_P8X16Str(0, 5, txt,u16WHITE,u16BLACK); //字符串显示
UART_PutStr(UART0,txt);
/*
encValue2 = ENC_GetCounter(ENC3_InPut_P02_6);
sprintf(txt, "Enc2: %05d; ", encValue2);
OLED_P6x8Str(0, 6, txt);
UART_PutStr(UART0,txt);
*/
LED_Ctrl(LED0,RVS); //电平翻转,LED闪烁
delayms(200); //延时等待
}
}
解释:
3.1把ENC脉冲输入管脚,方向管脚初始化
3.2初始化彩屏,为把数据在彩屏上打印做准备
3.3获取到ENC的值,循环在彩屏上打印出来,也用串口在上位机上打印出来,因为串口的初始化在主函数里初始化了,所以在在例程里面就没有进行初始化。