/** **************************************************************************************** * @brief Restore peripheral setting after wakeup **************************************************************************************** */ void usr_sleep_restore(void) { #if QN_DBG_PRINT uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif }
/** **************************************************************************************** * @brief Restore peripheral setting after wakeup **************************************************************************************** */ void usr_sleep_restore(void) { #if QN_DBG_PRINT uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif #if (defined(QN_ADV_WDT)) if(usr_env.adv_wdt_enable) { wdt_init(1007616, WDT_INT_MOD); // 30.75s } #endif }
/** **************************************************************************************** * @brief Restore peripheral setting after wakeup **************************************************************************************** */ void usr_sleep_restore(void) { #if (FB_OLED && FB_SPI_OLED) spi_init(QN_SPI1, SPI_BITRATE(10000), SPI_8BIT, SPI_MASTER_MOD); #endif #if QN_DBG_PRINT uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif #if (defined(QN_ADV_WDT)) if(usr_env.adv_wdt_enable) { wdt_init(1007616, WDT_INT_MOD); // 30.75s } #endif }
/*====================================================================================================*/ void Serial_Config( void ) { GPIO_InitTypeDef GPIO_InitStruct; // NVIC_InitTypeDef NVIC_InitStruct; USART_InitTypeDef USART_InitStruct; /* USART Clk Init *************************************************************/ USARTx_CLK(); USARTx_TX_GPIO_CLK(); USARTx_RX_GPIO_CLK(); /* USART GPIO Config **********************************************************/ GPIO_InitStruct.GPIO_Pin = USARTx_TX_PIN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = USARTx_RX_PIN; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct); /* UART IT ********************************************************************/ // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // NVIC_InitStruct.NVIC_IRQChannel = USARTx_IRQn; // NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; // NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; // NVIC_Init(&NVIC_InitStruct); /* UART Init ******************************************************************/ USART_InitStruct.USART_BaudRate = USARTx_BAUDRATE; USART_InitStruct.USART_WordLength = USARTx_BYTESIZE; USART_InitStruct.USART_StopBits = USARTx_STOPBITS; USART_InitStruct.USART_Parity = USARTx_PARITY; USART_InitStruct.USART_HardwareFlowControl = USARTx_HARDWARECTRL; USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USARTx, &USART_InitStruct); /* UART Enable ****************************************************************/ // USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE); USART_Cmd(USARTx, ENABLE); USART_ClearFlag(USARTx, USART_FLAG_TC); }
/** **************************************************************************************** * @brief Restore peripheral setting after wakeup **************************************************************************************** */ void usr_sleep_restore(void) { #if QN_DBG_PRINT uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_115200); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif #if (defined(QN_ADV_WDT)) if(usr_env.adv_wdt_enable) { wdt_init(1007616, WDT_INT_MOD); // 30.75s } #endif //Initialize I2C master to save time later uint8_t i2cbuffer[3]; i2c_init(I2C_SCL_RATIO(1), i2cbuffer, 3); //QPRINTF("SLEEP RESTORE\r\n"); //send_packet(PROTOCOL_MODE_TX2); }
/** **************************************************************************************** * @brief Setup the microcontroller system. * * Initialize the system clock and pins. ***************************************************************************************** */ void SystemInit(void) { /* ************************** * Sub module clock setting ************************** */ // Disable all peripheral clock, will be enabled in the driver initilization. timer_clock_off(QN_TIMER0); timer_clock_off(QN_TIMER1); timer_clock_off(QN_TIMER2); timer_clock_off(QN_TIMER3); uart_clock_off(QN_UART0); uart_clock_off(QN_UART1); spi_clock_off(QN_SPI0); usart_reset((uint32_t) QN_SPI1); spi_clock_off(QN_SPI1); flash_clock_off(); gpio_clock_off(); adc_clock_off(); dma_clock_off(); pwm_clock_off(); // Configure sytem clock. syscon_set_sysclk_src(CLK_XTAL, __XTAL); syscon_set_ahb_clk(__AHB_CLK); syscon_set_ble_clk(__BLE_CLK); syscon_set_apb_clk(__APB_CLK); syscon_set_timer_clk(__TIMER_CLK); syscon_set_usart_clk((uint32_t)QN_UART0, __USART_CLK); syscon_set_usart_clk((uint32_t)QN_UART1, __USART_CLK); clk32k_enable(__32K_TYPE); /* ************************** * IO configuration ************************** */ SystemIOCfg(); /* ************************** * Peripheral setting ************************** */ // GPIO initialization for led, button & test control pin. gpio_init(gpio_interrupt_callback); // LED led_init(); #if (FB_OLED && FB_SPI_OLED) spi_init(QN_SPI1, SPI_BITRATE(10000), SPI_8BIT, SPI_MASTER_MOD); #endif /// Firefly add #if (FB_OLED) OLED_Init(); //初始化 OLED OLED_Clear(); //清屏 OLED OLED_ShowString(0,0," Firefly Team "); OLED_ShowString(0,2," Wait ... "); // OLED_ShowString(4,4,"Please wait..."); #endif //#if (FB_OLED) // OLED_Init(); //初始化OLED // delay(10000); // OLED_Clear(); //清屏 OLED // delay(10000); // OLED_ShowCHinese(9,0,0); // OLED_ShowCHinese(27,0,1); // OLED_ShowCHinese(45,0,2); // OLED_ShowCHinese(63,0,3); // OLED_ShowCHinese(81,0,4); // OLED_ShowCHinese(99,0,5); //#endif #if (defined(CFG_PRO_TEST)) gpio_pull_set(BUTTON1_PIN,GPIO_PULL_UP); gpio_set_direction(BUTTON1_PIN,GPIO_INPUT); if (gpio_read_pin(BUTTON1_PIN) == GPIO_LOW) app_env.pro_test_flag = TRUE; else app_env.pro_test_flag = FALSE; #endif // Test controll pin is input to check work mode #if (defined(QN_TEST_CTRL_PIN)) gpio_pull_set(QN_TEST_CTRL_PIN, GPIO_PULL_UP); gpio_set_direction_field(QN_TEST_CTRL_PIN, (uint32_t)GPIO_INPUT); #if (defined(CFG_HCI_UART)) // Initialize HCI UART port uart_init(QN_HCI_PORT, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_HCI_PORT, MASK_ENABLE); uart_rx_enable(QN_HCI_PORT, MASK_ENABLE); #elif (defined(CFG_HCI_SPI)) // Initialize HCI SPI port spi_init(QN_HCI_PORT, SPI_BITRATE(1000000), SPI_8BIT, SPI_SLAVE_MOD); gpio_set_direction_field(CFG_HCI_SPI_WR_CTRL_PIN, (uint32_t)GPIO_OUTPUT); gpio_write_pin(CFG_HCI_SPI_WR_CTRL_PIN, GPIO_HIGH); #endif #endif // Button button_init(); #if (QN_DBG_PRINT) uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif }
/** **************************************************************************************** * @brief Setup the microcontroller system. * * Initialize the system clock and pins. ***************************************************************************************** */ void SystemInit(void) { /* ************************** * Sub module clock setting ************************** */ // Reset SPI1 module(since the default register value was changed in bootloader) syscon_SetCRSS(QN_SYSCON, SYSCON_MASK_USART1_RST); syscon_SetCRSC(QN_SYSCON, SYSCON_MASK_USART1_RST); /* Disable all peripheral clock, will be enabled in the driver initilization. The next function performs the equivalent effect of a collection of these functions. timer_clock_off(QN_TIMER0); timer_clock_off(QN_TIMER1); timer_clock_off(QN_TIMER2); timer_clock_off(QN_TIMER3); uart_clock_off(QN_UART0); uart_clock_off(QN_UART1); spi_clock_off(QN_SPI0); spi_clock_off(QN_SPI1); flash_clock_off(); gpio_clock_off(); adc_clock_off(); dma_clock_off(); pwm_clock_off(); */ syscon_SetCRSS(QN_SYSCON, SYSCON_MASK_GATING_TIMER0 | SYSCON_MASK_GATING_TIMER1 | SYSCON_MASK_GATING_TIMER2 | SYSCON_MASK_GATING_TIMER3 | SYSCON_MASK_GATING_UART0 | SYSCON_MASK_GATING_UART1 | SYSCON_MASK_GATING_SPI0 | SYSCON_MASK_GATING_SPI1 | SYSCON_MASK_GATING_SPI_AHB | SYSCON_MASK_GATING_GPIO | SYSCON_MASK_GATING_ADC | SYSCON_MASK_GATING_DMA | SYSCON_MASK_GATING_PWM); // Configure sytem clock. syscon_set_sysclk_src(CLK_XTAL, __XTAL); syscon_set_ahb_clk(__AHB_CLK); syscon_set_ble_clk(__BLE_CLK); syscon_set_apb_clk(__APB_CLK); syscon_set_timer_clk(__TIMER_CLK); syscon_set_usart_clk((uint32_t)QN_UART0, __USART_CLK); syscon_set_usart_clk((uint32_t)QN_UART1, __USART_CLK); clk32k_enable(__32K_TYPE); /* ************************** * IO configuration ************************** */ SystemIOCfg(); /* ************************** * Peripheral setting ************************** */ // GPIO initialization for led, button & test control pin. gpio_init(gpio_interrupt_callback); // LED led_init(); // Test controll pin is input to check work mode #if (defined(QN_TEST_CTRL_PIN)) gpio_pull_set(QN_TEST_CTRL_PIN, GPIO_PULL_UP); gpio_set_direction_field(QN_TEST_CTRL_PIN, (uint32_t)GPIO_INPUT); #if (defined(CFG_HCI_UART)) // Initialize HCI UART port uart_init(QN_HCI_PORT, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_HCI_PORT, MASK_ENABLE); uart_rx_enable(QN_HCI_PORT, MASK_ENABLE); #elif (defined(CFG_HCI_SPI)) // Initialize HCI SPI port spi_init(QN_HCI_PORT, SPI_BITRATE(1000000), SPI_8BIT, SPI_SLAVE_MOD); gpio_set_direction_field(CFG_HCI_SPI_WR_CTRL_PIN, (uint32_t)GPIO_OUTPUT); gpio_write_pin(CFG_HCI_SPI_WR_CTRL_PIN, GPIO_HIGH); #endif #endif // Button button_init(); #if (QN_DBG_PRINT) uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif }
/** **************************************************************************************** * @brief Setup the microcontroller system. * * Initialize the system clock and pins. ***************************************************************************************** */ void SystemInit(void) { /* ************************** * Sub module clock setting ************************** */ // Disable all peripheral clock, will be enabled in the driver initilization. timer_clock_off(QN_TIMER0); timer_clock_off(QN_TIMER1); timer_clock_off(QN_TIMER2); timer_clock_off(QN_TIMER3); uart_clock_off(QN_UART0); uart_clock_off(QN_UART1); spi_clock_off(QN_SPI0); usart_reset((uint32_t) QN_SPI1); spi_clock_off(QN_SPI1); flash_clock_off(); gpio_clock_off(); adc_clock_off(); dma_clock_off(); pwm_clock_off(); // Configure sytem clock. syscon_set_sysclk_src(CLK_XTAL, __XTAL); syscon_set_ahb_clk(__AHB_CLK); syscon_set_ble_clk(__BLE_CLK); syscon_set_apb_clk(__APB_CLK); syscon_set_timer_clk(__TIMER_CLK); syscon_set_usart_clk((uint32_t)QN_UART0, __USART_CLK); syscon_set_usart_clk((uint32_t)QN_UART1, __USART_CLK); clk32k_enable(__32K_TYPE); // if pull down GPIO_P12 when power on,it will enter the test mode #if defined(CFG_ALL_GPIO_TEST) //set GPIO_P12 direction to GPIO_INPUT syscon_SetPMCR0(QN_SYSCON,P12_GPIO_10_PIN_CTRL); gpio_init(gpio_interrupt_callback); gpio_pull_set(GPIO_P12, GPIO_PULL_UP); gpio_set_direction_field(GPIO_P12, (uint32_t)GPIO_INPUT); //check if it's pull down if (gpio_read_pin(GPIO_P12) == GPIO_LOW) { //set a flag to enter test mode until device reset app_env.test_flag = TRUE; } else app_env.test_flag = FALSE; #endif /* ************************** * IO configuration ************************** */ SystemIOCfg(); /* ************************** * Peripheral setting ************************** */ // GPIO initialization for led, button & test control pin. gpio_init(gpio_interrupt_callback); // LED led_init(); // Test controll pin is input to check work mode #if (defined(QN_TEST_CTRL_PIN)) gpio_pull_set(QN_TEST_CTRL_PIN, GPIO_PULL_UP); gpio_set_direction_field(QN_TEST_CTRL_PIN, (uint32_t)GPIO_INPUT); #if (defined(CFG_HCI_UART)) // Initialize HCI UART port uart_init(QN_HCI_PORT, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_HCI_PORT, MASK_ENABLE); uart_rx_enable(QN_HCI_PORT, MASK_ENABLE); #elif (defined(CFG_HCI_SPI)) // Initialize HCI SPI port spi_init(QN_HCI_PORT, SPI_BITRATE(1000000), SPI_8BIT, SPI_SLAVE_MOD); gpio_set_direction_field(CFG_HCI_SPI_WR_CTRL_PIN, (uint32_t)GPIO_OUTPUT); gpio_write_pin(CFG_HCI_SPI_WR_CTRL_PIN, GPIO_HIGH); #endif #endif #if defined(QN_COM_UART) // Initialize User UART port uart_init(QN_COM_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_COM_UART, MASK_ENABLE); uart_rx_enable(QN_COM_UART, MASK_ENABLE); #endif #if (QN_DBG_PRINT) // Initialize Debug UART port uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif // if enter test mode flag had been seted,enter a loop to test all GPIO. #if (defined(CFG_ALL_GPIO_TEST)) if (app_env.test_flag == TRUE) { //get a warnning to user QPRINTF("\r\n@@@You pull down the GPIO_level of GPIO_P12 when power on,so it will enter the test mode!"); while(1) { all_gpio_test(); } } #endif }
/** **************************************************************************************** * @brief Setup the microcontroller system. * * Initialize the system clock and pins. ***************************************************************************************** */ void SystemInit(void) { /* ************************** * Sub module clock setting ************************** */ // Disable all peripheral clock, will be enabled in the driver initilization. timer_clock_off(QN_TIMER0); timer_clock_off(QN_TIMER1); timer_clock_off(QN_TIMER2); timer_clock_off(QN_TIMER3); uart_clock_off(QN_UART0); uart_clock_off(QN_UART1); spi_clock_off(QN_SPI0); usart_reset((uint32_t) QN_SPI1); spi_clock_off(QN_SPI1); flash_clock_off(); gpio_clock_off(); adc_clock_off(); dma_clock_off(); pwm_clock_off(); // Configure sytem clock. syscon_set_sysclk_src(CLK_XTAL, __XTAL); syscon_set_ahb_clk(__AHB_CLK); syscon_set_ble_clk(__BLE_CLK); syscon_set_apb_clk(__APB_CLK); syscon_set_timer_clk(__TIMER_CLK); syscon_set_usart_clk((uint32_t)QN_UART0, __USART_CLK); syscon_set_usart_clk((uint32_t)QN_UART1, __USART_CLK); clk32k_enable(__32K_TYPE); /* ************************** * IO configuration ************************** */ SystemIOCfg(); /* ************************** * Peripheral setting ************************** */ // GPIO initialization for led, button & test control pin. gpio_init(gpio_interrupt_callback); // LED led_init(); // Test controll pin is input to check work mode #if (defined(QN_TEST_CTRL_PIN)) gpio_pull_set(QN_TEST_CTRL_PIN, GPIO_PULL_UP); gpio_set_direction_field(QN_TEST_CTRL_PIN, (uint32_t)GPIO_INPUT); #if (defined(CFG_HCI_UART)) // Initialize HCI UART port uart_init(QN_HCI_PORT, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_HCI_PORT, MASK_ENABLE); uart_rx_enable(QN_HCI_PORT, MASK_ENABLE); #elif (defined(CFG_HCI_SPI)) // Initialize HCI SPI port spi_init(QN_HCI_PORT, SPI_BITRATE(1000000), SPI_8BIT, SPI_SLAVE_MOD); gpio_set_direction_field(CFG_HCI_SPI_WR_CTRL_PIN, (uint32_t)GPIO_OUTPUT); gpio_write_pin(CFG_HCI_SPI_WR_CTRL_PIN, GPIO_HIGH); #endif #endif // Button button_init(); #if (QN_DBG_PRINT) uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif }