|
#include "ec11.h"
#include "delay.h"
#include "usart.h"
u8 m_recAdjustVolume=60;
static char EC11_A_Last = 0; //定義了兩個(gè)變量用來(lái)儲(chǔ)蓄上一次調(diào)用此方法是編碼開(kāi)關(guān)兩引腳的電平
static char EC11_B_Last = 0;
//引腳初始化
void ec11_gpioInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//SW
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = ENCODER_SW_PIN;
GPIO_Init(ENCODER_SW_GPIO, &GPIO_InitStructure);
//encoder_enp
GPIO_InitStructure.GPIO_Pin = ENCODER_ENPA_PIN | ENCODER_ENPB_PIN ;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
EC11_A_Last=ENCODER_ENPA_Read;
EC11_B_Last=ENCODER_ENPB_Read;
}
//獲取音量
//INT8U getAdjustVolume(void)
//{
// return m_recAdjustVolume;
//}
/***********************************************************************
函數(shù)名稱:void Encoder_EC11_Scan(void) 脈沖信號(hào)正轉(zhuǎn) A:0 1 1 0 0 A信號(hào)突變比B信號(hào)突變出現(xiàn)時(shí)間早
功 能:編碼器掃描函數(shù) B:0 0 1 1 0
輸入?yún)?shù):無(wú)
輸出參數(shù):無(wú) 反轉(zhuǎn) A:0 0 1 1 0 B信號(hào)突變比A信號(hào)突變出現(xiàn)時(shí)間早
編寫(xiě)時(shí)間:2019.8.2 B:0 1 1 0 0
編 寫(xiě) 人:
注 意:保留
***********************************************************************/
void Encoder_EC11_Scan(void)
{
static uint8_t st; //定義了一個(gè)變量用來(lái)儲(chǔ)蓄以前是否出現(xiàn)了兩個(gè)引腳都為高電平的狀態(tài)
Delay_ms(1); //延時(shí)1ms更準(zhǔn)
if (ENCODER_ENPA_Read==1&&ENCODER_ENPB_Read==1) //取同為高點(diǎn)平時(shí)的信號(hào)
st = 1; //
if(st) //如果st 為1 執(zhí)行下面的步驟
{
if (ENCODER_ENPA_Read==0&&ENCODER_ENPB_Read==0)//如果當(dāng)前編碼開(kāi)關(guān)的兩個(gè)引腳都為底電平執(zhí)行下面的步驟 第5次突變同為0結(jié)束一次脈沖
{
if(EC11_B_Last) //為高說(shuō)明編碼開(kāi)關(guān)在向減小的方向轉(zhuǎn) 當(dāng)B信號(hào)為1時(shí)為反轉(zhuǎn)
{
st = 0;
if(m_recAdjustVolume>0)
{
m_recAdjustVolume--;
}
}
if(EC11_A_Last) //為高說(shuō)明編碼開(kāi)關(guān)在向加大的方向轉(zhuǎn) 當(dāng)A信號(hào)為1時(shí)為正轉(zhuǎn)
{
st = 0;
if(m_recAdjustVolume<100)
{
m_recAdjustVolume++;
}
}
//WindowLed_Volume(m_recAdjustVolume);
}
//保存第四次突變的狀態(tài)
EC11_A_Last = ENCODER_ENPA_Read; //存儲(chǔ)狀態(tài)
EC11_B_Last = ENCODER_ENPB_Read; //存儲(chǔ)狀態(tài)
}
}
|
|