void MI0283QT2::begin(uint_least8_t clock_div) { //init pins #if defined(RST_PIN) pinMode(RST_PIN, OUTPUT); RST_ENABLE(); #endif pinMode(LED_PIN, OUTPUT); pinMode(CS_PIN, OUTPUT); pinMode(CLK_PIN, OUTPUT); pinMode(MOSI_PIN, OUTPUT); pinMode(MISO_PIN, INPUT); LED_DISABLE(); CS_DISABLE(); #if defined(ADS7846) pinMode(ADSCS_PIN, OUTPUT); ADSCS_DISABLE(); #endif #if !defined(SOFTWARE_SPI) SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(clock_div); SPI.begin(); #endif //reset display reset(clock_div); //enable backlight led(50); return; }
void MI0283QT9::begin(uint_least8_t clock_div) { //init pins #if defined(RST_PIN) pinMode(RST_PIN, OUTPUT); RST_ENABLE(); #endif pinMode(LED_PIN, OUTPUT); pinMode(CS_PIN, OUTPUT); #if defined(LCD_8BIT_SPI) pinMode(RS_PIN, OUTPUT); RS_HIGH(); #endif pinMode(SCK_PIN, OUTPUT); pinMode(MOSI_PIN, OUTPUT); pinMode(MISO_PIN, INPUT); LED_DISABLE(); CS_DISABLE(); #if defined(ADS7846) pinMode(ADSCS_PIN, OUTPUT); ADSCS_DISABLE(); #endif #if !defined(SOFTWARE_SPI) lcd_clock_div = clock_div; SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); //SPI.setClockDivider(clock_div); SPI.begin(); #endif //SPI speed-down #if !defined(SOFTWARE_SPI) # if F_CPU >= 128000000UL SPI.setClockDivider(SPI_CLOCK_DIV64); # elif F_CPU >= 64000000UL SPI.setClockDivider(SPI_CLOCK_DIV32); # elif F_CPU >= 32000000UL SPI.setClockDivider(SPI_CLOCK_DIV16); # elif F_CPU >= 16000000UL SPI.setClockDivider(SPI_CLOCK_DIV8); # else //elif F_CPU >= 8000000UL SPI.setClockDivider(SPI_CLOCK_DIV4); # endif #endif //reset display reset(); //SPI speed-up #if !defined(SOFTWARE_SPI) SPI.setClockDivider(clock_div); #endif //enable backlight led(50); return; }
void display_backlight(u08 on) { if(on) { LED_ENABLE(); } else { LED_DISABLE(); } }
static void signal_fault(void) { uint32_t i; while (true) { LED_ENABLE(); LED_BUSY(); for (i = 0; i < 5000000; i ++) { asm("nop"); } LED_DISABLE(); for (i = 0; i < 5000000; i ++) { asm("nop"); } } }
void MI0283QT2::led(uint8_t power) { if(power == 0) //off { analogWrite(LED_PIN, 0); LED_DISABLE(); } else if(power >= 100) //100% { analogWrite(LED_PIN, 255); LED_ENABLE(); } else //1...99% { analogWrite(LED_PIN, (uint16_t)power*255/100); } return; }
int main(void) { uint32_t i; rcc_periph_clock_enable(BOARD_RCC_LED); LED_ENABLE(); LED_BUSY(); /* Setup clock accordingly */ #ifdef GD32F103 rcc_clock_setup_in_hse_12mhz_out_120mhz(); #else #ifdef STM32F0 rcc_clock_setup_in_hsi48_out_48mhz(); rcc_periph_clock_enable(RCC_SYSCFG_COMP); SYSCFG_CFGR1 |= SYSCFG_CFGR1_PA11_PA12_RMP; rcc_periph_clock_enable(RCC_CRS); crs_autotrim_usb_enable(); rcc_set_usbclk_source(RCC_HSI48); #else rcc_clock_setup_in_hse_8mhz_out_72mhz(); #endif /* STM32F0 */ #endif /* GD32F103 */ rcc_periph_clock_enable(RCC_GPIOA); /* For USB */ /* STM32F0x2 has internal pullup and does not need AFIO */ #ifndef STM32F0 rcc_periph_clock_enable(BOARD_RCC_USB_PULLUP); rcc_periph_clock_enable(RCC_AFIO); /* For SPI */ #endif /* STM32F0 */ #if BOARD_USE_DEBUG_PINS_AS_GPIO gpio_primary_remap(AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_OFF, AFIO_MAPR_TIM2_REMAP_FULL_REMAP); #endif /* Setup GPIO to pull up the D+ high. (STM32F0x2 has internal pullup.) */ #ifndef STM32F0 gpio_set_mode(BOARD_PORT_USB_PULLUP, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, BOARD_PIN_USB_PULLUP); #if BOARD_USB_HIGH_IS_PULLUP gpio_set(BOARD_PORT_USB_PULLUP, BOARD_PIN_USB_PULLUP); #else gpio_clear(BOARD_PORT_USB_PULLUP, BOARD_PIN_USB_PULLUP); #endif /* BOARD_USB_HIGH_IS_PULLUP */ #endif /* STM32F0 */ usbcdc_init(); spi_setup(SPI_DEFAULT_CLOCK); /* The loop. */ while (true) { /* Wait and blink if USB is not ready. */ LED_IDLE(); while (!usb_ready) { LED_DISABLE(); for (i = 0; i < rcc_ahb_frequency / 150; i ++) { asm("nop"); } LED_ENABLE(); for (i = 0; i < rcc_ahb_frequency / 150; i ++) { asm("nop"); } } /* Actual thing */ /* TODO: we are blocked here, hence no knowledge about USB bet reset. */ handle_command(usbcdc_getc()); } return 0; }