/*********************************************************************//** * @brief Disables the SDIO controller clock * @param[in] None * @return None **********************************************************************/ static void sdif_disable_clock(void) { if (!sdif_dev.clock_enabled) { /* Disable SD MMC clock */ CGU_ConfigPWR(CGU_PERIPHERAL_SDIO, (FunctionalState)FALSE); sdif_dev.clock_enabled = 0; } }
/*********************************************************************//** * @brief Enables the SDIO controller clock * @param[in] None * @return None **********************************************************************/ static void sdif_enable_clock(void) { if (!sdif_dev.clock_enabled) { /* Enable SD MMC clock */ CGU_ConfigPWR(CGU_PERIPHERAL_SDIO, ENABLE); sdif_dev.clock_enabled = 1; } }
/*********************************************************************//** * @brief Configure power for individual peripheral * @param[in] PPType peripheral type, should be: * - CGU_PERIPHERAL_ADC0 :ADC0 * - CGU_PERIPHERAL_ADC1 :ADC1 * - CGU_PERIPHERAL_AES :AES * - CGU_PERIPHERAL_APB1_BUS :APB1 bus * - CGU_PERIPHERAL_APB3_BUS :APB3 bus * - CGU_PERIPHERAL_CAN :CAN * - CGU_PERIPHERAL_CREG :CREG * - CGU_PERIPHERAL_DAC :DAC * - CGU_PERIPHERAL_DMA :DMA * - CGU_PERIPHERAL_EMC :EMC * - CGU_PERIPHERAL_ETHERNET :ETHERNET * - CGU_PERIPHERAL_GPIO :GPIO * - CGU_PERIPHERAL_I2C0 :I2C0 * - CGU_PERIPHERAL_I2C1 :I2C1 * - CGU_PERIPHERAL_I2S :I2S * - CGU_PERIPHERAL_LCD :LCD * - CGU_PERIPHERAL_M3CORE :M3 core * - CGU_PERIPHERAL_M3_BUS :M3 bus * - CGU_PERIPHERAL_MOTOCON :Motor control * - CGU_PERIPHERAL_QEI :QEI * - CGU_PERIPHERAL_RITIMER :RIT timer * - CGU_PERIPHERAL_SCT :SCT * - CGU_PERIPHERAL_SCU :SCU * - CGU_PERIPHERAL_SDIO :SDIO * - CGU_PERIPHERAL_SPIFI :SPIFI * - CGU_PERIPHERAL_SSP0 :SSP0 * - CGU_PERIPHERAL_SSP1 :SSP1 * - CGU_PERIPHERAL_TIMER0 :TIMER0 * - CGU_PERIPHERAL_TIMER1 :TIMER1 * - CGU_PERIPHERAL_TIMER2 :TIMER2 * - CGU_PERIPHERAL_TIMER3 :TIMER3 * - CGU_PERIPHERAL_UART0 :UART0 * - CGU_PERIPHERAL_UART1 :UART1 * - CGU_PERIPHERAL_UART2 :UART2 * - CGU_PERIPHERAL_UART3 :UART3 * - CGU_PERIPHERAL_USB0 :USB0 * - CGU_PERIPHERAL_USB1 :USB1 * - CGU_PERIPHERAL_WWDT :WWDT * @param[in] en status, should be: * - ENABLE: Enable power * - DISABLE: Disable power * @return Configure status, could be: * - CGU_ERROR_SUCCESS: successful * - Other: error **********************************************************************/ uint32_t CGU_ConfigPWR (CGU_PERIPHERAL_T PPType, FunctionalState en){ if(PPType >= CGU_PERIPHERAL_WWDT && PPType <= CGU_PERIPHERAL_ADC0) return CGU_ERROR_INVALID_PARAM; if(en == DISABLE){/* Going to disable clock */ /*Get Reg branch status */ if(CGU_PERIPHERAL_Info[PPType].RegBranchOffset!= 0 && CGU_REG_BRANCH_STATUS(PPType) & 1){ CGU_REG_BRANCH_CTRL(PPType) &= ~1; /* Disable branch clock */ while(CGU_REG_BRANCH_STATUS(PPType) & 1); } /* GetBase Status*/ if((CGU_PERIPHERAL_Info[PPType].RegBaseEntity!=CGU_ENTITY_NONE) && CGU_GetBaseStatus((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].RegBaseEntity) == 0){ /* Disable Base */ CGU_EnableEntity((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].RegBaseEntity,0); } /* Same for Peripheral */ if((CGU_PERIPHERAL_Info[PPType].PerBranchOffset!= 0) && (CGU_PER_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK)){ CGU_PER_BRANCH_CTRL(PPType) &= ~1; /* Disable branch clock */ while(CGU_PER_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK); } /* GetBase Status*/ if((CGU_PERIPHERAL_Info[PPType].PerBaseEntity!=CGU_ENTITY_NONE) && CGU_GetBaseStatus((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].PerBaseEntity) == 0){ /* Disable Base */ CGU_EnableEntity((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].PerBaseEntity,0); } }else{ /* enable */ /* GetBase Status*/ if((CGU_PERIPHERAL_Info[PPType].RegBaseEntity!=CGU_ENTITY_NONE) && CGU_REG_BASE_CTRL(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK){ /* Enable Base */ CGU_EnableEntity((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].RegBaseEntity, 1); } /*Get Reg branch status */ if((CGU_PERIPHERAL_Info[PPType].RegBranchOffset!= 0) && !(CGU_REG_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK)){ CGU_REG_BRANCH_CTRL(PPType) |= 1; /* Enable branch clock */ while(!(CGU_REG_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK)); } /* Same for Peripheral */ /* GetBase Status*/ if((CGU_PERIPHERAL_Info[PPType].PerBaseEntity != CGU_ENTITY_NONE) && (CGU_PER_BASE_CTRL(PPType) & 1)){ /* Enable Base */ CGU_EnableEntity((CGU_ENTITY_T)CGU_PERIPHERAL_Info[PPType].PerBaseEntity, 1); } /*Get Reg branch status */ if((CGU_PERIPHERAL_Info[PPType].PerBranchOffset!= 0) && !(CGU_PER_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK)){ CGU_PER_BRANCH_CTRL(PPType) |= 1; /* Enable branch clock */ while(!(CGU_PER_BRANCH_STATUS(PPType) & CGU_BRANCH_STATUS_ENABLE_MASK)); } } if(CGU_PERIPHERAL_Info[PPType].next){ return CGU_ConfigPWR((CGU_PERIPHERAL_T)CGU_PERIPHERAL_Info[PPType].next, en); } return CGU_ERROR_SUCCESS; }
void LCD1602::Init() { PinInit(); Brightness(false); RW(false); RS(false); DB4(0); E(false); // Wait 50 ms from power on delay_ms(50); DB4(3); // Run three clock cycles to init E(true); LCD_DELAY_SHORT; E(false); LCD_DELAY_LONG; E(true); LCD_DELAY_SHORT; E(false); LCD_DELAY_SHORT; E(true); LCD_DELAY_SHORT; E(false); LCD_DELAY_SHORT; // Configure display DB4(2); E(true); LCD_DELAY_SHORT; E(false); LCD_DELAY_LONG; DB(0x28); LCD_DELAY_SHORT; DB(0x8); LCD_DELAY_SHORT; DB(0x1); LCD_DELAY_SHORT; DB(0x6); LCD_DELAY_SHORT; RS(false); DB(0x0c); LCD_DELAY_LONG; // Test code, TODO Locate(0, 0); Print(" ld analyzer b1 "); Locate(0, 1); Print(" analyzer-1 "); //Brightness(true); Contrast(false); // Enable SCT peripheral clock CGU_ConfigPWR(CGU_PERIPHERAL_SCT, ENABLE); LPC_CCU1->CLK_M4_SCT_CFG |= CCU1_CLK_M4_SCT_CFG_RUN_Msk; while(!(LPC_CCU1->CLK_M4_SCT_STAT & CCU1_CLK_M4_SCT_STAT_RUN_Msk)); scu_pinmux(0x1, 5, GPIO_PUP, FUNC1); // CTOUT_10 LPC_SCT->CONFIG = (1 << 17); LPC_SCT->CTRL_L |= (12-1) << 5; LPC_SCT->MATCHREL[0].L = 100-1; LPC_SCT->MATCHREL[1].L = 1; LPC_SCT->EVENT[0].STATE = 0xFFFFFFFF; LPC_SCT->EVENT[0].CTRL = (1 << 12); LPC_SCT->EVENT[1].STATE = 0xFFFFFFFF; LPC_SCT->EVENT[1].CTRL = (1 << 12) | (1 << 0); LPC_SCT->OUT[10].SET = (1 << 0); LPC_SCT->OUT[10].CLR = (1 << 1); LPC_SCT->CTRL_L &= ~(1 << 2); InitFont(); // Fade in for (int i = 0; i < 100; i++) { LPC_SCT->MATCHREL[1].L = i; delay_ms(10); } }