bool IsMicInLink(void) { #ifdef FUNC_MIC_DET_EN static uint8_t MicLinkState = 0; #define MICIN_JETTER_TIMES 10 //连接检测消抖时间:10次,100ms //设为输入,打开上拉 GpioClrRegOneBit(MICIN_DETECT_PORT_OE, MICIN_DETECT_BIT); GpioClrRegOneBit(MICIN_DETECT_PORT_PU, MICIN_DETECT_BIT); GpioClrRegOneBit(MICIN_DETECT_PORT_PD, MICIN_DETECT_BIT); GpioSetRegBits(MICIN_DETECT_PORT_IE, MICIN_DETECT_BIT); if(GpioGetReg(MICIN_DETECT_PORT_IN) & MICIN_DETECT_BIT) { MicLinkState = 0; //断开状态不做消抖处理 } else { if(MicLinkState < MICIN_JETTER_TIMES) //连接状态做消抖处理 { MicLinkState++; } } gSys.MicEnable = (MicLinkState >= MICIN_JETTER_TIMES); return gSys.MicEnable; #else gSys.MicEnable = TRUE; return TRUE; #endif }
static void USER_FUNC lum_sendStudyWaveData(ORIGIN_WAVE_DATA* pWaveInfo) { static U8 g_sendCount = 0; U8 index; U16 clkCount; BOOL gpioHighLevel; //lum_disableAllIrq(); if(pWaveInfo->firstHighlevel != 0) { GpioSetRegOneBit(GPIO_C_OUT, 0x04); lum_delay15us(300); } for(index=0; index<pWaveInfo->waveCount; index++) { gpioHighLevel = ((index%2) == pWaveInfo->firstHighlevel)?TRUE:FALSE; for(clkCount = 0; clkCount<pWaveInfo->waveData[index]; clkCount++) //only for clk timing { if(gpioHighLevel) { GpioSetRegOneBit(GPIO_C_OUT, 0x04); } else { GpioClrRegOneBit(GPIO_C_OUT, 0x04); } lum_delay15us(1); __nop(); // 1 __nop(); // 2 __nop(); // 3 __nop(); // 4 __nop(); // 5 __nop(); // 6 __nop(); // 7 __nop(); // 8 __nop(); // 9 } } //lum_enableAllIrq(); hfgpio_fset_out_low(HFGPIO_F_SDO_2); g_sendCount++; if(g_sendCount < MAX_WAVE_RESEND_COUNT) { lum_start433StudyTimer(MAX_SEND_WAVE_TIME_DELAY); } else { g_sendCount = 0; lum_setRfMode(RF_SLEEP); g_searchFreqData.chipStatus = SX1208_IDLE; } }
OSStatus platform_gpio_output_low( const platform_gpio_t* gpio ) { OSStatus err = kNoErr; require_action_quiet( gpio != NULL, exit, err = kParamErr); platform_mcu_powersave_disable(); GpioClrRegOneBit(GPIO_A_OUT + gpio->port , ((uint32_t)1 << gpio->pin) ); exit: platform_mcu_powersave_enable(); return err; }
static void USER_FUNC lum_studyTest(ORIGIN_WAVE_DATA* pWaveInfo) { static U8 g_sendCount = 0; U8 index; U16 clkCount; BOOL gpioHighLevel; if(pWaveInfo->firstHighlevel != 0) { GpioSetRegOneBit(GPIO_B_OUT, 0x8000000); } for(index=0; index<pWaveInfo->waveCount; index++) { gpioHighLevel = ((index%2) == pWaveInfo->firstHighlevel)?TRUE:FALSE; for(clkCount = 0; clkCount<pWaveInfo->waveData[index]; clkCount++) //only for clk timing { if(gpioHighLevel) { GpioSetRegOneBit(GPIO_B_OUT, 0x8000000); //hfgpio_fset_out_high(HFGPIO_F_SDO_1); } else { GpioClrRegOneBit(GPIO_B_OUT, (0x8000000)); //hfgpio_fset_out_low(HFGPIO_F_SDO_1); } lum_delay15us(1); __nop(); // 1 __nop(); // 2 __nop(); // 3 __nop(); // 4 __nop(); // 5 __nop(); // 6 __nop(); // 7 __nop(); // 8 __nop(); // 9 } } hfgpio_fset_out_low(HFGPIO_F_SDO_1); }
static void USER_FUNC lum_lightHwTimerCallback( hftimer_handle_t htimer ) { if(g_lightDimStatus == ZERO_DETECT) { //hfgpio_fset_out_high(HFGPIO_F_DIM); //GpioSetRegOneBit(GPIO_B_OUT, (1<<20)); //O18_GPIO_BANK_B(20), //lpb SPI_MOSI GpioSetRegOneBit(GPIO_B_OUT, 0x100000); lum_lightDimShutdown(); } else if(g_lightDimStatus == SHUT_DOWN_DIM) { //hfgpio_fset_out_low(HFGPIO_F_DIM); //GpioClrRegOneBit(GPIO_B_OUT, (1<<20)); //O18_GPIO_BANK_B(20), //lpb SPI_MOSI GpioClrRegOneBit(GPIO_B_OUT, 0x100000); } else if(g_lightDimStatus == GET_AC_FREQ) { g_lightDimStatus = ZERO_DETECT; if(g_lightLevel == 0) { hfgpio_fdisable_interrupt(HFGPIO_F_ZERO_DETECTER); } } }
// Initialize coding key scan (GPIO) operation. // Config interrupt at negative edge of signal-A void CodingKeyInit(void) { //enable pull up resister. GpioClrRegOneBit(CODING_KEY_A_PORT_OE, CODING_KEY_A_BIT); GpioClrRegOneBit(CODING_KEY_A_PORT_PU, CODING_KEY_A_BIT); GpioClrRegOneBit(CODING_KEY_A_PORT_PD, CODING_KEY_A_BIT); //enable pull up resister. GpioClrRegOneBit(CODING_KEY_B_PORT_OE, CODING_KEY_B_BIT); GpioClrRegOneBit(CODING_KEY_B_PORT_PU, CODING_KEY_B_BIT); GpioClrRegOneBit(CODING_KEY_B_PORT_PD, CODING_KEY_B_BIT); //enable int GpioIntEn(CODING_KEY_A_PORT_INT, CODING_KEY_A_BIT, GPIO_NEG_EDGE_TRIGGER); ClockWiseCnt = 0; CounterClockWiseCnt = 0; //enable gpio irqc NVIC_EnableIRQ(GPIO_IRQn); }
OSStatus platform_gpio_init( const platform_gpio_t* gpio, platform_pin_config_t config ) { OSStatus err = kNoErr; platform_mcu_powersave_disable(); require_action_quiet( gpio != NULL, exit, err = kParamErr); GpioClrRegOneBit(GPIO_A_OUTDS + gpio->port , ((uint32_t)1 << gpio->pin) ); if ( (config == INPUT_PULL_UP ) || (config == INPUT_HIGH_IMPEDANCE ) || (config == INPUT_PULL_DOWN )){ GpioClrRegOneBit(GPIO_A_OE + gpio->port , ((uint32_t)1 << gpio->pin) ); GpioSetRegOneBit(GPIO_A_IE + gpio->port , ((uint32_t)1 << gpio->pin) ); }else{ GpioClrRegOneBit(GPIO_A_IE + gpio->port , ((uint32_t)1 << gpio->pin) ); GpioSetRegOneBit(GPIO_A_OE + gpio->port , ((uint32_t)1 << gpio->pin) ); } if ( (config == INPUT_PULL_UP ) || (config == OUTPUT_OPEN_DRAIN_PULL_UP ) ) { GpioClrRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) ); GpioClrRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) ); } else if (config == INPUT_PULL_DOWN ) { GpioSetRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) ); GpioSetRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) ); } else { GpioSetRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) ); GpioClrRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) ); } if(config == OUTPUT_PUSH_PULL) GpioSetRegOneBit(GPIO_A_OUTDS + gpio->port , ((uint32_t)1 << gpio->pin) ); exit: platform_mcu_powersave_enable(); return err; }
void SetInputSDA(void* I2cMasterHandle) { I2C_HANDLE I2cHandle = (I2C_HANDLE)I2cMasterHandle; GpioClrRegOneBit(I2cHandle->SdaPortIndex + 3, I2cHandle->SdaMask); }
void ClrSDA(void* I2cMasterHandle) { I2C_HANDLE I2cHandle = (I2C_HANDLE)I2cMasterHandle; GpioClrRegOneBit(I2cHandle->SdaPortIndex + 1, I2cHandle->SdaMask); I2C_Delay(); }