OUTREG32 、SETREG32 有什么区别?

本文详细解析了微软提供的SETREG32与OUTREG32两个宏的区别,通过代码示例说明了SETREG32用于设置寄存器值而不改变其他位,而OUTREG32则会将其他位设为0。

       微软的实现代码如下:

<pre name="code" class="cpp">#define OUTREG32(x, y)      WRITE_REGISTER_ULONG((ULONG*)(x), (ULONG)(y))
#define SETREG32(x, y)      OUTREG32(x, INREG32(x)|(y))

         可以看出,SETREG32,只是设置了y这一位,而不改变其他位,OUTREG32则是y位之外其他位全部设置成0,所以区别就在这里。


    // Note that SETREG32 does read, OR of argument and write, the IRQSTATUS is write '1' to clear,
    // this will clear all interrupt bits, not just the ones in the argument.

int board_gpio_init(void) { char buffer[BUF_SIZE] = {0}; U16 pwm_ch = 0; U16 val = -1; U32 period = 0; U32 addr = 0; U32 duty = 0; U32 u32ModeRIU = 0; U32 u32ModeMask = 0; U32 u32RegAddr = 0; U16 u16RegVal = 0; #if defined(WIFI_RESET_GPIO_NUM) /********wifi gpio reset init**********/ memset(buffer, 0, BUF_SIZE); #ifdef WIFI_RESET_ACTIVE_LEVEL printf("wifi gpio reset init. gpio %d level %d\n", WIFI_RESET_GPIO_NUM, WIFI_RESET_ACTIVE_LEVEL); if(WIFI_RESET_ACTIVE_LEVEL == 1) { snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM); run_command(buffer, 0); udelay(100000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM); } else { snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM); run_command(buffer, 0); udelay(100000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM); } #else printf("wifi gpio reset init. gpio %d level default high\n", WIFI_RESET_GPIO_NUM); snprintf(buffer, BUF_SIZE, "gpio clear %d", WIFI_RESET_GPIO_NUM); run_command(buffer, 0); udelay(100000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", WIFI_RESET_GPIO_NUM); #endif run_command(buffer, 0); #endif /********** IR-CUT GPIO INIT **********/ #ifdef CONFIG_MS_GPIO #if defined(IR_CUT_GPIO_NUM) printf("ir-cut gpio init\n"); #ifdef DN_STATUS_GPIO_VALUE_INVERSED memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_GPIO_NUM); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d ", IR_CUT_GPIO_NUM); run_command(buffer, 0); udelay(150000); #else memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_GPIO_NUM); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_GPIO_NUM); run_command(buffer, 0); udelay(150000); #endif #endif #if defined(IR_CUT_DOUBLE_GPIO1) && defined(IR_CUT_DOUBLE_GPIO2) printf("ir-cut double gpio init\n"); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO1); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_DOUBLE_GPIO1); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO1); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO2); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", IR_CUT_DOUBLE_GPIO2); run_command(buffer, 0); udelay(150000); memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio clear %d", IR_CUT_DOUBLE_GPIO2); run_command(buffer, 0); udelay(150000); #endif #else #if defined(IR_CUT_GPIO_NUM) && (IR_CUT_GPIO_NUM==78) printf("ir-cut gpio init\n"); // set pinmux u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE); u32ModeMask = REG_TEST_IN_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE); u32ModeMask = REG_TEST_OUT_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL); _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL); #ifdef DN_STATUS_GPIO_VALUE_INVERSED // output gpio78 1 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT; udelay(150000); // output gpio78 0 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT); udelay(150000); #else // output gpio78 0 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT); udelay(150000); // output gpio78 1 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT; udelay(150000); #endif #endif #if defined(IR_CUT_GPIO_NUM) && (IR_CUT_GPIO_NUM==53) printf("ir-cut gpio init\n"); #ifdef DN_STATUS_GPIO_VALUE_INVERSED // output gpio53 1 MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN); MHal_RIU_REG(GPIO53_ROUT) |= GPIO53_MOUT; udelay(150000); // output gpio53 0 MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN); MHal_RIU_REG(GPIO53_ROUT) &= (~GPIO53_MOUT); udelay(150000); #else // output gpio53 0 MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN); MHal_RIU_REG(GPIO53_ROUT) &= (~GPIO53_MOUT); udelay(150000); // output gpio53 1 MHal_RIU_REG(GPIO53_ROEN) &= (~GPIO53_MOEN); MHal_RIU_REG(GPIO53_ROUT) |= GPIO53_MOUT; udelay(150000); #endif #endif #if (defined(IR_CUT_DOUBLE_GPIO1) && defined(IR_CUT_DOUBLE_GPIO2)) || (defined(IR_CUT_GROUP2_DOUBLE_GPIO1) && defined(IR_CUT_GROUP2_DOUBLE_GPIO2)) #if ((IR_CUT_DOUBLE_GPIO1==78) && (IR_CUT_DOUBLE_GPIO2==79)) || ((IR_CUT_GROUP2_DOUBLE_GPIO1==78) && (IR_CUT_GROUP2_DOUBLE_GPIO2==79)) printf("ir-cut double gpio init\n"); // set pinmux u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE); u32ModeMask = REG_TEST_IN_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE); u32ModeMask = REG_TEST_OUT_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL); _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL); // output gpio78 0 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT); udelay(150000); // output gpio78 1 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) |= GPIO78_MOUT; udelay(150000); // output gpio78 0 MHal_RIU_REG(GPIO78_ROEN) &= (~GPIO78_MOEN); MHal_RIU_REG(GPIO78_ROUT) &= (~GPIO78_MOUT); udelay(150000); // output gpio79 0 MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN); MHal_RIU_REG(GPIO79_ROUT) &= (~GPIO79_MOUT); udelay(150000); // output gpio79 1 MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN); MHal_RIU_REG(GPIO79_ROUT) |= GPIO79_MOUT; udelay(150000); // output gpio79 0 MHal_RIU_REG(GPIO79_ROEN) &= (~GPIO79_MOEN); MHal_RIU_REG(GPIO79_ROUT) &= (~GPIO79_MOUT); udelay(150000); #endif #if ((IR_CUT_DOUBLE_GPIO1==80) && (IR_CUT_DOUBLE_GPIO2==81)) || ((IR_CUT_GROUP2_DOUBLE_GPIO1==80) && (IR_CUT_GROUP2_DOUBLE_GPIO2==81)) printf("ir-cut double gpio init 33333333333\n"); // set pinmux u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE); u32ModeMask = REG_TEST_IN_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE); u32ModeMask = REG_TEST_OUT_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH0_AISEL); _GPIO_R_BYTE(_RIUA_8BIT(SAR_BANK, REG_SAR_AISEL)) &= (~REG_SAR_CH1_AISEL); // output gpio80 0 MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN); MHal_RIU_REG(GPIO80_ROUT) &= (~GPIO80_MOUT); udelay(150000); // output gpio80 1 MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN); MHal_RIU_REG(GPIO80_ROUT) |= GPIO80_MOUT; udelay(150000); // output gpio80 0 MHal_RIU_REG(GPIO80_ROEN) &= (~GPIO80_MOEN); MHal_RIU_REG(GPIO80_ROUT) &= (~GPIO80_MOUT); udelay(150000); // output gpio81 0 MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN); MHal_RIU_REG(GPIO81_ROUT) &= (~GPIO81_MOUT); udelay(150000); // output gpio81 1 MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN); MHal_RIU_REG(GPIO81_ROUT) |= GPIO81_MOUT; udelay(150000); // output gpio81 0 MHal_RIU_REG(GPIO81_ROEN) &= (~GPIO81_MOEN); MHal_RIU_REG(GPIO81_ROUT) &= (~GPIO81_MOUT); udelay(150000); #endif #endif #endif #ifdef CONFIG_RESET_MCU_GPIO_NUM reset_mcu(); #endif /********** IR-WTL SHARE PWM INIT **********/ #if defined(IR_WTL_LED_SHARE_SAME_PWM) && (IR_WTL_LED_PWM_PORT_NUM==52) printf("ir-wtl share pwm, set ir gpio init\n"); #if defined(WHITE_LAMP_GPIO_NUM) && (WHITE_LAMP_GPIO_NUM==15) // output gpio15 0 MHal_RIU_REG(GPIO15_ROEN) &= (~GPIO15_MOEN); MHal_RIU_REG(GPIO15_ROUT) &= (~GPIO15_MOUT); udelay(150000); #endif #if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==14) // output gpio14 1 MHal_RIU_REG(GPIO14_ROEN) &= (~GPIO14_MOEN); MHal_RIU_REG(GPIO14_ROUT) |= GPIO14_MOUT; udelay(150000); #endif printf("ir-wtl led pwm init\n"); // use pwm0 pwm_ch = 0; // PAD_PWM0 52 // clear TEST_IN val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2), val); // clear TEST_OUT val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2)); val &= ~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x12<<2), val); // clear I2C0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2)); val &= ~(0x07); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2), val); // clear I2C1 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x09<<2)); val &= ~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x009<<2), val); // write pwm0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2)); val &= ~(0x07); val |= 0x01; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2)); val &= ~(0x03); val |= 0x0; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val); // set pwm period:50Khz period = 12000000 / 50000; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period); // set pwm duty:50% addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty); // enable pwm CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch); #else /********** IR-LED PWM INIT **********/ #if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==76) memset(buffer, 0, BUF_SIZE); snprintf(buffer, BUF_SIZE, "gpio set %d", IR_LED_GPIO_NUM); run_command(buffer, 0); #endif #if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==14) #if defined(WHITE_LAMP_GPIO_NUM) && (WHITE_LAMP_GPIO_NUM==15) printf("white led gpio init\n"); #if defined(WHITE_LAMP_ACTIVE_LOW) && (WHITE_LAMP_ACTIVE_LOW==1) // set output gpio15 to turn off the white lamp MHal_RIU_REG(GPIO15_ROEN) &= (~GPIO15_MOEN); MHal_RIU_REG(GPIO15_ROUT) |= GPIO15_MOUT; udelay(150000); #endif #endif printf("ir-led pwm init\n"); // use pwm0 pwm_ch = 0; // clear ej_mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2), val); // clear spi0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2), val); // clear fuart mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val); // clear uart0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2)); val &= ~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val); // write pwm0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2)); val &= ~(0x03); val |= 0x03; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2)); val &= ~(0x03); val |= 0x03; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val); // set pwm period:50Khz period = 12000000 / 50000; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period); // set pwm duty:50% addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty); // enable pwm CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch); #endif #if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==53) // PAD_PWM1 53 printf("ir-led pwm init\n"); // use pwm0 pwm_ch = 1; //clear TEST_IN val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2)); val &=~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val); //cclear TEST_OUT val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2)); val &=~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val); //clear I2C0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2)); val &=~(0x07); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2), val); //clear I2C1 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x09<<2)); val &=~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x009<<2), val); //write pwm1 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2)); val &=~(0x38); val |= 0x8; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2)); val &=~(0x0c); val |= 0x0; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val); // set pwm period:50Khz period = 12000000 / 50000; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period); // set pwm duty:50% addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 50 / 100; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty); // enable pwm CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch); #endif #if defined(IR_LED_GPIO_NUM) && (IR_LED_GPIO_NUM==16) printf("ir-led pwm init\n"); // use pwm2 pwm_ch = 2; // PAD_FUART_CTS //clear EJ_MODE val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xF<<2)); val &=~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xF<<2), val); //clear TEST_IN val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2)); val &=~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val); //clear TEST_OUT val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2)); val &=~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val); //clear SPI0_MODE val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2)); val &=~(0x7); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val); //clear FUART_MODE val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x3<<2)); val &=~(0x7); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val); //clear FUART1_MODE val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x3<<2)); val &=~(0x700); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0xC<<2), val); //write pwm2 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2)); val &=~(0x1C0); val |= 0x80; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2)); val &=~(0xc0); val |= 0x0; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val); //set pwm period/duty period = 12000000/5000; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("reg=0x%08X ,period=0x%x\n", CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2), period); addr = CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + \ ((INREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x05<<2))<<16)))*50/100; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("reg=0x%08X ,duty=0x%x\n", CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (pwm_ch*0x80) + (0x02<<2), duty); CLRREG16(CONFIG_RIU_BASE_ADDRESS+(0x1a<<9) + (0x7f<<2), 1<<pwm_ch); #endif #endif /********** IR-WL PWM INIT **********/ #if defined(WHITE_LAMP_ONLY) #if (WHITE_LAMP_GPIO_NUM==14) printf("ir-wl pwm init use pwm0\n"); // use pwm0 pwm_ch = 0; // clear ej_mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0f<<2), val); // clear spi0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x0c<<2), val); // clear fuart mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2)); val &= ~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val); // clear uart0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2)); val &= ~(0x30); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x03<<2), val); // write pwm0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2)); val &= ~(0x03); val |= 0x03; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2)); val &= ~(0x03); val |= 0x03; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x0E<<9) + (0x28<<2), val); // set pwm period:50Khz period = 12000000 / 50000; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period); // set pwm duty:10% addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 10 / 100; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty); // enable pwm CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch); #else printf("ir-wl pwm init use pwm1\n"); // use pwm0 pwm_ch = 1; //clear ej_mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0f<<2)); val &=~(0x03); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0f<<2), val); //clear test0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2)); val &=~(0x33); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x12<<2), val); //clear spi0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0c<<2)); val &=~(0x07); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x0c<<2), val); //clear fuart mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2)); val &=~(0x07); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2), val); //clear uart0 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2)); val &=~(0x70); OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x03<<2), val); //write pwm1 mode val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2)); val &=~(0x18); val |= 0x18; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x101E<<9) + (0x07<<2), val); val = INREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2)); val &=~(0x0c); val |= 0x0c; OUTREG16(CONFIG_RIU_BASE_ADDRESS+(0x0E<<9) + (0x28<<2), val); // set pwm period period = 12000000 / 50000; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), (period&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2), ((period>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, period=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2), period); // set pwm duty addr = CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x04<<2); duty = (INREG16(addr) + ((INREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x05<<2))<<16))) * 10 / 100; OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), (duty&0xFFFF)); OUTREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x03<<2), ((duty>>16)&0x3)); printf("pwm_ch=%d, reg=0x%08X, duty=0x%x\n", pwm_ch, CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (pwm_ch*0x80) + (0x02<<2), duty); // enable pwm CLRREG16(CONFIG_RIU_BASE_ADDRESS + (0x1A<<9) + (0x7f<<2), 1<<pwm_ch); #endif #endif /********** RED/GREEN LED GPIO INIT **********/ #ifdef CONFIG_MS_GPIO #if defined(LED_RED_GPIO) printf("red led gpio init\n"); memset(buffer, 0, BUF_SIZE); #if (LED_RED_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW) snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_RED_GPIO); #else snprintf(buffer, BUF_SIZE, "gpio set %d", LED_RED_GPIO); #endif run_command(buffer, 0); #endif #if defined(LED_GREEN_GPIO) printf("green led gpio init\n"); memset(buffer, 0, BUF_SIZE); #if (LED_GREEN_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW) snprintf(buffer, BUF_SIZE, "gpio set %d", LED_GREEN_GPIO); #else snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_GREEN_GPIO); #endif run_command(buffer, 0); #endif #else #if defined(LED_RED_GPIO) #if (LED_RED_GPIO==77) printf("red led gpio init\n"); u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM5_MODE); u32ModeMask = REG_PM_PWM5_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM10_MODE); u32ModeMask = REG_PM_PWM10_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE); u32ModeMask = REG_PM_VID_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE); u32ModeMask = REG_PM_LED_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } MHal_RIU_REG(GPIO77_ROEN) &= (~GPIO77_MOEN); #if defined(LED_GPIO_ACTIVE_LOW) // output gpio77 0 MHal_RIU_REG(GPIO77_ROUT) &= (~GPIO77_MOUT); #else // output gpio77 1 MHal_RIU_REG(GPIO77_ROUT) |= GPIO77_MOUT; #endif #endif #if (LED_RED_GPIO==76) printf("red led gpio init\n"); u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM9_MODE); u32ModeMask = REG_PM_PWM9_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE); u32ModeMask = REG_PM_VID_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE); u32ModeMask = REG_PM_LED_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } MHal_RIU_REG(GPIO76_ROEN) &= (~GPIO76_MOEN); #if defined(LED_GPIO_ACTIVE_LOW) // output gpio76 0 MHal_RIU_REG(GPIO76_ROUT) &= (~GPIO76_MOUT); #else // output gpio76 1 MHal_RIU_REG(GPIO76_ROUT) |= GPIO76_MOUT; #endif #endif #endif #if defined(LED_GREEN_GPIO) #if (LED_GREEN_GPIO==76) printf("green led gpio init\n"); u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM9_MODE); u32ModeMask = REG_PM_PWM9_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE); u32ModeMask = REG_PM_VID_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE); u32ModeMask = REG_PM_LED_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } MHal_RIU_REG(GPIO76_ROEN) &= (~GPIO76_MOEN); #if defined(LED_GPIO_ACTIVE_LOW) // output gpio76 1 MHal_RIU_REG(GPIO76_ROUT) |= GPIO76_MOUT; #else // output gpio76 0 MHal_RIU_REG(GPIO76_ROUT) &= (~GPIO76_MOUT); #endif #endif #if (LED_GREEN_GPIO==77) printf("green led gpio init\n"); u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM5_MODE); u32ModeMask = REG_PM_PWM5_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_PWM10_MODE); u32ModeMask = REG_PM_PWM10_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_VID_MODE); u32ModeMask = REG_PM_VID_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } u32ModeRIU = _RIUA_16BIT(PMSLEEP_BANK,REG_PM_LED_MODE); u32ModeMask = REG_PM_LED_MODE_MASK; if (_GPIO_R_WORD_MASK(u32ModeRIU, u32ModeMask)) { _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); } MHal_RIU_REG(GPIO77_ROEN) &= (~GPIO77_MOEN); #if defined(LED_GPIO_ACTIVE_LOW) // output gpio77 1 MHal_RIU_REG(GPIO77_ROUT) |= GPIO77_MOUT; #else // output gpio77 0 MHal_RIU_REG(GPIO77_ROUT) &= (~GPIO77_MOUT); #endif #endif #endif #if defined(LED_RED_GPIO) && (LED_RED_GPIO==46) && defined(LED_GREEN_GPIO) && (LED_GREEN_GPIO==47) u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_EJ_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_EJ_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_EJ_MODE_MASK); } u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_TEST_IN_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_TEST_IN_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_TEST_IN_MODE_MASK); } u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_TEST_OUT_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_TEST_OUT_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_TEST_OUT_MODE_MASK); } u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_SPI0_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_SPI0_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_SPI0_MODE_MASK); } u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_PWM6_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_PWM6_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_PWM6_MODE_MASK); } u32RegAddr = _RIUA_16BIT(CHIPTOP_BANK, REG_PWM7_MODE); u16RegVal = _GPIO_R_WORD_MASK(u32RegAddr, REG_PWM7_MODE_MASK); if (u16RegVal) { _GPIO_W_WORD_MASK(u32RegAddr, 0, REG_PWM7_MODE_MASK); } #if defined(LED_GPIO_ACTIVE_LOW) printf("red led gpio init\n"); MHal_RIU_REG(GPIO46_ROEN) &= (~GPIO46_MOEN); // output gpio46 0 MHal_RIU_REG(GPIO46_ROUT) &= (~GPIO46_MOUT); printf("green led gpio init\n"); MHal_RIU_REG(GPIO47_ROEN) &= (~GPIO47_MOEN); // output gpio47 1 MHal_RIU_REG(GPIO47_ROUT) |= GPIO47_MOUT; #else printf("red led gpio init\n"); MHal_RIU_REG(GPIO46_ROEN) &= (~GPIO46_MOEN); // output gpio46 1 MHal_RIU_REG(GPIO46_ROUT) |= GPIO46_MOUT; printf("green led gpio init\n"); MHal_RIU_REG(GPIO47_ROEN) &= (~GPIO47_MOEN); // output gpio47 0 MHal_RIU_REG(GPIO47_ROUT) &= (~GPIO47_MOUT); #endif #endif printf("led gpio init\n"); #if defined(LED_RED_GPIO) && defined(LED_GREEN_GPIO) && defined(LED_RED_GPIO_ACTIVE_LOW) && defined(LED_GREEN_GPIO_ACTIVE_LOW) #if (LED_RED_GPIO == 44) printf("red led gpio init\n"); memset(buffer, 0, BUF_SIZE); #if (LED_RED_GPIO_ACTIVE_LOW==1) || defined(LED_GPIO_ACTIVE_LOW) snprintf(buffer, BUF_SIZE, "gpio clear %d", LED_RED_GPIO); #else snprintf(buffer, BUF_SIZE, "gpio set %d", LED_RED_GPIO); #endif run_command(buffer, 0); #if 0 u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_EJ_MODE); u32ModeMask = REG_EJ_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_ALLPAD_IN_MODE); u32ModeMask = REG_ALLPAD_IN_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_IN_MODE); u32ModeMask = REG_TEST_IN_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_TEST_OUT_MODE); u32ModeMask = REG_TEST_OUT_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_SPI0_MODE); u32ModeMask = REG_SPI0_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); u32ModeRIU = _RIUA_16BIT(CHIPTOP_BANK,REG_PWM4_MODE); u32ModeMask = REG_PWM4_MODE_MASK; _GPIO_W_WORD_MASK(u32ModeRIU, 0, u32ModeMask); #endif #else MHal_GPIO_Pad_EN(GPIO_ROEN(LED_RED_GPIO),GPIO_MOEN(LED_RED_GPIO)); MHal_GPIO_Pad_EN(GPIO_ROEN(LED_GREEN_GPIO),GPIO_MOEN(LED_GREEN_GPIO)); #if (LED_RED_GPIO_ACTIVE_LOW == 1 && LED_GREEN_GPIO_ACTIVE_LOW == 1) // output RED 0/GREEN 1 MHal_GPIO_OutLOW(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO)); MHal_GPIO_OutHigh(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO)); printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,0,LED_GREEN_GPIO,1); #endif #if (LED_RED_GPIO_ACTIVE_LOW == 0 && LED_GREEN_GPIO_ACTIVE_LOW == 1) // output RED 1/GREEN 1 MHal_GPIO_OutHigh(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO)); MHal_GPIO_OutHigh(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO)); printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,1,LED_GREEN_GPIO,1); #endif #if (LED_RED_GPIO_ACTIVE_LOW == 1 && LED_GREEN_GPIO_ACTIVE_LOW == 0) // output RED 0/GREEN 0 MHal_GPIO_OutLOW(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO)); MHal_GPIO_OutLOW(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO)); printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,0,LED_GREEN_GPIO,0); #endif #if (LED_RED_GPIO_ACTIVE_LOW == 0 && LED_GREEN_GPIO_ACTIVE_LOW == 0) // output RED 1/GREEN 0 MHal_GPIO_OutHigh(GPIO_ROUT(LED_RED_GPIO),GPIO_MOUT(LED_RED_GPIO)); MHal_GPIO_OutLOW(GPIO_ROUT(LED_GREEN_GPIO),GPIO_MOUT(LED_GREEN_GPIO)); printf("gpio %d out %d,gpio %d out %d\n",LED_RED_GPIO,1,LED_GREEN_GPIO,0); #endif #endif #endif #endif #ifdef UPGRADE_LED_GPIO_NUM MDrv_GPIO_Pad_Set(UPGRADE_LED_GPIO_NUM); #endif U16 wtd_rst_status; wtd_rst_status = INREG16(GET_REG_ADDR(REG_ADDR_BASE_WDT, WDT_RST_RSTLEN)); printf("wtd rst status: 0x%04X\n", (unsigned int)wtd_rst_status); return 0; }
09-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值