diff --git a/board/BearPi_STM32L431RC/BSP/Src/stm32l4xx_it_mpy.c b/board/BearPi_STM32L431RC/BSP/Src/stm32l4xx_it_mpy.c
new file mode 100644
index 00000000..78cb75af
--- /dev/null
+++ b/board/BearPi_STM32L431RC/BSP/Src/stm32l4xx_it_mpy.c
@@ -0,0 +1,360 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32l4xx_it.c
+ * @brief Interrupt Service Routines.
+ ******************************************************************************
+ * @attention
+ *
+ *
© Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32l4xx_it.h"
+#include "tos_k.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "machine_uart.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+extern UART_HandleTypeDef hlpuart1;
+extern UART_HandleTypeDef huart2;
+extern UART_HandleTypeDef huart3;
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex-M4 Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+__weak void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ if (tos_knl_is_running())
+ {
+ tos_knl_irq_enter();
+ tos_tick_handler();
+ tos_knl_irq_leave();
+ }
+ //HAL_SYSTICK_IRQHandler();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32L4xx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32l4xx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles EXTI line1 interrupt.
+ */
+void EXTI1_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI1_IRQn 0 */
+
+ /* USER CODE END EXTI1_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
+ /* USER CODE BEGIN EXTI1_IRQn 1 */
+
+ /* USER CODE END EXTI1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line2 interrupt.
+ */
+void EXTI2_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI2_IRQn 0 */
+
+ /* USER CODE END EXTI2_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
+ /* USER CODE BEGIN EXTI2_IRQn 1 */
+
+ /* USER CODE END EXTI2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line3 interrupt.
+ */
+void EXTI3_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI3_IRQn 0 */
+
+ /* USER CODE END EXTI3_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
+ /* USER CODE BEGIN EXTI3_IRQn 1 */
+
+ /* USER CODE END EXTI3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line4 interrupt.
+ */
+void EXTI4_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI4_IRQn 0 */
+
+ /* USER CODE END EXTI4_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
+ /* USER CODE BEGIN EXTI4_IRQn 1 */
+
+ /* USER CODE END EXTI4_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line[9:5] interrupts.
+ */
+void EXTI9_5_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI9_5_IRQn 0 */
+
+ /* USER CODE END EXTI9_5_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
+ /* USER CODE BEGIN EXTI9_5_IRQn 1 */
+
+ /* USER CODE END EXTI9_5_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line[15:10] interrupts.
+ */
+void EXTI15_10_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI15_10_IRQn 0 */
+
+ /* USER CODE END EXTI15_10_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
+ /* USER CODE BEGIN EXTI15_10_IRQn 1 */
+
+ /* USER CODE END EXTI15_10_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART2 global interrupt.
+ */
+void USART2_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART2_IRQn 0 */
+
+ /* USER CODE END USART2_IRQn 0 */
+ HAL_UART_IRQHandler(&huart2);
+ /* USER CODE BEGIN USART2_IRQn 1 */
+
+ /* USER CODE END USART2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART3 global interrupt.
+ */
+void USART3_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART3_IRQn 0 */
+
+ /* USER CODE END USART3_IRQn 0 */
+ HAL_UART_IRQHandler(&huart3);
+ /* USER CODE BEGIN USART3_IRQn 1 */
+
+ /* USER CODE END USART3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles LPUART1 global interrupt.
+ */
+void LPUART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN LPUART1_IRQn 0 */
+
+ /* USER CODE END LPUART1_IRQn 0 */
+ HAL_UART_IRQHandler(&hlpuart1);
+ /* USER CODE BEGIN LPUART1_IRQn 1 */
+
+ /* USER CODE END LPUART1_IRQn 1 */
+}
+
+/* USER CODE BEGIN 1 */
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+ if (huart->Instance == LPUART1) {
+ mp_hal_uart_irq_handler(0);
+ } else if (huart->Instance == USART1) {
+ mp_hal_uart_irq_handler(1);
+ } else if (huart->Instance == USART2) {
+ mp_hal_uart_irq_handler(2);
+ } else if (huart->Instance == USART3) {
+ mp_hal_uart_irq_handler(3);
+ }
+}
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/board/BearPi_STM32L431RC/BSP/Src/usart.c b/board/BearPi_STM32L431RC/BSP/Src/usart.c
index c6353adf..794e1dcc 100644
--- a/board/BearPi_STM32L431RC/BSP/Src/usart.c
+++ b/board/BearPi_STM32L431RC/BSP/Src/usart.c
@@ -24,6 +24,7 @@
/* USER CODE BEGIN 0 */
uint8_t data;
uint8_t shell_data;
+extern void mp_hal_uart_rx_start(uint32_t uart_id);
/* USER CODE END 0 */
UART_HandleTypeDef hlpuart1;
@@ -49,10 +50,14 @@ void MX_LPUART1_UART_Init(void)
{
Error_Handler();
}
- HAL_UART_Receive_IT(&hlpuart1, &data, 1);
+#ifdef USE_MICROPYTHON
+ mp_hal_uart_rx_start(0);
+#else
+ HAL_UART_Receive_IT(&hlpuart1, &data, 1);
#if AT_INPUT_TYPE_FRAME_EN
__HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_IDLE);
#endif
+#endif
}
/* USART1 init function */
@@ -73,6 +78,9 @@ void MX_USART1_UART_Init(void)
{
Error_Handler();
}
+#ifdef USE_MICROPYTHON
+ mp_hal_uart_rx_start(1);
+#endif
}
/* USART2 init function */
@@ -93,7 +101,11 @@ void MX_USART2_UART_Init(void)
{
Error_Handler();
}
+#ifdef USE_MICROPYTHON
+ mp_hal_uart_rx_start(2);
+#else
HAL_UART_Receive_IT(&huart2, &shell_data, 1);
+#endif
}
/* USART3 init function */
@@ -114,7 +126,9 @@ void MX_USART3_UART_Init(void)
{
Error_Handler();
}
-
+#ifdef USE_MICROPYTHON
+ mp_hal_uart_rx_start(3);
+#endif
}
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvoptx b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvoptx
new file mode 100644
index 00000000..61b73046
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvoptx
@@ -0,0 +1,2923 @@
+
+
+
+ 1.0
+
+ ### uVision Project, (C) Keil Software
+
+
+ *.c
+ *.s*; *.src; *.a*
+ *.obj; *.o
+ *.lib
+ *.txt; *.h; *.inc
+ *.plm
+ *.cpp
+ 0
+
+
+
+ 0
+ 0
+
+
+
+ TencentOS_tiny
+ 0x4
+ ARM-ADS
+
+ 80000000
+
+ 1
+ 1
+ 0
+ 1
+ 0
+
+
+ 1
+ 65535
+ 0
+ 0
+ 0
+
+
+ 79
+ 66
+ 8
+ .\list\
+
+
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+
+
+ 1
+ 0
+ 1
+
+ 18
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 6
+
+
+
+
+
+
+
+
+
+
+ STLink\ST-LINKIII-KEIL_SWO.dll
+
+
+
+ 0
+ ARMRTXEVENTFLAGS
+ -L70 -Z18 -C0 -M0 -T1
+
+
+ 0
+ DLGTARM
+ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)
+
+
+ 0
+ ARMDBGFLAGS
+
+
+
+ 0
+ DLGUARM
+ (105=-1,-1,-1,-1,0)
+
+
+ 0
+ UL2CM3
+ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32L431RCTx$CMSIS\Flash\STM32L4xx_256.FLM))
+
+
+ 0
+ ST-LINKIII-KEIL_SWO
+ -U303030303030303030303031 -O10446 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_256.FLM -FS08000000 -FL040000 -FP0($$Device:STM32L431RCTx$CMSIS\Flash\STM32L4xx_256.FLM)
+
+
+
+
+
+ 0
+ 1
+ tos_next_task
+
+
+ 1
+ 1
+ tos_rdyq.highest_prio
+
+
+ 2
+ 1
+ task_list
+
+
+ 3
+ 1
+ 0x20000280
+
+
+ 4
+ 1
+ tos_rdyq.highest_prio
+
+
+ 5
+ 1
+ owner
+
+
+ 6
+ 1
+ tos_curr_task
+
+
+ 7
+ 1
+ highest_pending_prio
+
+
+ 8
+ 1
+ task
+
+
+
+
+ 1
+ 0
+ 0x200016F4
+ 0
+
+
+
+ 0
+
+
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 2
+ 10000000
+
+
+
+
+
+ Application/MDK-ARM
+ 0
+ 0
+ 0
+ 0
+
+ 1
+ 1
+ 2
+ 0
+ 0
+ 0
+ startup_stm32l431xx.s
+ startup_stm32l431xx.s
+ 0
+ 0
+
+
+
+
+ Application/User
+ 0
+ 0
+ 0
+ 0
+
+ 2
+ 2
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\gpio.c
+ gpio.c
+ 0
+ 0
+
+
+ 2
+ 3
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\main.c
+ main.c
+ 0
+ 0
+
+
+ 2
+ 4
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\mcu_init.c
+ mcu_init.c
+ 0
+ 0
+
+
+ 2
+ 5
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\stm32l4xx_hal_msp.c
+ stm32l4xx_hal_msp.c
+ 0
+ 0
+
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\stm32l4xx_it_mpy.c
+ stm32l4xx_it_mpy.c
+ 0
+ 0
+
+
+ 2
+ 7
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\usart.c
+ usart.c
+ 0
+ 0
+
+
+ 2
+ 8
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\adc.c
+ adc.c
+ 0
+ 0
+
+
+ 2
+ 9
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\i2c.c
+ i2c.c
+ 0
+ 0
+
+
+ 2
+ 10
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\spi.c
+ spi.c
+ 0
+ 0
+
+
+
+
+ examples
+ 0
+ 0
+ 0
+ 0
+
+ 3
+ 11
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\examples\micropython_demo\micropython_demo.c
+ micropython_demo.c
+ 0
+ 0
+
+
+
+
+ Drivers/STM32L4xx_HAL_Driver
+ 0
+ 0
+ 0
+ 0
+
+ 4
+ 12
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim.c
+ stm32l4xx_hal_tim.c
+ 0
+ 0
+
+
+ 4
+ 13
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim_ex.c
+ stm32l4xx_hal_tim_ex.c
+ 0
+ 0
+
+
+ 4
+ 14
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c
+ stm32l4xx_hal_uart.c
+ 0
+ 0
+
+
+ 4
+ 15
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c
+ stm32l4xx_hal_uart_ex.c
+ 0
+ 0
+
+
+ 4
+ 16
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c
+ stm32l4xx_hal.c
+ 0
+ 0
+
+
+ 4
+ 17
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c
+ stm32l4xx_hal_i2c.c
+ 0
+ 0
+
+
+ 4
+ 18
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c_ex.c
+ stm32l4xx_hal_i2c_ex.c
+ 0
+ 0
+
+
+ 4
+ 19
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c
+ stm32l4xx_hal_rcc.c
+ 0
+ 0
+
+
+ 4
+ 20
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c
+ stm32l4xx_hal_rcc_ex.c
+ 0
+ 0
+
+
+ 4
+ 21
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash.c
+ stm32l4xx_hal_flash.c
+ 0
+ 0
+
+
+ 4
+ 22
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c
+ stm32l4xx_hal_flash_ex.c
+ 0
+ 0
+
+
+ 4
+ 23
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ramfunc.c
+ stm32l4xx_hal_flash_ramfunc.c
+ 0
+ 0
+
+
+ 4
+ 24
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c
+ stm32l4xx_hal_gpio.c
+ 0
+ 0
+
+
+ 4
+ 25
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c
+ stm32l4xx_hal_dma.c
+ 0
+ 0
+
+
+ 4
+ 26
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c
+ stm32l4xx_hal_dma_ex.c
+ 0
+ 0
+
+
+ 4
+ 27
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c
+ stm32l4xx_hal_pwr.c
+ 0
+ 0
+
+
+ 4
+ 28
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c
+ stm32l4xx_hal_pwr_ex.c
+ 0
+ 0
+
+
+ 4
+ 29
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c
+ stm32l4xx_hal_cortex.c
+ 0
+ 0
+
+
+ 4
+ 30
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc_ex.c
+ stm32l4xx_hal_adc_ex.c
+ 0
+ 0
+
+
+ 4
+ 31
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc.c
+ stm32l4xx_hal_adc.c
+ 0
+ 0
+
+
+ 4
+ 32
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac.c
+ stm32l4xx_hal_dac.c
+ 0
+ 0
+
+
+ 4
+ 33
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac_ex.c
+ stm32l4xx_hal_dac_ex.c
+ 0
+ 0
+
+
+ 4
+ 34
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi.c
+ stm32l4xx_hal_spi.c
+ 0
+ 0
+
+
+ 4
+ 35
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi_ex.c
+ stm32l4xx_hal_spi_ex.c
+ 0
+ 0
+
+
+
+
+ Drivers/CMSIS
+ 0
+ 0
+ 0
+ 0
+
+ 5
+ 36
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\system_stm32l4xx.c
+ system_stm32l4xx.c
+ 0
+ 0
+
+
+
+
+ Hardware
+ 0
+ 0
+ 0
+ 0
+
+ 6
+ 37
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Hardware\BH1750\BH1750.c
+ BH1750.c
+ 0
+ 0
+
+
+ 6
+ 38
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Hardware\LCD_ST7789\lcd_spi2_drv.c
+ lcd_spi2_drv.c
+ 0
+ 0
+
+
+
+
+ kernel
+ 0
+ 0
+ 0
+ 0
+
+ 7
+ 39
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mmblk.c
+ tos_mmblk.c
+ 0
+ 0
+
+
+ 7
+ 40
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mmheap.c
+ tos_mmheap.c
+ 0
+ 0
+
+
+ 7
+ 41
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mutex.c
+ tos_mutex.c
+ 0
+ 0
+
+
+ 7
+ 42
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sched.c
+ tos_sched.c
+ 0
+ 0
+
+
+ 7
+ 43
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sem.c
+ tos_sem.c
+ 0
+ 0
+
+
+ 7
+ 44
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sys.c
+ tos_sys.c
+ 0
+ 0
+
+
+ 7
+ 45
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_task.c
+ tos_task.c
+ 0
+ 0
+
+
+ 7
+ 46
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_tick.c
+ tos_tick.c
+ 0
+ 0
+
+
+ 7
+ 47
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_time.c
+ tos_time.c
+ 0
+ 0
+
+
+ 7
+ 48
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_timer.c
+ tos_timer.c
+ 0
+ 0
+
+
+ 7
+ 49
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_event.c
+ tos_event.c
+ 0
+ 0
+
+
+ 7
+ 50
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_global.c
+ tos_global.c
+ 0
+ 0
+
+
+ 7
+ 51
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_pend.c
+ tos_pend.c
+ 0
+ 0
+
+
+ 7
+ 52
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_robin.c
+ tos_robin.c
+ 0
+ 0
+
+
+ 7
+ 53
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_binary_heap.c
+ tos_binary_heap.c
+ 0
+ 0
+
+
+ 7
+ 54
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_char_fifo.c
+ tos_char_fifo.c
+ 0
+ 0
+
+
+ 7
+ 55
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_completion.c
+ tos_completion.c
+ 0
+ 0
+
+
+ 7
+ 56
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_countdownlatch.c
+ tos_countdownlatch.c
+ 0
+ 0
+
+
+ 7
+ 57
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mail_queue.c
+ tos_mail_queue.c
+ 0
+ 0
+
+
+ 7
+ 58
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_message_queue.c
+ tos_message_queue.c
+ 0
+ 0
+
+
+ 7
+ 59
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_mail_queue.c
+ tos_priority_mail_queue.c
+ 0
+ 0
+
+
+ 7
+ 60
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_message_queue.c
+ tos_priority_message_queue.c
+ 0
+ 0
+
+
+ 7
+ 61
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_queue.c
+ tos_priority_queue.c
+ 0
+ 0
+
+
+ 7
+ 62
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_ring_queue.c
+ tos_ring_queue.c
+ 0
+ 0
+
+
+
+
+ hal
+ 0
+ 0
+ 0
+ 0
+
+ 8
+ 63
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_uart.c
+ tos_hal_uart.c
+ 0
+ 0
+
+
+ 8
+ 64
+ 1
+ 0
+ 0
+ 0
+ .\board\hal\mp_tos_hal_pin.c
+ mp_tos_hal_pin.c
+ 0
+ 0
+
+
+ 8
+ 65
+ 1
+ 0
+ 0
+ 0
+ .\board\hal\mp_tos_hal_spi.c
+ mp_tos_hal_spi.c
+ 0
+ 0
+
+
+ 8
+ 66
+ 1
+ 0
+ 0
+ 0
+ .\board\hal\mp_tos_hal_uart.c
+ mp_tos_hal_uart.c
+ 0
+ 0
+
+
+
+
+ cpu
+ 0
+ 0
+ 0
+ 0
+
+ 9
+ 67
+ 2
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S
+ port_s.S
+ 0
+ 0
+
+
+ 9
+ 68
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c
+ tos_cpu.c
+ 0
+ 0
+
+
+ 9
+ 69
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_c.c
+ port_c.c
+ 0
+ 0
+
+
+
+
+ config
+ 0
+ 0
+ 0
+ 0
+
+ 10
+ 70
+ 5
+ 0
+ 0
+ 0
+ ..\..\TOS-CONFIG\tos_config.h
+ tos_config.h
+ 0
+ 0
+
+
+
+
+ micropython/py
+ 0
+ 0
+ 0
+ 0
+
+ 11
+ 71
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\argcheck.c
+ argcheck.c
+ 0
+ 0
+
+
+ 11
+ 72
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmarm.c
+ asmarm.c
+ 0
+ 0
+
+
+ 11
+ 73
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmbase.c
+ asmbase.c
+ 0
+ 0
+
+
+ 11
+ 74
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmthumb.c
+ asmthumb.c
+ 0
+ 0
+
+
+ 11
+ 75
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmx64.c
+ asmx64.c
+ 0
+ 0
+
+
+ 11
+ 76
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmx86.c
+ asmx86.c
+ 0
+ 0
+
+
+ 11
+ 77
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmxtensa.c
+ asmxtensa.c
+ 0
+ 0
+
+
+ 11
+ 78
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\bc.c
+ bc.c
+ 0
+ 0
+
+
+ 11
+ 79
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\binary.c
+ binary.c
+ 0
+ 0
+
+
+ 11
+ 80
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinevex.c
+ builtinevex.c
+ 0
+ 0
+
+
+ 11
+ 81
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinhelp.c
+ builtinhelp.c
+ 0
+ 0
+
+
+ 11
+ 82
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinimport.c
+ builtinimport.c
+ 0
+ 0
+
+
+ 11
+ 83
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\compile.c
+ compile.c
+ 0
+ 0
+
+
+ 11
+ 84
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitbc.c
+ emitbc.c
+ 0
+ 0
+
+
+ 11
+ 85
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitcommon.c
+ emitcommon.c
+ 0
+ 0
+
+
+ 11
+ 86
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitglue.c
+ emitglue.c
+ 0
+ 0
+
+
+ 11
+ 87
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitinlinethumb.c
+ emitinlinethumb.c
+ 0
+ 0
+
+
+ 11
+ 88
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitinlinextensa.c
+ emitinlinextensa.c
+ 0
+ 0
+
+
+ 11
+ 89
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnarm.c
+ emitnarm.c
+ 0
+ 0
+
+
+ 11
+ 90
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnative.c
+ emitnative.c
+ 0
+ 0
+
+
+ 11
+ 91
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnthumb.c
+ emitnthumb.c
+ 0
+ 0
+
+
+ 11
+ 92
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnx64.c
+ emitnx64.c
+ 0
+ 0
+
+
+ 11
+ 93
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnx86.c
+ emitnx86.c
+ 0
+ 0
+
+
+ 11
+ 94
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnxtensa.c
+ emitnxtensa.c
+ 0
+ 0
+
+
+ 11
+ 95
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnxtensawin.c
+ emitnxtensawin.c
+ 0
+ 0
+
+
+ 11
+ 96
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\formatfloat.c
+ formatfloat.c
+ 0
+ 0
+
+
+ 11
+ 97
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\frozenmod.c
+ frozenmod.c
+ 0
+ 0
+
+
+ 11
+ 98
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\gc.c
+ gc.c
+ 0
+ 0
+
+
+ 11
+ 99
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\lexer.c
+ lexer.c
+ 0
+ 0
+
+
+ 11
+ 100
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\malloc.c
+ malloc.c
+ 0
+ 0
+
+
+ 11
+ 101
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\map.c
+ map.c
+ 0
+ 0
+
+
+ 11
+ 102
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modarray.c
+ modarray.c
+ 0
+ 0
+
+
+ 11
+ 103
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modbuiltins.c
+ modbuiltins.c
+ 0
+ 0
+
+
+ 11
+ 104
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modcmath.c
+ modcmath.c
+ 0
+ 0
+
+
+ 11
+ 105
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modcollections.c
+ modcollections.c
+ 0
+ 0
+
+
+ 11
+ 106
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modgc.c
+ modgc.c
+ 0
+ 0
+
+
+ 11
+ 107
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modio.c
+ modio.c
+ 0
+ 0
+
+
+ 11
+ 108
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modmath.c
+ modmath.c
+ 0
+ 0
+
+
+ 11
+ 109
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modmicropython.c
+ modmicropython.c
+ 0
+ 0
+
+
+ 11
+ 110
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modstruct.c
+ modstruct.c
+ 0
+ 0
+
+
+ 11
+ 111
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modsys.c
+ modsys.c
+ 0
+ 0
+
+
+ 11
+ 112
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modthread.c
+ modthread.c
+ 0
+ 0
+
+
+ 11
+ 113
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\moduerrno.c
+ moduerrno.c
+ 0
+ 0
+
+
+ 11
+ 114
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpprint.c
+ mpprint.c
+ 0
+ 0
+
+
+ 11
+ 115
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpstate.c
+ mpstate.c
+ 0
+ 0
+
+
+ 11
+ 116
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpz.c
+ mpz.c
+ 0
+ 0
+
+
+ 11
+ 117
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nativeglue.c
+ nativeglue.c
+ 0
+ 0
+
+
+ 11
+ 118
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlr.c
+ nlr.c
+ 0
+ 0
+
+
+ 11
+ 119
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlraarch64.c
+ nlraarch64.c
+ 0
+ 0
+
+
+ 11
+ 120
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrpowerpc.c
+ nlrpowerpc.c
+ 0
+ 0
+
+
+ 11
+ 121
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrsetjmp.c
+ nlrsetjmp.c
+ 0
+ 0
+
+
+ 11
+ 122
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrthumb.c
+ nlrthumb.c
+ 0
+ 0
+
+
+ 11
+ 123
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrx64.c
+ nlrx64.c
+ 0
+ 0
+
+
+ 11
+ 124
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrx86.c
+ nlrx86.c
+ 0
+ 0
+
+
+ 11
+ 125
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrxtensa.c
+ nlrxtensa.c
+ 0
+ 0
+
+
+ 11
+ 126
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\obj.c
+ obj.c
+ 0
+ 0
+
+
+ 11
+ 127
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objarray.c
+ objarray.c
+ 0
+ 0
+
+
+ 11
+ 128
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objattrtuple.c
+ objattrtuple.c
+ 0
+ 0
+
+
+ 11
+ 129
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objbool.c
+ objbool.c
+ 0
+ 0
+
+
+ 11
+ 130
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objboundmeth.c
+ objboundmeth.c
+ 0
+ 0
+
+
+ 11
+ 131
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objcell.c
+ objcell.c
+ 0
+ 0
+
+
+ 11
+ 132
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objclosure.c
+ objclosure.c
+ 0
+ 0
+
+
+ 11
+ 133
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objcomplex.c
+ objcomplex.c
+ 0
+ 0
+
+
+ 11
+ 134
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objdeque.c
+ objdeque.c
+ 0
+ 0
+
+
+ 11
+ 135
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objdict.c
+ objdict.c
+ 0
+ 0
+
+
+ 11
+ 136
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objenumerate.c
+ objenumerate.c
+ 0
+ 0
+
+
+ 11
+ 137
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objexcept.c
+ objexcept.c
+ 0
+ 0
+
+
+ 11
+ 138
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfilter.c
+ objfilter.c
+ 0
+ 0
+
+
+ 11
+ 139
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfloat.c
+ objfloat.c
+ 0
+ 0
+
+
+ 11
+ 140
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfun.c
+ objfun.c
+ 0
+ 0
+
+
+ 11
+ 141
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objgenerator.c
+ objgenerator.c
+ 0
+ 0
+
+
+ 11
+ 142
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objgetitemiter.c
+ objgetitemiter.c
+ 0
+ 0
+
+
+ 11
+ 143
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint.c
+ objint.c
+ 0
+ 0
+
+
+ 11
+ 144
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint_longlong.c
+ objint_longlong.c
+ 0
+ 0
+
+
+ 11
+ 145
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint_mpz.c
+ objint_mpz.c
+ 0
+ 0
+
+
+ 11
+ 146
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objlist.c
+ objlist.c
+ 0
+ 0
+
+
+ 11
+ 147
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objmap.c
+ objmap.c
+ 0
+ 0
+
+
+ 11
+ 148
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objmodule.c
+ objmodule.c
+ 0
+ 0
+
+
+ 11
+ 149
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objnamedtuple.c
+ objnamedtuple.c
+ 0
+ 0
+
+
+ 11
+ 150
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objnone.c
+ objnone.c
+ 0
+ 0
+
+
+ 11
+ 151
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objobject.c
+ objobject.c
+ 0
+ 0
+
+
+ 11
+ 152
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objpolyiter.c
+ objpolyiter.c
+ 0
+ 0
+
+
+ 11
+ 153
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objproperty.c
+ objproperty.c
+ 0
+ 0
+
+
+ 11
+ 154
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objrange.c
+ objrange.c
+ 0
+ 0
+
+
+ 11
+ 155
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objreversed.c
+ objreversed.c
+ 0
+ 0
+
+
+ 11
+ 156
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objset.c
+ objset.c
+ 0
+ 0
+
+
+ 11
+ 157
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objsingleton.c
+ objsingleton.c
+ 0
+ 0
+
+
+ 11
+ 158
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objslice.c
+ objslice.c
+ 0
+ 0
+
+
+ 11
+ 159
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstr.c
+ objstr.c
+ 0
+ 0
+
+
+ 11
+ 160
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstringio.c
+ objstringio.c
+ 0
+ 0
+
+
+ 11
+ 161
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstrunicode.c
+ objstrunicode.c
+ 0
+ 0
+
+
+ 11
+ 162
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objtuple.c
+ objtuple.c
+ 0
+ 0
+
+
+ 11
+ 163
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objtype.c
+ objtype.c
+ 0
+ 0
+
+
+ 11
+ 164
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objzip.c
+ objzip.c
+ 0
+ 0
+
+
+ 11
+ 165
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\opmethods.c
+ opmethods.c
+ 0
+ 0
+
+
+ 11
+ 166
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\pairheap.c
+ pairheap.c
+ 0
+ 0
+
+
+ 11
+ 167
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parse.c
+ parse.c
+ 0
+ 0
+
+
+ 11
+ 168
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parsenum.c
+ parsenum.c
+ 0
+ 0
+
+
+ 11
+ 169
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parsenumbase.c
+ parsenumbase.c
+ 0
+ 0
+
+
+ 11
+ 170
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\persistentcode.c
+ persistentcode.c
+ 0
+ 0
+
+
+ 11
+ 171
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\profile.c
+ profile.c
+ 0
+ 0
+
+
+ 11
+ 172
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\pystack.c
+ pystack.c
+ 0
+ 0
+
+
+ 11
+ 173
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\qstr.c
+ qstr.c
+ 0
+ 0
+
+
+ 11
+ 174
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\reader.c
+ reader.c
+ 0
+ 0
+
+
+ 11
+ 175
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\repl.c
+ repl.c
+ 0
+ 0
+
+
+ 11
+ 176
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\ringbuf.c
+ ringbuf.c
+ 0
+ 0
+
+
+ 11
+ 177
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\runtime.c
+ runtime.c
+ 0
+ 0
+
+
+ 11
+ 178
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\runtime_utils.c
+ runtime_utils.c
+ 0
+ 0
+
+
+ 11
+ 179
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\scheduler.c
+ scheduler.c
+ 0
+ 0
+
+
+ 11
+ 180
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\scope.c
+ scope.c
+ 0
+ 0
+
+
+ 11
+ 181
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\sequence.c
+ sequence.c
+ 0
+ 0
+
+
+ 11
+ 182
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\showbc.c
+ showbc.c
+ 0
+ 0
+
+
+ 11
+ 183
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\smallint.c
+ smallint.c
+ 0
+ 0
+
+
+ 11
+ 184
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\stackctrl.c
+ stackctrl.c
+ 0
+ 0
+
+
+ 11
+ 185
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\stream.c
+ stream.c
+ 0
+ 0
+
+
+ 11
+ 186
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\unicode.c
+ unicode.c
+ 0
+ 0
+
+
+ 11
+ 187
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\vm.c
+ vm.c
+ 0
+ 0
+
+
+ 11
+ 188
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\vstr.c
+ vstr.c
+ 0
+ 0
+
+
+ 11
+ 189
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\warning.c
+ warning.c
+ 0
+ 0
+
+
+
+
+ micropython/shared
+ 0
+ 0
+ 0
+ 0
+
+ 12
+ 190
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\readline\readline.c
+ readline.c
+ 0
+ 0
+
+
+ 12
+ 191
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\pyexec.c
+ pyexec.c
+ 0
+ 0
+
+
+ 12
+ 192
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\sys_stdio_mphal.c
+ sys_stdio_mphal.c
+ 0
+ 0
+
+
+ 12
+ 193
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\interrupt_char.c
+ interrupt_char.c
+ 0
+ 0
+
+
+ 12
+ 194
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\stdout_helpers.c
+ stdout_helpers.c
+ 0
+ 0
+
+
+
+
+ micropython/extmod
+ 0
+ 0
+ 0
+ 0
+
+ 13
+ 195
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\utime_mphal.c
+ utime_mphal.c
+ 0
+ 0
+
+
+ 13
+ 196
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_signal.c
+ machine_signal.c
+ 0
+ 0
+
+
+ 13
+ 197
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\virtpin.c
+ virtpin.c
+ 0
+ 0
+
+
+ 13
+ 198
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_mem.c
+ machine_mem.c
+ 0
+ 0
+
+
+
+
+ micropython/port
+ 0
+ 0
+ 0
+ 0
+
+ 14
+ 199
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\help.c
+ help.c
+ 0
+ 0
+
+
+ 14
+ 200
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mphalport.c
+ mphalport.c
+ 0
+ 0
+
+
+ 14
+ 201
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mpmain.c
+ mpmain.c
+ 0
+ 0
+
+
+ 14
+ 202
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mpthreadport.c
+ mpthreadport.c
+ 0
+ 0
+
+
+ 14
+ 203
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_hw_spi.c
+ machine_hw_spi.c
+ 0
+ 0
+
+
+ 14
+ 204
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_pin.c
+ machine_pin.c
+ 0
+ 0
+
+
+ 14
+ 205
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_timer.c
+ machine_timer.c
+ 0
+ 0
+
+
+ 14
+ 206
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_uart.c
+ machine_uart.c
+ 0
+ 0
+
+
+ 14
+ 207
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modesp8266.c
+ modesp8266.c
+ 0
+ 0
+
+
+ 14
+ 208
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modmachine.c
+ modmachine.c
+ 0
+ 0
+
+
+ 14
+ 209
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modutime.c
+ modutime.c
+ 0
+ 0
+
+
+ 14
+ 210
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos.c
+ vfs_tos.c
+ 0
+ 0
+
+
+ 14
+ 211
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos_file.c
+ vfs_tos_file.c
+ 0
+ 0
+
+
+ 14
+ 212
+ 1
+ 0
+ 0
+ 0
+ .\board\mphalboard.c
+ mphalboard.c
+ 0
+ 0
+
+
+
+
+ ::CMSIS
+ 0
+ 0
+ 0
+ 1
+
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvprojx b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvprojx
new file mode 100644
index 00000000..56bae191
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/BearPi_STM32L31RC.uvprojx
@@ -0,0 +1,1532 @@
+
+
+
+ 2.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+ TencentOS_tiny
+ 0x4
+ ARM-ADS
+ 5060750::V5.06 update 6 (build 750)::ARMCC
+ 0
+
+
+ STM32L431RCTx
+ STMicroelectronics
+ Keil.STM32L4xx_DFP.2.2.0
+ http://www.keil.com/pack
+ IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32L431RCTx$CMSIS\SVD\STM32L4x1.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\obj\
+ TencentOS_tiny
+ 1
+ 0
+ 1
+ 1
+ 0
+ .\list\
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make clean-build V=1
+ cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make genhdr V=1 PYTHON=python PORT_BOARD_DIR=$Pboard TARGET_GENHDR_DIR=$Pgenhdr
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP -MPU
+ DCM.DLL
+ -pCM4
+ SARMCM3.DLL
+ -MPU
+ TCM.DLL
+ -pCM4
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4096
+
+ 1
+ BIN\UL2CM3.DLL
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M4"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x10000
+
+
+ 1
+ 0x8000000
+ 0x40000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x40000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x10000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+
+
+ USE_HAL_DRIVER,STM32L431xx,WITH_TOS_NET_ADAPTER,USE_ESP8266,USE_MICROPYTHON
+
+ ..\..\BSP\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Legacy;..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L4xx\Include;..\..\..\..\platform\vendor_bsp\st\CMSIS\Include;..\..\..\..\kernel\core\include;..\..\TOS-CONFIG;..\..\..\..\platform\arch\arm\cortex-m4\keil;..\..\..\..\kernel\pm\include;..\..\..\..\osal\cmsis_os;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\net\at\include;..\..\..\..\kernel\hal\include;..\..\BSP\Hardware\LCD_ST7789;..\..\BSP\Hardware\BH1750;..\..\..\..\examples\micropython_demo;..\..\..\..\components\language\micropython;..\..\..\..\components\language\micropython\port;..\..\..\..\components\language\micropython\port\modules;..\micropython_basic_demo;.\board;.\board\hal
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+
+
+
+
+
+
+
+
+
+
+
+ Application/MDK-ARM
+
+
+ startup_stm32l431xx.s
+ 2
+ startup_stm32l431xx.s
+
+
+
+
+ Application/User
+
+
+ gpio.c
+ 1
+ ..\..\BSP\Src\gpio.c
+
+
+ main.c
+ 1
+ ..\..\BSP\Src\main.c
+
+
+ mcu_init.c
+ 1
+ ..\..\BSP\Src\mcu_init.c
+
+
+ stm32l4xx_hal_msp.c
+ 1
+ ..\..\BSP\Src\stm32l4xx_hal_msp.c
+
+
+ stm32l4xx_it_mpy.c
+ 1
+ ..\..\BSP\Src\stm32l4xx_it_mpy.c
+
+
+ usart.c
+ 1
+ ..\..\BSP\Src\usart.c
+
+
+ adc.c
+ 1
+ ..\..\BSP\Src\adc.c
+
+
+ i2c.c
+ 1
+ ..\..\BSP\Src\i2c.c
+
+
+ spi.c
+ 1
+ ..\..\BSP\Src\spi.c
+
+
+
+
+ examples
+
+
+ micropython_demo.c
+ 1
+ ..\..\..\..\examples\micropython_demo\micropython_demo.c
+
+
+
+
+ Drivers/STM32L4xx_HAL_Driver
+
+
+ stm32l4xx_hal_tim.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim.c
+
+
+ stm32l4xx_hal_tim_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim_ex.c
+
+
+ stm32l4xx_hal_uart.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c
+
+
+ stm32l4xx_hal_uart_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c
+
+
+ stm32l4xx_hal.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c
+
+
+ stm32l4xx_hal_i2c.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c
+
+
+ stm32l4xx_hal_i2c_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c_ex.c
+
+
+ stm32l4xx_hal_rcc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c
+
+
+ stm32l4xx_hal_rcc_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c
+
+
+ stm32l4xx_hal_flash.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash.c
+
+
+ stm32l4xx_hal_flash_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c
+
+
+ stm32l4xx_hal_flash_ramfunc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ramfunc.c
+
+
+ stm32l4xx_hal_gpio.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c
+
+
+ stm32l4xx_hal_dma.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c
+
+
+ stm32l4xx_hal_dma_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c
+
+
+ stm32l4xx_hal_pwr.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c
+
+
+ stm32l4xx_hal_pwr_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c
+
+
+ stm32l4xx_hal_cortex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c
+
+
+ stm32l4xx_hal_adc_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc_ex.c
+
+
+ stm32l4xx_hal_adc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc.c
+
+
+ stm32l4xx_hal_dac.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac.c
+
+
+ stm32l4xx_hal_dac_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac_ex.c
+
+
+ stm32l4xx_hal_spi.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi.c
+
+
+ stm32l4xx_hal_spi_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi_ex.c
+
+
+
+
+ Drivers/CMSIS
+
+
+ system_stm32l4xx.c
+ 1
+ ..\..\BSP\Src\system_stm32l4xx.c
+
+
+
+
+ Hardware
+
+
+ BH1750.c
+ 1
+ ..\..\BSP\Hardware\BH1750\BH1750.c
+
+
+ lcd_spi2_drv.c
+ 1
+ ..\..\BSP\Hardware\LCD_ST7789\lcd_spi2_drv.c
+
+
+
+
+ kernel
+
+
+ tos_mmblk.c
+ 1
+ ..\..\..\..\kernel\core\tos_mmblk.c
+
+
+ tos_mmheap.c
+ 1
+ ..\..\..\..\kernel\core\tos_mmheap.c
+
+
+ tos_mutex.c
+ 1
+ ..\..\..\..\kernel\core\tos_mutex.c
+
+
+ tos_sched.c
+ 1
+ ..\..\..\..\kernel\core\tos_sched.c
+
+
+ tos_sem.c
+ 1
+ ..\..\..\..\kernel\core\tos_sem.c
+
+
+ tos_sys.c
+ 1
+ ..\..\..\..\kernel\core\tos_sys.c
+
+
+ tos_task.c
+ 1
+ ..\..\..\..\kernel\core\tos_task.c
+
+
+ tos_tick.c
+ 1
+ ..\..\..\..\kernel\core\tos_tick.c
+
+
+ tos_time.c
+ 1
+ ..\..\..\..\kernel\core\tos_time.c
+
+
+ tos_timer.c
+ 1
+ ..\..\..\..\kernel\core\tos_timer.c
+
+
+ tos_event.c
+ 1
+ ..\..\..\..\kernel\core\tos_event.c
+
+
+ tos_global.c
+ 1
+ ..\..\..\..\kernel\core\tos_global.c
+
+
+ tos_pend.c
+ 1
+ ..\..\..\..\kernel\core\tos_pend.c
+
+
+ tos_robin.c
+ 1
+ ..\..\..\..\kernel\core\tos_robin.c
+
+
+ tos_binary_heap.c
+ 1
+ ..\..\..\..\kernel\core\tos_binary_heap.c
+
+
+ tos_char_fifo.c
+ 1
+ ..\..\..\..\kernel\core\tos_char_fifo.c
+
+
+ tos_completion.c
+ 1
+ ..\..\..\..\kernel\core\tos_completion.c
+
+
+ tos_countdownlatch.c
+ 1
+ ..\..\..\..\kernel\core\tos_countdownlatch.c
+
+
+ tos_mail_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_mail_queue.c
+
+
+ tos_message_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_message_queue.c
+
+
+ tos_priority_mail_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_mail_queue.c
+
+
+ tos_priority_message_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_message_queue.c
+
+
+ tos_priority_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_queue.c
+
+
+ tos_ring_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_ring_queue.c
+
+
+
+
+ hal
+
+
+ tos_hal_uart.c
+ 1
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_uart.c
+
+
+ mp_tos_hal_pin.c
+ 1
+ .\board\hal\mp_tos_hal_pin.c
+
+
+ mp_tos_hal_spi.c
+ 1
+ .\board\hal\mp_tos_hal_spi.c
+
+
+ mp_tos_hal_uart.c
+ 1
+ .\board\hal\mp_tos_hal_uart.c
+
+
+
+
+ cpu
+
+
+ port_s.S
+ 2
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S
+
+
+ tos_cpu.c
+ 1
+ ..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c
+
+
+ port_c.c
+ 1
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_c.c
+
+
+
+
+ config
+
+
+ tos_config.h
+ 5
+ ..\..\TOS-CONFIG\tos_config.h
+
+
+
+
+ micropython/py
+
+
+ argcheck.c
+ 1
+ ..\..\..\..\components\language\micropython\py\argcheck.c
+
+
+ asmarm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmarm.c
+
+
+ asmbase.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmbase.c
+
+
+ asmthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmthumb.c
+
+
+ asmx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmx64.c
+
+
+ asmx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmx86.c
+
+
+ asmxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmxtensa.c
+
+
+ bc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\bc.c
+
+
+ binary.c
+ 1
+ ..\..\..\..\components\language\micropython\py\binary.c
+
+
+ builtinevex.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinevex.c
+
+
+ builtinhelp.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinhelp.c
+
+
+ builtinimport.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinimport.c
+
+
+ compile.c
+ 1
+ ..\..\..\..\components\language\micropython\py\compile.c
+
+
+ emitbc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitbc.c
+
+
+ emitcommon.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitcommon.c
+
+
+ emitglue.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitglue.c
+
+
+ emitinlinethumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitinlinethumb.c
+
+
+ emitinlinextensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitinlinextensa.c
+
+
+ emitnarm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnarm.c
+
+
+ emitnative.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnative.c
+
+
+ emitnthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnthumb.c
+
+
+ emitnx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnx64.c
+
+
+ emitnx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnx86.c
+
+
+ emitnxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnxtensa.c
+
+
+ emitnxtensawin.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnxtensawin.c
+
+
+ formatfloat.c
+ 1
+ ..\..\..\..\components\language\micropython\py\formatfloat.c
+
+
+ frozenmod.c
+ 1
+ ..\..\..\..\components\language\micropython\py\frozenmod.c
+
+
+ gc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\gc.c
+
+
+ lexer.c
+ 1
+ ..\..\..\..\components\language\micropython\py\lexer.c
+
+
+ malloc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\malloc.c
+
+
+ map.c
+ 1
+ ..\..\..\..\components\language\micropython\py\map.c
+
+
+ modarray.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modarray.c
+
+
+ modbuiltins.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modbuiltins.c
+
+
+ modcmath.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modcmath.c
+
+
+ modcollections.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modcollections.c
+
+
+ modgc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modgc.c
+
+
+ modio.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modio.c
+
+
+ modmath.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modmath.c
+
+
+ modmicropython.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modmicropython.c
+
+
+ modstruct.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modstruct.c
+
+
+ modsys.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modsys.c
+
+
+ modthread.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modthread.c
+
+
+ moduerrno.c
+ 1
+ ..\..\..\..\components\language\micropython\py\moduerrno.c
+
+
+ mpprint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpprint.c
+
+
+ mpstate.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpstate.c
+
+
+ mpz.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpz.c
+
+
+ nativeglue.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nativeglue.c
+
+
+ nlr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlr.c
+
+
+ nlraarch64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlraarch64.c
+
+
+ nlrpowerpc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrpowerpc.c
+
+
+ nlrsetjmp.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrsetjmp.c
+
+
+ nlrthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrthumb.c
+
+
+ nlrx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrx64.c
+
+
+ nlrx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrx86.c
+
+
+ nlrxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrxtensa.c
+
+
+ obj.c
+ 1
+ ..\..\..\..\components\language\micropython\py\obj.c
+
+
+ objarray.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objarray.c
+
+
+ objattrtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objattrtuple.c
+
+
+ objbool.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objbool.c
+
+
+ objboundmeth.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objboundmeth.c
+
+
+ objcell.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objcell.c
+
+
+ objclosure.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objclosure.c
+
+
+ objcomplex.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objcomplex.c
+
+
+ objdeque.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objdeque.c
+
+
+ objdict.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objdict.c
+
+
+ objenumerate.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objenumerate.c
+
+
+ objexcept.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objexcept.c
+
+
+ objfilter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfilter.c
+
+
+ objfloat.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfloat.c
+
+
+ objfun.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfun.c
+
+
+ objgenerator.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objgenerator.c
+
+
+ objgetitemiter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objgetitemiter.c
+
+
+ objint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint.c
+
+
+ objint_longlong.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint_longlong.c
+
+
+ objint_mpz.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint_mpz.c
+
+
+ objlist.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objlist.c
+
+
+ objmap.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objmap.c
+
+
+ objmodule.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objmodule.c
+
+
+ objnamedtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objnamedtuple.c
+
+
+ objnone.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objnone.c
+
+
+ objobject.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objobject.c
+
+
+ objpolyiter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objpolyiter.c
+
+
+ objproperty.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objproperty.c
+
+
+ objrange.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objrange.c
+
+
+ objreversed.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objreversed.c
+
+
+ objset.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objset.c
+
+
+ objsingleton.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objsingleton.c
+
+
+ objslice.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objslice.c
+
+
+ objstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstr.c
+
+
+ objstringio.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstringio.c
+
+
+ objstrunicode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstrunicode.c
+
+
+ objtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objtuple.c
+
+
+ objtype.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objtype.c
+
+
+ objzip.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objzip.c
+
+
+ opmethods.c
+ 1
+ ..\..\..\..\components\language\micropython\py\opmethods.c
+
+
+ pairheap.c
+ 1
+ ..\..\..\..\components\language\micropython\py\pairheap.c
+
+
+ parse.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parse.c
+
+
+ parsenum.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parsenum.c
+
+
+ parsenumbase.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parsenumbase.c
+
+
+ persistentcode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\persistentcode.c
+
+
+ profile.c
+ 1
+ ..\..\..\..\components\language\micropython\py\profile.c
+
+
+ pystack.c
+ 1
+ ..\..\..\..\components\language\micropython\py\pystack.c
+
+
+ qstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\qstr.c
+
+
+ reader.c
+ 1
+ ..\..\..\..\components\language\micropython\py\reader.c
+
+
+ repl.c
+ 1
+ ..\..\..\..\components\language\micropython\py\repl.c
+
+
+ ringbuf.c
+ 1
+ ..\..\..\..\components\language\micropython\py\ringbuf.c
+
+
+ runtime.c
+ 1
+ ..\..\..\..\components\language\micropython\py\runtime.c
+
+
+ runtime_utils.c
+ 1
+ ..\..\..\..\components\language\micropython\py\runtime_utils.c
+
+
+ scheduler.c
+ 1
+ ..\..\..\..\components\language\micropython\py\scheduler.c
+
+
+ scope.c
+ 1
+ ..\..\..\..\components\language\micropython\py\scope.c
+
+
+ sequence.c
+ 1
+ ..\..\..\..\components\language\micropython\py\sequence.c
+
+
+ showbc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\showbc.c
+
+
+ smallint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\smallint.c
+
+
+ stackctrl.c
+ 1
+ ..\..\..\..\components\language\micropython\py\stackctrl.c
+
+
+ stream.c
+ 1
+ ..\..\..\..\components\language\micropython\py\stream.c
+
+
+ unicode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\unicode.c
+
+
+ vm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\vm.c
+
+
+ vstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\vstr.c
+
+
+ warning.c
+ 1
+ ..\..\..\..\components\language\micropython\py\warning.c
+
+
+
+
+ micropython/shared
+
+
+ readline.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\readline\readline.c
+
+
+ pyexec.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\pyexec.c
+
+
+ sys_stdio_mphal.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\sys_stdio_mphal.c
+
+
+ interrupt_char.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\interrupt_char.c
+
+
+ stdout_helpers.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\stdout_helpers.c
+
+
+
+
+ micropython/extmod
+
+
+ utime_mphal.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\utime_mphal.c
+
+
+ machine_signal.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_signal.c
+
+
+ virtpin.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\virtpin.c
+
+
+ machine_mem.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_mem.c
+
+
+
+
+ micropython/port
+
+
+ help.c
+ 1
+ ..\..\..\..\components\language\micropython\port\help.c
+
+
+ mphalport.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mphalport.c
+
+
+ mpmain.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mpmain.c
+
+
+ mpthreadport.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mpthreadport.c
+
+
+ machine_hw_spi.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_hw_spi.c
+
+
+ machine_pin.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_pin.c
+
+
+ machine_timer.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_timer.c
+
+
+ machine_uart.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_uart.c
+
+
+ modesp8266.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modesp8266.c
+
+
+ modmachine.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modmachine.c
+
+
+ modutime.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modutime.c
+
+
+ vfs_tos.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos.c
+
+
+ vfs_tos_file.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos_file.c
+
+
+ mphalboard.c
+ 1
+ .\board\mphalboard.c
+
+
+
+
+ ::CMSIS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/README.md b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/README.md
new file mode 100644
index 00000000..a4fed7df
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/README.md
@@ -0,0 +1,379 @@
+# 如何使用 TencentOS-tiny 上移植的 MicroPython 组件
+
+## 1 基础Keil工程
+
+### 1.1 源代码
+
+* micropython/py 组中添加
+ * components/language/micropython/py 目录下的 *.c 文件
+
+* micropython/shared 组中添加:
+ * components/language/micropython/shared/readline 目录下的 readline.c 文件
+ * components/language/micropython/shared/runtime 目录下的 pyexec.c, stdout_helpers.c, sys_stdio_mphal.c, interrupt_char.c 文件
+
+* micropython/extmod 组中添加:
+ * components/language/micropython/extmod 目录下的 utime_mphal.c, machine_signal.c, virtpin.c, machine_mem.c 文件
+
+* micropython/port 组中添加:
+ * components/language/micropython/port 目录下的 *.c 文件
+ * components/language/micropython/port/modules 目录下的 *.c 文件
+ * 工程目录中 board/ 目录下的 mphalboard.c 文件
+
+* hal 组中添加:
+ * 工程目录下 board/hal/ 目录下的 *.c 文件
+
+* examples 组中添加:
+ * examples/micropython_demo/micropython_demo.c文件
+
+### 1.2 头文件
+
+在工程配置界面 C/C++ 页面中的 Include Paths 中添加下列目录:
+
+
+
+* 添加 examples/micropython_demo
+* 添加 components/language/micropython
+* 添加 components/language/micropython/port
+* 添加 components/language/micropython/port/modules
+* 添加工程目录
+* 添加工程目录下的 board 目录
+* 添加工程目录下的 board/hal 目录
+
+### 1.3 其他选项
+
+在工程配置界面的 C/C++ 页面下勾选 GNU extensions 选项,并在 Define 中添加 `USE_MICROPYTHON`。
+
+
+
+### 1.4 编译脚本
+
+MicroPython 采用了字符串驻留(String interning)技术节省 ROM 和 RAM 空间,在工程编译前需要先生成内部字符串 QSTR(uniQue STRing)。本工程中采用 Makefile 搜索代码中所有需要预先生成的 QSTR,然后在工程目录下的 genhdr 目录中生成 qstrdefs.generated.h 等文件。关于QSTR的更详细信息,可以在[官方文档](https://docs.micropython.org/en/latest/develop/qstr.html)中获取。
+
+在工程配置界面 User 页面下的 Before Build/Rebuild 中添加以下两个命令:
+
+```shell
+cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make clean-build V=1
+```
+
+```shell
+cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make genhdr V=1 PYTHON=python PORT_BOARD_DIR=$Pboard TARGET_GENHDR_DIR=$Pgenhdr
+```
+
+
+
+该命令的作用是生成工程目录下的 genhdr 目录中的头文件,这些头文件通常只有在修改配置之后才需要重新生成,因此**在不修改配置的情况下,不需要勾选这两个命令**。
+
+> 使用前请确保安装了make等unix工具,gcc工具链以及Python3,并将它们加入到系统环境变量中。如果没有安装,gcc工具链和unix命令行工具可以在MinGW中获取。访问[MinGW官方网站](https://www.mingw-w64.org/)和[Python官方网站](https://www.python.org/)分别可以获取MinGW和Python的相关信息。
+
+第二条命令中指定了多个变量的值,这些变量的含义分别是:
+
+* **PYTHON**:表示命令行可以使用的python命令,根据当前环境中的python命令修改
+* PORT_BOARD_DIR:表示与开发板相关的代码目录,该目录下至少需要包含mpconfigboard.h 文件和 mphalboard.h 文件
+* TARGET_GENHDR_DIR:表示生成的头文件所在的代码目录
+
+### 1.5 外部Flash扩展
+
+> 该功能目前只能在小熊派开发板上使用
+
+MicroPython对ROM的需求量较大,上述基础Keil工程编译后需要占用239.70kB的ROM空间,对于包括ROM空间较少的开发板(比如:小熊派开发板)不太友好,为了能够在这样的开发板上运行更加完整的MicroPython功能,可以利用开发板的外部Flash对ROM空间进行扩展。
+
+1. micropython_extra_demo 工程目录下包含了小熊派开发板的Keil外部Flash下载算法文件 BearPi_W25Q64JV.FLM,将该文件拷贝到 **/ARM/Flash** 目录下。
+
+2. 在Keil工程中配置外部 ROM,并选择 Flash 下载算法
+
+ * 在工程配置的 Target 页面中,添加一个 ROM 区域,起始地址为 **0x90000000**,区域大小为 **0x800000**(ROM区域大小取决于外部 Flash 芯片容量)
+
+ 
+
+ * 在 Debug 页面中,点击右上角的 Settings,选择 Flash Download 选项卡,进入下图界面
+
+ 
+
+ * 添加描述为**“BearPi W25Q84JV 8MB Flash”**的 Flash 下载算法,并将右上角的 Size 调整到**0x8000**。
+
+3. 将特定文件或者组的存储位置改到外部 ROM 中。
+
+ 
+
+4. 添加 W25Q64JV 的驱动代码,启用内存映射模式。(在 MicroPython 的工程中,只需要启用第二节 “[功能配置和扩展](#2-功能配置和扩展)” 中的`MP_USING_QSPI_FLASH`宏并添加相应文件即可)
+
+> 中断相关的代码以及内存映射模式启动前就需要执行的代码,不能放在外部 Flash 中。推荐将 MicroPython 相关的代码(除了移植的代码)都放在外部 Flash 中。
+
+## 2 功能配置和扩展
+
+与开发板相关的配置文件主要包括 mpconfigboard.h 和 mphalboard.h/c,其中 mpconfigboard.h 包含对 MicroPython 的配置,mphalboard.h/c 包含开发板特有的 MicroPython 函数的部分功能实现。
+
+mpconfigboard.h 主要由宏定义构成,可以使用的定义以及对应的含义如下表:
+
+| 名称 | 含义 | 取值范围 | 说明 |
+| ------------------------ | ------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------ |
+| MICROPY_HW_BOARD_NAME | 开发板名称 | 字符串 | |
+| MICROPY_HW_MCU_NAME | 微控制器名称 | 字符串 | |
+| MICROPY_HW_UART_NUM | UART数量 | 整数 | 需要与 tos_hal 的实现一致 |
+| MICROPY_HW_UART_REPL | 用于 MicroPython 交互式命令行的 UART 的编号 | 整数 | 需要与 tos_hal 的实现一致 |
+| MICROPY_HW_SPI_NUM | SPI 数量 | 整数 | 需要与 tos_hal 的实现一致 |
+| MICROPY_CONFIG_ROM_LEVEL | ROM 水平 | MICROPY_CONFIG_ROM_LEVEL
\_\_FEATURES | 代表 MicroPython 的功能裁剪程度,这里只列出两个典型值,其他取值需要参考 py/mpconfig.h 文件 |
+
+除了以上配置之外,还有一些可选的功能配置,采用定义`MP_USING_xxx`宏的形式进行功能扩展:
+
+| 宏定义 | 描述 | 依赖的文件/组件 |
+| ------------------------------------------ | --------------------------------- | ------------------------------------------------------------ |
+| MP_USING_QSPI_FLASH | 使用外部QSPI-Flash扩展内部ROM空间 | 开发板目录/BSP/Hardware/W25Qxx-QSPI/w25qxx.c,详见第一节的外部Flash扩展部分 |
+| MP_USING_VFS | 启用uos模块,启用VFS功能 | tos_vfs组件,
extmod/vfs.c,
extmod/vfs_reader.c,
extmod/moduos.c |
+| MP_USING_MACHINE_SPI | 在umachine库中启用SPI功能 | extmod/machine_spi.c,
drivers/bus/softspi.c, |
+| MP_USING_MACHINE_I2C | 在umachine库中启用I2C功能 | extmod/machine_i2c.c |
+| MP_USING_NETWORK | 启用network模块 | socket_wrapper组件,
sal_wrapper组件,
extmod/modnetwork.c,
extmod/modusocket.c,
shared/netutils/netutils.c |
+| MP_USING_USELECT | 启用uselect模块 | extmod/moduselect.c |
+| 以下模块在ROM_LEVEL为EXTRA的时候会默认启用 | ----- | ----- |
+| MP_USING_CMATH | 启用cmath模块 | - |
+| MP_USING_UASYNCIO | 启用uasyncio模块 | extmod/moduasyncio.c |
+| MP_USING_UCTYPES | 启用uctypes模块 | extmod/moductypes.c |
+| MP_USING_UZLIBS | 启用uzlibs模块 | extmod/moduzlibs.c |
+| MP_USING_UJSON | 启用ujson模块 | extmod/modujson.c |
+| MP_USING_URE | 启用ure模块 | extmod/modure.c |
+| MP_USING_HEAPQ | 启用uheapq模块 | extmod/moduheapq.c |
+| MP_USING_UHASHLIB | 启用uhashlib模块 | extmod/moduhashlib.c |
+| MP_USING_UBINASCII | 启用ubinascii模块 | extmod/modubinascii.c |
+| MP_USING_URANDOM | 启用urandom模块 | extmod/modurandom.c |
+| MP_USING_FRAMEBUF | 启用framebuf模块 | extmod/modframebuf.c |
+
+## 3 使用MicroPython
+
+下载 MicroPython 固件后,可以使用支持串口功能的 shell 连接到 MicroPython 的交互式解释器(REPL)上,也可以使用 MicroPython 提供的 mpremote 工具连接到 REPL。REPL 所关联的串口由第二节 “[功能配置和扩展](#2-功能配置和扩展)” 中的 `MICROPY_HW_UART_REPL` 宏设定。
+
+### 3.1 mpremote
+
+#### 3.1.1 使用 pip 安装 mpremote
+
+```shell
+pip install mpremote
+```
+
+#### 3.1.2 使用 mpremote 可以在常规的 shell 上连接到串口 REPL
+
+```shell
+mpremote connect
+```
+
+例如:连接COM14端口
+
+```shell
+mpremote connect COM14
+```
+
+按下 ”Ctrl-]“ 可以退出REPL
+
+#### 3.1.3 使用 mpremote 还可以在开发板上执行本地的 python 脚本
+
+ ```shell
+mpremote connect run
+ ```
+
+例如:使用mpremote运行示例脚本led.py文件
+
+ ```shell
+mpremote connect COM14 run ./led.py
+ ```
+
+mpremote还包含其他功能,参考[官方文档]( https://docs.micropython.org/en/latest/reference/mpremote.html)了解详情。
+
+### 3.2 REPL
+
+#### 3.2.1 help() 命令
+
+进入 REPL 后,可以使用 help() 命令,查看与 MicroPython 控制命令相关的提示信息:
+
+
+
+其中 Ctrl-C 可以用来中断正在运行的程序,Ctrl-D 可以用来软复位,Ctrl-E 可以进入粘贴模式。
+
+#### 3.2.2 help('modules') 命令
+
+在交互式解释器中可以使用 help('modules') 命令查看当前可以引入的模块:
+
+
+
+#### 3.2.3 粘贴模式
+
+在正常交互模式下,输入 Ctrl-E 可以进入粘贴模式。
+
+在粘贴模式下可以方便地将 python 脚本粘贴到 REPL 中。
+
+> 由于输入缓冲区大小只有512B,所以比较长的脚本需要分段粘贴。
+
+粘贴完成后,输入 Ctrl-D 可以退出粘贴模式,并开始执行脚本。
+
+下图展示了使用粘贴模式粘贴 pin.py 脚本的情况:
+
+
+
+#### 3.2.4 其他功能
+
+REPL还有自动缩进,自动补全以及特殊变量"_"等功能,详细内容可以参考[官方文档](https://docs.micropython.org/en/latest/reference/repl.html)。
+
+### 3.3 自动执行脚本
+
+对于启用文件系统的 MicroPython 工程,可以在文件系统根目录中存放 boot.py 和 main.py 脚本,这两个脚本会在 MicroPython 启动时依次执行。
+
+## 4 示例工程和示例脚本说明
+
+### 4.1 示例工程
+
+项目针对小熊派开发板提供了两个不同的示例工程:
+
+* micropython_basic_demo 是一个基础版的 MicroPython 工程,在第一节 ”[基础Keil工程](#1-基础Keil工程)“ 中给出了比较详细的该工程的创建流程。该工程包含了 MicroPython 的REPL功能、_thread线程模块功能以及基本的 machine 模块功能。
+* micropython_extra_demo 是在 micropython_basic_demo 工程的基础上,参考第二节 “[功能配置和扩展](#2-功能配置和扩展)” 中的内容进行配置得到的扩展版的 MicroPython 工程。由于小熊派开发板的 ROM 不足以支持所有的 MicroPython 功能,该工程内使用了外部 Flash 扩展 ROM 容量。该工程在 micropython_basic_demo 工程的基础上,添加了 MicroPython 的一系列扩展模块,还添加了uos 模块以及 network 模块等移植模块。
+
+### 4.2 示例脚本
+
+在工程目录下的 scripts 目录中给出了三个示例脚本文件:
+
+* pin.py:脚本展示了 umachine 模块和 utime 模块的使用方式
+
+ ```python
+ import umachine as machine
+ import utime as time
+
+ running = True
+
+ def key1_irq_callback(pin):
+ if pin.value() == 0:
+ print('Key1 is pressed')
+ else:
+ print('Key1 is released')
+
+ def key2_irq_callback(pin):
+ global running
+ running = False
+
+ if __name__ == '__main__':
+
+ led = machine.Pin("LED", mode=machine.Pin.OUT)
+ key1 = machine.Pin("KEY1", mode=machine.Pin.IN_PULLUP)
+ key1.irq(trigger=machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING, handler=key1_irq_callback)
+ key2 = machine.Pin("KEY2", mode=machine.Pin.IN_PULLUP)
+ key2.irq(trigger=machine.Pin.IRQ_FALLING, handler=key2_irq_callback)
+
+ while running:
+ led.on()
+ time.sleep(0.5)
+ led.off()
+ time.sleep(0.5)
+ ```
+
+ 脚本运行现象是:LED每过0.5s亮灭变化一次;按下按键1,打印一行文本 ”key1 is pressed“,释放按键1,打印一行文本 ”key1 is released“;按下按键2,LED不再闪烁,脚本退出。
+
+* thread.py:脚本展示了 _thread 模块的使用方法
+
+ ```python
+ import _thread
+
+ lock = _thread.allocate_lock()
+ n_thread = 4
+ n_finished = 0
+
+ def thread_entry(no):
+ print(no)
+ with lock:
+ global n_finished
+ n_finished += 1
+
+ if __name__ == '__main__':
+ for i in range(n_thread):
+ _thread.start_new_thread(thread_entry, (i,))
+
+ while n_finished < n_thread:
+ pass
+ print("done")
+ ```
+
+ 脚本运行现象是:创建四个线程,序号分别为0~3,每个线程打印自己的序号后退出。
+
+* os.py:该脚本展示了 uos 模块中的文件操作和目录操作
+
+ > 该脚本只有在启用 VFS 的前提下才能运行
+
+ ```python
+ import uos as os
+
+ # test mkdir()
+ print('{:-^40}'.format('test mkdir'))
+ print(os.listdir())
+ os.mkdir('test_dir')
+ print(os.listdir())
+
+ # test file open() and write()
+ print('{:-^40}'.format('test write'))
+ f = open('test_dir/test_file', 'w')
+ f.write("Hello TencentOS-tiny\n")
+ print("Hello MicroPython", file=f)
+ f.close()
+ print(os.listdir('test_dir'))
+
+ # test file open() and read()
+ print('{:-^40}'.format('test read'))
+ f = open('test_dir/test_file', 'r')
+ print(f.readlines())
+ f.close()
+
+ # test 'with' statement and iterator
+ print('{:-^40}'.format('test with statement'))
+ with open('test_dir/test_file', 'r') as file:
+ for line in file:
+ print(line)
+
+ # test rename()
+ print('{:-^40}'.format('test rename'))
+ os.rename('test_dir', 'test_dir2')
+ print(os.listdir())
+ print(os.listdir('test_dir2'))
+
+ # test unlink()
+ print('{:-^40}'.format('test unlink'))
+ os.unlink('test_dir2/test_file')
+ print(os.listdir('test_dir2'))
+ os.unlink('test_dir2')
+ print(os.listdir())
+ ```
+
+ 脚本运行现象是:输出以下内容
+
+ ```
+ ---------------test mkdir---------------
+ ['System Volume Information']
+ ['test_dir', 'System Volume Information']
+ ---------------test write---------------
+ ['test_file']
+ ---------------test read----------------
+ ['Hello TencentOS-tiny\n', 'Hello MicroPython\n']
+ ----------test with statement-----------
+ Hello TencentOS-tiny
+
+ Hello MicroPython
+
+ --------------test rename---------------
+ ['System Volume Information', 'test_dir2']
+ ['test_file']
+ --------------test unlink---------------
+ []
+['System Volume Information']
+ ```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.c b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.c
new file mode 100644
index 00000000..1090378b
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.c
@@ -0,0 +1,273 @@
+#include "tos_k.h"
+#include "mp_tos_hal_pin.h"
+#include "gpio.h"
+
+#define ST_EXTI_VECTOR_SIZE 16
+
+#define ST_PORT_NUM(port) ((uint8_t)((port) >> 4) & 0x0F)
+#define ST_PIN_NUM(port) ((uint8_t)((port) & 0x0F))
+
+__STATIC__ hal_pin_cb_t hal_pin_irq_handler[ST_EXTI_VECTOR_SIZE];
+__STATIC__ void *hal_pin_irq_handler_arg[ST_EXTI_VECTOR_SIZE];
+__STATIC__ GPIO_TypeDef *hal_pin_irq_gpio[ST_EXTI_VECTOR_SIZE];
+
+__STATIC__ const uint8_t nvic_irq_channel[ST_EXTI_VECTOR_SIZE] = {
+ EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
+ EXTI4_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn,
+ EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
+ EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
+};
+
+__STATIC__ int mask2no(uint32_t mask) {
+ for (int i = 0; i < 32; i++) {
+ if ((1U << i) == mask) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ GPIO_InitTypeDef gpio_init;
+
+ if (!pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)(GPIOA_BASE + ST_PORT_NUM(port) * 0x0400UL);
+ gpio_pin = 1UL << ST_PIN_NUM(port);
+
+ gpio_init.Pin = gpio_pin;
+ gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
+ switch (mode) {
+ case HAL_PIN_MODE_OUTPUT:
+ gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_OUTPUT_OD:
+ gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_INPUT:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLUP:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_PULLUP;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLDOWN:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_PULLDOWN;
+ break;
+ default:
+ return -1;
+ }
+ HAL_GPIO_Init((GPIO_TypeDef *)gpiox, &gpio_init);
+
+ pin->port = port;
+ pin->private_gpio = gpiox;
+ pin->private_pin = gpio_pin;
+ pin->mode = mode;
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ GPIO_InitTypeDef gpio_init;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+ if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
+ return -1;
+ }
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
+ TOS_CPU_INT_ENABLE();
+ return -1;
+ }
+
+ if (irq == HAL_PIN_IRQ_NONE) {
+ hal_pin_irq_gpio[gpio_pin_num] = NULL;
+ hal_pin_irq_handler[gpio_pin_num] = NULL;
+ hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
+ TOS_CPU_INT_ENABLE();
+ HAL_NVIC_DisableIRQ(nvic_irq_channel[gpio_pin_num]);
+ } else {
+ hal_pin_irq_gpio[gpio_pin_num] = gpiox;
+ TOS_CPU_INT_ENABLE();
+ gpio_init.Pin = gpio_pin;
+ gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
+ gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
+ switch (irq) {
+ case HAL_PIN_IRQ_RISING:
+ gpio_init.Mode = GPIO_MODE_IT_RISING;
+ break;
+ case HAL_PIN_IRQ_FALLING:
+ gpio_init.Mode = GPIO_MODE_IT_FALLING;
+ break;
+ case HAL_PIN_IRQ_RISING_FALLING:
+ gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
+ break;
+ }
+ switch (pin->mode) {
+ case HAL_PIN_MODE_INPUT_PULLUP:
+ gpio_init.Pull = GPIO_PULLUP;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLDOWN:
+ gpio_init.Pull = GPIO_PULLDOWN;
+ break;
+ default:
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ }
+ HAL_GPIO_Init(gpiox, &gpio_init);
+ HAL_NVIC_SetPriority(nvic_irq_channel[gpio_pin_num], 2, 0);
+ HAL_NVIC_EnableIRQ(nvic_irq_channel[gpio_pin_num]);
+
+ pin->irq = irq;
+ }
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+ if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
+ return -1;
+ }
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
+ TOS_CPU_INT_ENABLE();
+ return -1;
+ }
+ hal_pin_irq_handler[gpio_pin_num] = gpiox;
+ hal_pin_irq_handler[gpio_pin_num] = callback;
+ hal_pin_irq_handler_arg[gpio_pin_num] = cb_arg;
+ TOS_CPU_INT_ENABLE();
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_write(hal_pin_t *pin, int state)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+
+ HAL_GPIO_WritePin(gpiox, gpio_pin, (state == 0) ? GPIO_PIN_RESET : GPIO_PIN_SET);
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_read(hal_pin_t *pin)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+
+ return (HAL_GPIO_ReadPin(gpiox, gpio_pin) == GPIO_PIN_RESET) ? 0 : 1;
+}
+
+__API__ int tos_hal_pin_deinit(hal_pin_t *pin)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] == gpiox) {
+ hal_pin_irq_gpio[gpio_pin_num] = NULL;
+ hal_pin_irq_handler[gpio_pin_num] = NULL;
+ hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
+ }
+ TOS_CPU_INT_ENABLE();
+ HAL_GPIO_DeInit(gpiox, gpio_pin);
+
+ return 0;
+}
+
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ uint32_t gpio_pin_num = mask2no(GPIO_Pin);
+ hal_pin_cb_t callback;
+ uint32_t cb_arg;
+ if (gpio_pin_num < ST_EXTI_VECTOR_SIZE) {
+
+ callback = hal_pin_irq_handler[gpio_pin_num];
+ cb_arg = hal_pin_irq_handler_arg[gpio_pin_num];
+ if (callback) {
+ callback(cb_arg);
+ }
+ }
+}
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.h
new file mode 100644
index 00000000..6ac564d1
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_pin.h
@@ -0,0 +1,45 @@
+#ifndef _TOS_HAL_PIN_H_
+#define _TOS_HAL_PIN_H_
+
+typedef unsigned char hal_pin_port_t;
+
+typedef enum hal_pin_mode_en {
+ HAL_PIN_MODE_OUTPUT = 0,
+ HAL_PIN_MODE_OUTPUT_OD,
+ HAL_PIN_MODE_INPUT,
+ HAL_PIN_MODE_INPUT_PULLUP,
+ HAL_PIN_MODE_INPUT_PULLDOWN,
+} hal_pin_mode_t;
+
+typedef enum hal_pin_irq_en {
+ HAL_PIN_IRQ_NONE = 0x00,
+ HAL_PIN_IRQ_RISING = 0x01,
+ HAL_PIN_IRQ_FALLING = 0x02,
+ HAL_PIN_IRQ_RISING_FALLING = 0x03,
+} hal_pin_irq_t;
+
+typedef struct hal_pin_st {
+ hal_pin_port_t port;
+ void *private_gpio;
+ void *private_pin;
+ hal_pin_mode_t mode;
+ hal_pin_irq_t irq;
+} hal_pin_t;
+
+
+typedef void (*hal_pin_cb_t)(void *arg);
+
+__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode);
+
+__API__ int tos_hal_pin_write(hal_pin_t *pin, int state);
+
+__API__ int tos_hal_pin_read(hal_pin_t *pin);
+
+__API__ int tos_hal_pin_mode(hal_pin_t *pin, hal_pin_mode_t mode);
+
+__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq);
+
+__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg);
+
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.c b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.c
new file mode 100644
index 00000000..b4f58be9
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.c
@@ -0,0 +1,80 @@
+#include "tos_k.h"
+#include "mp_tos_hal_spi.h"
+#include "stm32l4xx_hal.h"
+#include "spi.h"
+
+__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port)
+{
+ if (!spi) {
+ return -1;
+ }
+
+ if (port == HAL_SPI_PORT_1) {
+ spi->private_spi = &hspi1;
+ MX_SPI1_Init();
+ } else if (port == HAL_SPI_PORT_2) {
+ spi->private_spi = &hspi2;
+ MX_SPI2_Init();
+ } else if (port == HAL_SPI_PORT_3) {
+ spi->private_spi = &hspi3;
+ MX_SPI3_Init();
+ } else {
+ return -1;
+ }
+
+ return 0;
+}
+
+__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout)
+{
+ HAL_StatusTypeDef hal_status;
+ SPI_HandleTypeDef *spi_handle;
+
+ if (!spi || (!send_buf && !recv_buf)) {
+ return -1;
+ }
+
+ if (!spi->private_spi) {
+ return -1;
+ }
+
+ spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
+
+ if (send_buf && recv_buf) {
+ hal_status = HAL_SPI_TransmitReceive(spi_handle, send_buf, recv_buf, size, timeout);
+ } else if (send_buf) {
+ hal_status = HAL_SPI_Transmit(spi_handle, send_buf, size, timeout);
+ } else if (recv_buf) {
+ hal_status = HAL_SPI_Receive(spi_handle, send_buf, size, timeout);
+ }
+
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+ return 0;
+}
+
+__API__ int tos_hal_spi_deinit(hal_spi_t *spi)
+{
+ HAL_StatusTypeDef hal_status;
+ SPI_HandleTypeDef *spi_handle;
+
+ if (!spi) {
+ return -1;
+ }
+
+ if (!spi->private_spi) {
+ return -1;
+ }
+
+ spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
+
+ hal_status = HAL_SPI_DeInit(spi_handle);
+ HAL_SPI_MspDeInit(spi_handle);
+
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.h
new file mode 100644
index 00000000..6dad4e9f
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_spi.h
@@ -0,0 +1,22 @@
+#ifndef _TOS_HAL_SPI_H_
+#define _TOS_HAL_SPI_H_
+
+typedef enum hal_spi_port_en {
+ HAL_SPI_PORT_0 = 0,
+ HAL_SPI_PORT_1,
+ HAL_SPI_PORT_2,
+ HAL_SPI_PORT_3,
+} hal_spi_port_t;
+
+typedef struct hal_spi_st {
+ hal_spi_port_t port;
+ void *private_spi;
+} hal_spi_t;
+
+__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port);
+
+__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout);
+
+__API__ int tos_hal_spi_deinit(hal_spi_t *spi);
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.c b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.c
new file mode 100644
index 00000000..a86dd40d
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.c
@@ -0,0 +1,26 @@
+#include "tos_k.h"
+#include "mp_tos_hal_uart.h"
+#include "stm32l4xx_hal.h"
+#include "usart.h"
+
+__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size)
+{
+ HAL_StatusTypeDef hal_status;
+ UART_HandleTypeDef *uart_handle;
+
+ if (!uart || !buf) {
+ return -1;
+ }
+
+ if (!uart->private_uart) {
+ return -1;
+ }
+
+ uart_handle = (UART_HandleTypeDef *)uart->private_uart;
+
+ hal_status = HAL_UART_Receive_IT(uart_handle, (uint8_t *)buf, size);
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+ return 0;
+}
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.h
new file mode 100644
index 00000000..31b79dbf
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/hal/mp_tos_hal_uart.h
@@ -0,0 +1,8 @@
+#ifndef _MP_TOS_HAL_UART_H_
+#define _MP_TOS_HAL_UART_H_
+
+#include "tos_hal_uart.h"
+
+__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size);
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mpconfigboard.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mpconfigboard.h
new file mode 100644
index 00000000..326a2eb3
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mpconfigboard.h
@@ -0,0 +1,10 @@
+/* board specific config */
+#define MICROPY_HW_BOARD_NAME "BearPi"
+#define MICROPY_HW_MCU_NAME "STM32F431RC"
+
+#define MICROPY_HW_UART_NUM 4
+#define MICROPY_HW_UART_REPL 2
+#define MICROPY_HW_SPI_NUM 4
+
+/* project specific config */
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_BASIC_FEATURES)
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mpconfigboard.mk b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mpconfigboard.mk
new file mode 100644
index 00000000..e69de29b
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.c b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.c
new file mode 100644
index 00000000..58d8f0a0
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.c
@@ -0,0 +1,109 @@
+
+#include "py/mpconfig.h"
+#include "py/mphal.h"
+#include "py/obj.h"
+#include "py/runtime.h"
+
+#include "modmachine.h"
+
+#if !(MP_GEN_HDR)
+#include "tos_k.h"
+#include "main.h"
+#endif
+
+/********************** Tick *************************/
+
+static uint32_t systick_get_us() {
+ // get systick value
+ uint32_t counter = SysTick->VAL;
+ uint32_t load = SysTick->LOAD;
+
+ // convert from decrementing to incrementing
+ counter = load - counter;
+
+ return (counter * 1000) / (load + 1);
+}
+
+mp_uint_t mp_hal_ticks_us(void) {
+ uint32_t ms = tos_tick2millisec(tos_systick_get());
+ uint32_t us = systick_get_us();
+ return ms * 1000 + us;
+}
+
+void mp_hal_delay_us(mp_uint_t usec) {
+ mp_uint_t ms = usec / 1000;
+ mp_uint_t us = usec % 1000;
+ if (ms > 0)
+ mp_hal_delay_ms(ms);
+ mp_uint_t start = mp_hal_ticks_us();
+ while (mp_hal_ticks_us() - start < us) {
+ }
+}
+
+/********************** GPIO *************************/
+
+#define ST_PIN(port_num, pin_num) ((uint8_t)(((port_num) << 4) & 0xF0) | ((pin_num) & 0x0F))
+
+STATIC const mp_rom_map_elem_t machine_pins_locals_dict_table[] = {
+
+ { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_INT(ST_PIN(0, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_INT(ST_PIN(0, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_INT(ST_PIN(0, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_INT(ST_PIN(0, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_INT(ST_PIN(0, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_INT(ST_PIN(0, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_INT(ST_PIN(0, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_INT(ST_PIN(0, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_INT(ST_PIN(0, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_INT(ST_PIN(0, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_INT(ST_PIN(0, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_INT(ST_PIN(0, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_INT(ST_PIN(0, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_A13), MP_ROM_INT(ST_PIN(0, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_A14), MP_ROM_INT(ST_PIN(0, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_A15), MP_ROM_INT(ST_PIN(0, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_INT(ST_PIN(1, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_B1), MP_ROM_INT(ST_PIN(1, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_B2), MP_ROM_INT(ST_PIN(1, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_B3), MP_ROM_INT(ST_PIN(1, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_B4), MP_ROM_INT(ST_PIN(1, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_B5), MP_ROM_INT(ST_PIN(1, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_B6), MP_ROM_INT(ST_PIN(1, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_B7), MP_ROM_INT(ST_PIN(1, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_B8), MP_ROM_INT(ST_PIN(1, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_B9), MP_ROM_INT(ST_PIN(1, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_B10), MP_ROM_INT(ST_PIN(1, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_B11), MP_ROM_INT(ST_PIN(1, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_INT(ST_PIN(1, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_B13), MP_ROM_INT(ST_PIN(1, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_B14), MP_ROM_INT(ST_PIN(1, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_B15), MP_ROM_INT(ST_PIN(1, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_C0), MP_ROM_INT(ST_PIN(2, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_C1), MP_ROM_INT(ST_PIN(2, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_C2), MP_ROM_INT(ST_PIN(2, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_C3), MP_ROM_INT(ST_PIN(2, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_C4), MP_ROM_INT(ST_PIN(2, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_C5), MP_ROM_INT(ST_PIN(2, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_C6), MP_ROM_INT(ST_PIN(2, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_C7), MP_ROM_INT(ST_PIN(2, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_C8), MP_ROM_INT(ST_PIN(2, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_C9), MP_ROM_INT(ST_PIN(2, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_C10), MP_ROM_INT(ST_PIN(2, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_C11), MP_ROM_INT(ST_PIN(2, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_C12), MP_ROM_INT(ST_PIN(2, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_C13), MP_ROM_INT(ST_PIN(2, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_C14), MP_ROM_INT(ST_PIN(2, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_C15), MP_ROM_INT(ST_PIN(2, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_INT(ST_PIN(3, 2)) },
+
+ { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_INT(ST_PIN(2, 13)) }, // C13
+ { MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_INT(ST_PIN(1, 2)) }, // B2
+ { MP_ROM_QSTR(MP_QSTR_KEY2), MP_ROM_INT(ST_PIN(1, 3)) }, // B3
+
+};
+MP_DEFINE_CONST_DICT(machine_pins_locals_dict, machine_pins_locals_dict_table);
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.h
new file mode 100644
index 00000000..bebb5f6d
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/board/mphalboard.h
@@ -0,0 +1,11 @@
+#ifndef _MPHALBOARD_H_
+#define _MPHALBOARD_H_
+
+#include "py/obj.h"
+
+extern mp_uint_t mp_hal_ticks_us(void);
+extern void mp_hal_delay_us(mp_uint_t usec);
+
+extern const mp_obj_dict_t machine_pins_locals_dict;
+
+#endif /* _MPHALBOARD_H_ */
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/moduledefs.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/moduledefs.h
new file mode 100644
index 00000000..b8a66465
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/moduledefs.h
@@ -0,0 +1,65 @@
+// Automatically generated by makemoduledefs.py.
+
+extern const struct _mp_obj_module_t mp_module___main__;
+#undef MODULE_DEF_MP_QSTR___MAIN__
+#define MODULE_DEF_MP_QSTR___MAIN__ { MP_ROM_QSTR(MP_QSTR___main__), MP_ROM_PTR(&mp_module___main__) },
+
+extern const struct _mp_obj_module_t mp_module_thread;
+#undef MODULE_DEF_MP_QSTR__THREAD
+#define MODULE_DEF_MP_QSTR__THREAD { MP_ROM_QSTR(MP_QSTR__thread), MP_ROM_PTR(&mp_module_thread) },
+
+extern const struct _mp_obj_module_t mp_module_builtins;
+#undef MODULE_DEF_MP_QSTR_BUILTINS
+#define MODULE_DEF_MP_QSTR_BUILTINS { MP_ROM_QSTR(MP_QSTR_builtins), MP_ROM_PTR(&mp_module_builtins) },
+
+extern const struct _mp_obj_module_t mp_module_gc;
+#undef MODULE_DEF_MP_QSTR_GC
+#define MODULE_DEF_MP_QSTR_GC { MP_ROM_QSTR(MP_QSTR_gc), MP_ROM_PTR(&mp_module_gc) },
+
+extern const struct _mp_obj_module_t mp_module_math;
+#undef MODULE_DEF_MP_QSTR_MATH
+#define MODULE_DEF_MP_QSTR_MATH { MP_ROM_QSTR(MP_QSTR_math), MP_ROM_PTR(&mp_module_math) },
+
+extern const struct _mp_obj_module_t mp_module_micropython;
+#undef MODULE_DEF_MP_QSTR_MICROPYTHON
+#define MODULE_DEF_MP_QSTR_MICROPYTHON { MP_ROM_QSTR(MP_QSTR_micropython), MP_ROM_PTR(&mp_module_micropython) },
+
+extern const struct _mp_obj_module_t mp_module_uarray;
+#undef MODULE_DEF_MP_QSTR_UARRAY
+#define MODULE_DEF_MP_QSTR_UARRAY { MP_ROM_QSTR(MP_QSTR_uarray), MP_ROM_PTR(&mp_module_uarray) },
+
+extern const struct _mp_obj_module_t mp_module_collections;
+#undef MODULE_DEF_MP_QSTR_UCOLLECTIONS
+#define MODULE_DEF_MP_QSTR_UCOLLECTIONS { MP_ROM_QSTR(MP_QSTR_ucollections), MP_ROM_PTR(&mp_module_collections) },
+
+extern const struct _mp_obj_module_t mp_module_machine;
+#undef MODULE_DEF_MP_QSTR_UMACHINE
+#define MODULE_DEF_MP_QSTR_UMACHINE { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) },
+
+extern const struct _mp_obj_module_t mp_module_ustruct;
+#undef MODULE_DEF_MP_QSTR_USTRUCT
+#define MODULE_DEF_MP_QSTR_USTRUCT { MP_ROM_QSTR(MP_QSTR_ustruct), MP_ROM_PTR(&mp_module_ustruct) },
+
+extern const struct _mp_obj_module_t mp_module_sys;
+#undef MODULE_DEF_MP_QSTR_USYS
+#define MODULE_DEF_MP_QSTR_USYS { MP_ROM_QSTR(MP_QSTR_usys), MP_ROM_PTR(&mp_module_sys) },
+
+extern const struct _mp_obj_module_t mp_module_utime;
+#undef MODULE_DEF_MP_QSTR_UTIME
+#define MODULE_DEF_MP_QSTR_UTIME { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&mp_module_utime) },
+
+
+#define MICROPY_REGISTERED_MODULES \
+ MODULE_DEF_MP_QSTR_BUILTINS \
+ MODULE_DEF_MP_QSTR_GC \
+ MODULE_DEF_MP_QSTR_MATH \
+ MODULE_DEF_MP_QSTR_MICROPYTHON \
+ MODULE_DEF_MP_QSTR_UARRAY \
+ MODULE_DEF_MP_QSTR_UCOLLECTIONS \
+ MODULE_DEF_MP_QSTR_UMACHINE \
+ MODULE_DEF_MP_QSTR_USTRUCT \
+ MODULE_DEF_MP_QSTR_USYS \
+ MODULE_DEF_MP_QSTR_UTIME \
+ MODULE_DEF_MP_QSTR__THREAD \
+ MODULE_DEF_MP_QSTR___MAIN__ \
+// MICROPY_REGISTERED_MODULES
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/mpversion.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/mpversion.h
new file mode 100644
index 00000000..22f31f30
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/mpversion.h
@@ -0,0 +1,4 @@
+// This file was generated by py/makeversionhdr.py
+#define MICROPY_GIT_TAG "v2.5.0-74-g467a6d7d-dirty"
+#define MICROPY_GIT_HASH "467a6d7d-dirty"
+#define MICROPY_BUILD_DATE "2022-09-28"
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/qstrdefs.generated.h b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/qstrdefs.generated.h
new file mode 100644
index 00000000..18249bac
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/genhdr/qstrdefs.generated.h
@@ -0,0 +1,436 @@
+// This file was automatically generated by makeqstrdata.py
+
+QDEF(MP_QSTRnull, 0, 0, "")
+QDEF(MP_QSTR_, 5381, 0, "")
+QDEF(MP_QSTR___dir__, 36730, 7, "__dir__")
+QDEF(MP_QSTR__0x0a_, 46511, 1, "\x0a")
+QDEF(MP_QSTR__space_, 46469, 1, " ")
+QDEF(MP_QSTR__star_, 46479, 1, "*")
+QDEF(MP_QSTR__slash_, 46474, 1, "/")
+QDEF(MP_QSTR__lt_module_gt_, 38077, 8, "")
+QDEF(MP_QSTR__, 46586, 1, "_")
+QDEF(MP_QSTR___call__, 63911, 8, "__call__")
+QDEF(MP_QSTR___class__, 50475, 9, "__class__")
+QDEF(MP_QSTR___delitem__, 13821, 11, "__delitem__")
+QDEF(MP_QSTR___enter__, 47725, 9, "__enter__")
+QDEF(MP_QSTR___exit__, 63557, 8, "__exit__")
+QDEF(MP_QSTR___getattr__, 63552, 11, "__getattr__")
+QDEF(MP_QSTR___getitem__, 14630, 11, "__getitem__")
+QDEF(MP_QSTR___hash__, 51447, 8, "__hash__")
+QDEF(MP_QSTR___init__, 42335, 8, "__init__")
+QDEF(MP_QSTR___int__, 6934, 7, "__int__")
+QDEF(MP_QSTR___iter__, 13007, 8, "__iter__")
+QDEF(MP_QSTR___len__, 45282, 7, "__len__")
+QDEF(MP_QSTR___main__, 5006, 8, "__main__")
+QDEF(MP_QSTR___module__, 12543, 10, "__module__")
+QDEF(MP_QSTR___name__, 14562, 8, "__name__")
+QDEF(MP_QSTR___new__, 5497, 7, "__new__")
+QDEF(MP_QSTR___next__, 29442, 8, "__next__")
+QDEF(MP_QSTR___qualname__, 107, 12, "__qualname__")
+QDEF(MP_QSTR___repr__, 2832, 8, "__repr__")
+QDEF(MP_QSTR___setitem__, 15922, 11, "__setitem__")
+QDEF(MP_QSTR___str__, 52688, 7, "__str__")
+QDEF(MP_QSTR_ArithmeticError, 35885, 15, "ArithmeticError")
+QDEF(MP_QSTR_AssertionError, 23191, 14, "AssertionError")
+QDEF(MP_QSTR_AttributeError, 56865, 14, "AttributeError")
+QDEF(MP_QSTR_BaseException, 37383, 13, "BaseException")
+QDEF(MP_QSTR_EOFError, 49041, 8, "EOFError")
+QDEF(MP_QSTR_Ellipsis, 57584, 8, "Ellipsis")
+QDEF(MP_QSTR_Exception, 10738, 9, "Exception")
+QDEF(MP_QSTR_GeneratorExit, 25110, 13, "GeneratorExit")
+QDEF(MP_QSTR_ImportError, 39968, 11, "ImportError")
+QDEF(MP_QSTR_IndentationError, 8284, 16, "IndentationError")
+QDEF(MP_QSTR_IndexError, 44419, 10, "IndexError")
+QDEF(MP_QSTR_KeyError, 234, 8, "KeyError")
+QDEF(MP_QSTR_KeyboardInterrupt, 58031, 17, "KeyboardInterrupt")
+QDEF(MP_QSTR_LookupError, 27135, 11, "LookupError")
+QDEF(MP_QSTR_MemoryError, 33756, 11, "MemoryError")
+QDEF(MP_QSTR_NameError, 11706, 9, "NameError")
+QDEF(MP_QSTR_NoneType, 26647, 8, "NoneType")
+QDEF(MP_QSTR_NotImplementedError, 39110, 19, "NotImplementedError")
+QDEF(MP_QSTR_OSError, 26017, 7, "OSError")
+QDEF(MP_QSTR_OverflowError, 57729, 13, "OverflowError")
+QDEF(MP_QSTR_RuntimeError, 61793, 12, "RuntimeError")
+QDEF(MP_QSTR_StopIteration, 7402, 13, "StopIteration")
+QDEF(MP_QSTR_SyntaxError, 36756, 11, "SyntaxError")
+QDEF(MP_QSTR_SystemExit, 65312, 10, "SystemExit")
+QDEF(MP_QSTR_TypeError, 38437, 9, "TypeError")
+QDEF(MP_QSTR_ValueError, 34710, 10, "ValueError")
+QDEF(MP_QSTR_ZeroDivisionError, 10166, 17, "ZeroDivisionError")
+QDEF(MP_QSTR_abs, 12949, 3, "abs")
+QDEF(MP_QSTR_all, 13124, 3, "all")
+QDEF(MP_QSTR_any, 13075, 3, "any")
+QDEF(MP_QSTR_append, 38763, 6, "append")
+QDEF(MP_QSTR_args, 50882, 4, "args")
+QDEF(MP_QSTR_bool, 15595, 4, "bool")
+QDEF(MP_QSTR_builtins, 12791, 8, "builtins")
+QDEF(MP_QSTR_bytearray, 41846, 9, "bytearray")
+QDEF(MP_QSTR_bytecode, 32034, 8, "bytecode")
+QDEF(MP_QSTR_bytes, 45660, 5, "bytes")
+QDEF(MP_QSTR_callable, 28685, 8, "callable")
+QDEF(MP_QSTR_chr, 19676, 3, "chr")
+QDEF(MP_QSTR_classmethod, 36020, 11, "classmethod")
+QDEF(MP_QSTR_clear, 41084, 5, "clear")
+QDEF(MP_QSTR_close, 26419, 5, "close")
+QDEF(MP_QSTR_const, 65472, 5, "const")
+QDEF(MP_QSTR_copy, 56288, 4, "copy")
+QDEF(MP_QSTR_count, 19878, 5, "count")
+QDEF(MP_QSTR_dict, 64575, 4, "dict")
+QDEF(MP_QSTR_dir, 7930, 3, "dir")
+QDEF(MP_QSTR_divmod, 1208, 6, "divmod")
+QDEF(MP_QSTR_end, 8970, 3, "end")
+QDEF(MP_QSTR_endswith, 41755, 8, "endswith")
+QDEF(MP_QSTR_eval, 42651, 4, "eval")
+QDEF(MP_QSTR_exec, 49182, 4, "exec")
+QDEF(MP_QSTR_extend, 59491, 6, "extend")
+QDEF(MP_QSTR_find, 13312, 4, "find")
+QDEF(MP_QSTR_format, 13094, 6, "format")
+QDEF(MP_QSTR_from_bytes, 29749, 10, "from_bytes")
+QDEF(MP_QSTR_get, 15155, 3, "get")
+QDEF(MP_QSTR_getattr, 6080, 7, "getattr")
+QDEF(MP_QSTR_globals, 18845, 7, "globals")
+QDEF(MP_QSTR_hasattr, 45196, 7, "hasattr")
+QDEF(MP_QSTR_hash, 28855, 4, "hash")
+QDEF(MP_QSTR_id, 28456, 2, "id")
+QDEF(MP_QSTR_index, 10363, 5, "index")
+QDEF(MP_QSTR_insert, 21522, 6, "insert")
+QDEF(MP_QSTR_int, 21270, 3, "int")
+QDEF(MP_QSTR_isalpha, 14315, 7, "isalpha")
+QDEF(MP_QSTR_isdigit, 39592, 7, "isdigit")
+QDEF(MP_QSTR_isinstance, 48822, 10, "isinstance")
+QDEF(MP_QSTR_islower, 33020, 7, "islower")
+QDEF(MP_QSTR_isspace, 63579, 7, "isspace")
+QDEF(MP_QSTR_issubclass, 32693, 10, "issubclass")
+QDEF(MP_QSTR_isupper, 42973, 7, "isupper")
+QDEF(MP_QSTR_items, 21475, 5, "items")
+QDEF(MP_QSTR_iter, 8591, 4, "iter")
+QDEF(MP_QSTR_join, 23719, 4, "join")
+QDEF(MP_QSTR_key, 27954, 3, "key")
+QDEF(MP_QSTR_keys, 4865, 4, "keys")
+QDEF(MP_QSTR_len, 16482, 3, "len")
+QDEF(MP_QSTR_list, 7463, 4, "list")
+QDEF(MP_QSTR_little, 27273, 6, "little")
+QDEF(MP_QSTR_locals, 41275, 6, "locals")
+QDEF(MP_QSTR_lower, 52166, 5, "lower")
+QDEF(MP_QSTR_lstrip, 47589, 6, "lstrip")
+QDEF(MP_QSTR_main, 47054, 4, "main")
+QDEF(MP_QSTR_map, 17337, 3, "map")
+QDEF(MP_QSTR_micropython, 31755, 11, "micropython")
+QDEF(MP_QSTR_next, 34882, 4, "next")
+QDEF(MP_QSTR_object, 36240, 6, "object")
+QDEF(MP_QSTR_open, 15057, 4, "open")
+QDEF(MP_QSTR_ord, 24092, 3, "ord")
+QDEF(MP_QSTR_pop, 29482, 3, "pop")
+QDEF(MP_QSTR_popitem, 11455, 7, "popitem")
+QDEF(MP_QSTR_pow, 29485, 3, "pow")
+QDEF(MP_QSTR_print, 50772, 5, "print")
+QDEF(MP_QSTR_range, 24090, 5, "range")
+QDEF(MP_QSTR_read, 63927, 4, "read")
+QDEF(MP_QSTR_readinto, 48971, 8, "readinto")
+QDEF(MP_QSTR_readline, 6649, 8, "readline")
+QDEF(MP_QSTR_remove, 35427, 6, "remove")
+QDEF(MP_QSTR_replace, 9545, 7, "replace")
+QDEF(MP_QSTR_repr, 63440, 4, "repr")
+QDEF(MP_QSTR_reverse, 10789, 7, "reverse")
+QDEF(MP_QSTR_rfind, 40146, 5, "rfind")
+QDEF(MP_QSTR_rindex, 11241, 6, "rindex")
+QDEF(MP_QSTR_round, 9703, 5, "round")
+QDEF(MP_QSTR_rsplit, 165, 6, "rsplit")
+QDEF(MP_QSTR_rstrip, 38203, 6, "rstrip")
+QDEF(MP_QSTR_self, 30585, 4, "self")
+QDEF(MP_QSTR_send, 30393, 4, "send")
+QDEF(MP_QSTR_sep, 36643, 3, "sep")
+QDEF(MP_QSTR_set, 36647, 3, "set")
+QDEF(MP_QSTR_setattr, 43220, 7, "setattr")
+QDEF(MP_QSTR_setdefault, 41836, 10, "setdefault")
+QDEF(MP_QSTR_sort, 40383, 4, "sort")
+QDEF(MP_QSTR_sorted, 5470, 6, "sorted")
+QDEF(MP_QSTR_split, 13239, 5, "split")
+QDEF(MP_QSTR_start, 61317, 5, "start")
+QDEF(MP_QSTR_startswith, 59508, 10, "startswith")
+QDEF(MP_QSTR_staticmethod, 44898, 12, "staticmethod")
+QDEF(MP_QSTR_step, 13911, 4, "step")
+QDEF(MP_QSTR_stop, 13981, 4, "stop")
+QDEF(MP_QSTR_str, 36176, 3, "str")
+QDEF(MP_QSTR_strip, 7721, 5, "strip")
+QDEF(MP_QSTR_sum, 36142, 3, "sum")
+QDEF(MP_QSTR_super, 45764, 5, "super")
+QDEF(MP_QSTR_throw, 17587, 5, "throw")
+QDEF(MP_QSTR_to_bytes, 16088, 8, "to_bytes")
+QDEF(MP_QSTR_tuple, 16893, 5, "tuple")
+QDEF(MP_QSTR_type, 32669, 4, "type")
+QDEF(MP_QSTR_update, 30388, 6, "update")
+QDEF(MP_QSTR_upper, 37927, 5, "upper")
+QDEF(MP_QSTR_utf_hyphen_8, 33463, 5, "utf-8")
+QDEF(MP_QSTR_value, 13390, 5, "value")
+QDEF(MP_QSTR_values, 48765, 6, "values")
+QDEF(MP_QSTR_write, 43160, 5, "write")
+QDEF(MP_QSTR_zip, 44262, 3, "zip")
+QDEF(MP_QSTR___add__, 33476, 7, "__add__")
+QDEF(MP_QSTR___aenter__, 33868, 10, "__aenter__")
+QDEF(MP_QSTR___aexit__, 53188, 9, "__aexit__")
+QDEF(MP_QSTR___aiter__, 11086, 9, "__aiter__")
+QDEF(MP_QSTR___anext__, 46211, 9, "__anext__")
+QDEF(MP_QSTR___bases__, 12291, 9, "__bases__")
+QDEF(MP_QSTR___bool__, 25899, 8, "__bool__")
+QDEF(MP_QSTR___build_class__, 34882, 15, "__build_class__")
+QDEF(MP_QSTR___contains__, 24518, 12, "__contains__")
+QDEF(MP_QSTR___del__, 14184, 7, "__del__")
+QDEF(MP_QSTR___dict__, 21631, 8, "__dict__")
+QDEF(MP_QSTR___eq__, 15985, 6, "__eq__")
+QDEF(MP_QSTR___file__, 21507, 8, "__file__")
+QDEF(MP_QSTR___ge__, 18087, 6, "__ge__")
+QDEF(MP_QSTR___gt__, 33462, 6, "__gt__")
+QDEF(MP_QSTR___iadd__, 19053, 8, "__iadd__")
+QDEF(MP_QSTR___iand__, 8615, 8, "__iand__")
+QDEF(MP_QSTR___ifloordiv__, 3919, 13, "__ifloordiv__")
+QDEF(MP_QSTR___ilshift__, 41600, 11, "__ilshift__")
+QDEF(MP_QSTR___imatmul__, 28352, 11, "__imatmul__")
+QDEF(MP_QSTR___imod__, 34378, 8, "__imod__")
+QDEF(MP_QSTR___import__, 15928, 10, "__import__")
+QDEF(MP_QSTR___imul__, 52760, 8, "__imul__")
+QDEF(MP_QSTR___ior__, 36849, 7, "__ior__")
+QDEF(MP_QSTR___ipow__, 54660, 8, "__ipow__")
+QDEF(MP_QSTR___irshift__, 63710, 11, "__irshift__")
+QDEF(MP_QSTR___isub__, 30728, 8, "__isub__")
+QDEF(MP_QSTR___itruediv__, 545, 12, "__itruediv__")
+QDEF(MP_QSTR___ixor__, 47369, 8, "__ixor__")
+QDEF(MP_QSTR___le__, 5068, 6, "__le__")
+QDEF(MP_QSTR___lt__, 26717, 6, "__lt__")
+QDEF(MP_QSTR___ne__, 2830, 6, "__ne__")
+QDEF(MP_QSTR___path__, 9160, 8, "__path__")
+QDEF(MP_QSTR___repl_print__, 47872, 14, "__repl_print__")
+QDEF(MP_QSTR___reversed__, 65377, 12, "__reversed__")
+QDEF(MP_QSTR___sub__, 2337, 7, "__sub__")
+QDEF(MP_QSTR___traceback__, 53071, 13, "__traceback__")
+QDEF(MP_QSTR__percent__hash_o, 6764, 3, "%#o")
+QDEF(MP_QSTR__percent__hash_x, 6779, 3, "%#x")
+QDEF(MP_QSTR__brace_open__colon__hash_b_brace_close_, 14168, 5, "{:#b}")
+QDEF(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 7795, 32, "maximum recursion depth exceeded")
+QDEF(MP_QSTR__lt_lambda_gt_, 35968, 8, "")
+QDEF(MP_QSTR__lt_listcomp_gt_, 5588, 10, "")
+QDEF(MP_QSTR__lt_dictcomp_gt_, 36300, 10, "")
+QDEF(MP_QSTR__lt_setcomp_gt_, 20820, 9, "")
+QDEF(MP_QSTR__lt_genexpr_gt_, 27188, 9, "")
+QDEF(MP_QSTR__lt_string_gt_, 21330, 8, "")
+QDEF(MP_QSTR__lt_stdin_gt_, 25571, 7, "")
+QDEF(MP_QSTR_A0, 29268, 2, "A0")
+QDEF(MP_QSTR_A1, 29269, 2, "A1")
+QDEF(MP_QSTR_A10, 48325, 3, "A10")
+QDEF(MP_QSTR_A11, 48324, 3, "A11")
+QDEF(MP_QSTR_A12, 48327, 3, "A12")
+QDEF(MP_QSTR_A13, 48326, 3, "A13")
+QDEF(MP_QSTR_A14, 48321, 3, "A14")
+QDEF(MP_QSTR_A15, 48320, 3, "A15")
+QDEF(MP_QSTR_A2, 29270, 2, "A2")
+QDEF(MP_QSTR_A3, 29271, 2, "A3")
+QDEF(MP_QSTR_A4, 29264, 2, "A4")
+QDEF(MP_QSTR_A5, 29265, 2, "A5")
+QDEF(MP_QSTR_A6, 29266, 2, "A6")
+QDEF(MP_QSTR_A7, 29267, 2, "A7")
+QDEF(MP_QSTR_A8, 29276, 2, "A8")
+QDEF(MP_QSTR_A9, 29277, 2, "A9")
+QDEF(MP_QSTR_B0, 29431, 2, "B0")
+QDEF(MP_QSTR_B1, 29430, 2, "B1")
+QDEF(MP_QSTR_B10, 53638, 3, "B10")
+QDEF(MP_QSTR_B11, 53639, 3, "B11")
+QDEF(MP_QSTR_B12, 53636, 3, "B12")
+QDEF(MP_QSTR_B13, 53637, 3, "B13")
+QDEF(MP_QSTR_B14, 53634, 3, "B14")
+QDEF(MP_QSTR_B15, 53635, 3, "B15")
+QDEF(MP_QSTR_B2, 29429, 2, "B2")
+QDEF(MP_QSTR_B3, 29428, 2, "B3")
+QDEF(MP_QSTR_B4, 29427, 2, "B4")
+QDEF(MP_QSTR_B5, 29426, 2, "B5")
+QDEF(MP_QSTR_B6, 29425, 2, "B6")
+QDEF(MP_QSTR_B7, 29424, 2, "B7")
+QDEF(MP_QSTR_B8, 29439, 2, "B8")
+QDEF(MP_QSTR_B9, 29438, 2, "B9")
+QDEF(MP_QSTR_C0, 29334, 2, "C0")
+QDEF(MP_QSTR_C1, 29335, 2, "C1")
+QDEF(MP_QSTR_C10, 50503, 3, "C10")
+QDEF(MP_QSTR_C11, 50502, 3, "C11")
+QDEF(MP_QSTR_C12, 50501, 3, "C12")
+QDEF(MP_QSTR_C13, 50500, 3, "C13")
+QDEF(MP_QSTR_C14, 50499, 3, "C14")
+QDEF(MP_QSTR_C15, 50498, 3, "C15")
+QDEF(MP_QSTR_C2, 29332, 2, "C2")
+QDEF(MP_QSTR_C3, 29333, 2, "C3")
+QDEF(MP_QSTR_C4, 29330, 2, "C4")
+QDEF(MP_QSTR_C5, 29331, 2, "C5")
+QDEF(MP_QSTR_C6, 29328, 2, "C6")
+QDEF(MP_QSTR_C7, 29329, 2, "C7")
+QDEF(MP_QSTR_C8, 29342, 2, "C8")
+QDEF(MP_QSTR_C9, 29343, 2, "C9")
+QDEF(MP_QSTR_D2, 29235, 2, "D2")
+QDEF(MP_QSTR_FileIO, 5573, 6, "FileIO")
+QDEF(MP_QSTR_IN, 29474, 2, "IN")
+QDEF(MP_QSTR_IN_PULLDOWN, 47946, 11, "IN_PULLDOWN")
+QDEF(MP_QSTR_IN_PULLUP, 55837, 9, "IN_PULLUP")
+QDEF(MP_QSTR_IRQ_FALLING, 49207, 11, "IRQ_FALLING")
+QDEF(MP_QSTR_IRQ_RISING, 60792, 10, "IRQ_RISING")
+QDEF(MP_QSTR_KEY1, 4963, 4, "KEY1")
+QDEF(MP_QSTR_KEY2, 4960, 4, "KEY2")
+QDEF(MP_QSTR_LED, 56456, 3, "LED")
+QDEF(MP_QSTR_LockType, 8246, 8, "LockType")
+QDEF(MP_QSTR_ONE_SHOT, 65374, 8, "ONE_SHOT")
+QDEF(MP_QSTR_OPEN_DRAIN, 18526, 10, "OPEN_DRAIN")
+QDEF(MP_QSTR_OUT, 58123, 3, "OUT")
+QDEF(MP_QSTR_PERIODIC, 13578, 8, "PERIODIC")
+QDEF(MP_QSTR_Pin, 5138, 3, "Pin")
+QDEF(MP_QSTR_PinBase, 17223, 7, "PinBase")
+QDEF(MP_QSTR_Signal, 58523, 6, "Signal")
+QDEF(MP_QSTR_StopAsyncIteration, 61676, 18, "StopAsyncIteration")
+QDEF(MP_QSTR_Timer, 8098, 5, "Timer")
+QDEF(MP_QSTR_UART, 6583, 4, "UART")
+QDEF(MP_QSTR__machine, 19391, 8, "_machine")
+QDEF(MP_QSTR__thread, 724, 7, "_thread")
+QDEF(MP_QSTR_acos, 40987, 4, "acos")
+QDEF(MP_QSTR_acquire, 54045, 7, "acquire")
+QDEF(MP_QSTR_add, 12868, 3, "add")
+QDEF(MP_QSTR_alloc_emergency_exception_buf, 10872, 29, "alloc_emergency_exception_buf")
+QDEF(MP_QSTR_allocate_lock, 60908, 13, "allocate_lock")
+QDEF(MP_QSTR_argv, 50887, 4, "argv")
+QDEF(MP_QSTR_array, 29308, 5, "array")
+QDEF(MP_QSTR_asin, 58704, 4, "asin")
+QDEF(MP_QSTR_atan, 48671, 4, "atan")
+QDEF(MP_QSTR_atan2, 33229, 5, "atan2")
+QDEF(MP_QSTR_bin, 18656, 3, "bin")
+QDEF(MP_QSTR_bound_method, 41623, 12, "bound_method")
+QDEF(MP_QSTR_buffer, 41189, 6, "buffer")
+QDEF(MP_QSTR_byteorder, 39265, 9, "byteorder")
+QDEF(MP_QSTR_calcsize, 14413, 8, "calcsize")
+QDEF(MP_QSTR_callback, 61516, 8, "callback")
+QDEF(MP_QSTR_ceil, 45062, 4, "ceil")
+QDEF(MP_QSTR_closure, 51828, 7, "closure")
+QDEF(MP_QSTR_collect, 26011, 7, "collect")
+QDEF(MP_QSTR_complex, 40389, 7, "complex")
+QDEF(MP_QSTR_copysign, 5171, 8, "copysign")
+QDEF(MP_QSTR_cos, 19578, 3, "cos")
+QDEF(MP_QSTR_decode, 22953, 6, "decode")
+QDEF(MP_QSTR_default, 32206, 7, "default")
+QDEF(MP_QSTR_degrees, 16642, 7, "degrees")
+QDEF(MP_QSTR_deinit, 36254, 6, "deinit")
+QDEF(MP_QSTR_delattr, 51419, 7, "delattr")
+QDEF(MP_QSTR_deleter, 56174, 7, "deleter")
+QDEF(MP_QSTR_dict_view, 43309, 9, "dict_view")
+QDEF(MP_QSTR_difference, 9330, 10, "difference")
+QDEF(MP_QSTR_difference_update, 64156, 17, "difference_update")
+QDEF(MP_QSTR_disable, 30353, 7, "disable")
+QDEF(MP_QSTR_discard, 28943, 7, "discard")
+QDEF(MP_QSTR_doc, 7981, 3, "doc")
+QDEF(MP_QSTR_e, 46528, 1, "e")
+QDEF(MP_QSTR_enable, 56836, 6, "enable")
+QDEF(MP_QSTR_encode, 51779, 6, "encode")
+QDEF(MP_QSTR_enumerate, 47729, 9, "enumerate")
+QDEF(MP_QSTR_errno, 4545, 5, "errno")
+QDEF(MP_QSTR_exit, 48773, 4, "exit")
+QDEF(MP_QSTR_exp, 9416, 3, "exp")
+QDEF(MP_QSTR_fabs, 4755, 4, "fabs")
+QDEF(MP_QSTR_filter, 48677, 6, "filter")
+QDEF(MP_QSTR_float, 17461, 5, "float")
+QDEF(MP_QSTR_floor, 18045, 5, "floor")
+QDEF(MP_QSTR_fmod, 17637, 4, "fmod")
+QDEF(MP_QSTR_freq, 15077, 4, "freq")
+QDEF(MP_QSTR_frexp, 38940, 5, "frexp")
+QDEF(MP_QSTR_fromkeys, 48439, 8, "fromkeys")
+QDEF(MP_QSTR_function, 551, 8, "function")
+QDEF(MP_QSTR_gc, 28257, 2, "gc")
+QDEF(MP_QSTR_generator, 50070, 9, "generator")
+QDEF(MP_QSTR_get_ident, 45566, 9, "get_ident")
+QDEF(MP_QSTR_getter, 45712, 6, "getter")
+QDEF(MP_QSTR_handler, 24029, 7, "handler")
+QDEF(MP_QSTR_heap_lock, 36013, 9, "heap_lock")
+QDEF(MP_QSTR_heap_unlock, 11606, 11, "heap_unlock")
+QDEF(MP_QSTR_help, 23700, 4, "help")
+QDEF(MP_QSTR_hex, 20592, 3, "hex")
+QDEF(MP_QSTR_imag, 46919, 4, "imag")
+QDEF(MP_QSTR_implementation, 11543, 14, "implementation")
+QDEF(MP_QSTR_init, 46111, 4, "init")
+QDEF(MP_QSTR_intersection, 10792, 12, "intersection")
+QDEF(MP_QSTR_intersection_update, 56582, 19, "intersection_update")
+QDEF(MP_QSTR_invert, 183, 6, "invert")
+QDEF(MP_QSTR_irq, 22159, 3, "irq")
+QDEF(MP_QSTR_isdisjoint, 26871, 10, "isdisjoint")
+QDEF(MP_QSTR_isenabled, 58778, 9, "isenabled")
+QDEF(MP_QSTR_isfinite, 43942, 8, "isfinite")
+QDEF(MP_QSTR_isinf, 4414, 5, "isinf")
+QDEF(MP_QSTR_isnan, 926, 5, "isnan")
+QDEF(MP_QSTR_issubset, 49593, 8, "issubset")
+QDEF(MP_QSTR_issuperset, 60668, 10, "issuperset")
+QDEF(MP_QSTR_iterable, 37413, 8, "iterable")
+QDEF(MP_QSTR_iterator, 48711, 8, "iterator")
+QDEF(MP_QSTR_kbd_intr, 5110, 8, "kbd_intr")
+QDEF(MP_QSTR_ldexp, 28480, 5, "ldexp")
+QDEF(MP_QSTR_lock, 9134, 4, "lock")
+QDEF(MP_QSTR_locked, 47631, 6, "locked")
+QDEF(MP_QSTR_log, 16161, 3, "log")
+QDEF(MP_QSTR_math, 47925, 4, "math")
+QDEF(MP_QSTR_max, 17329, 3, "max")
+QDEF(MP_QSTR_mem, 17440, 3, "mem")
+QDEF(MP_QSTR_mem16, 51719, 5, "mem16")
+QDEF(MP_QSTR_mem32, 51777, 5, "mem32")
+QDEF(MP_QSTR_mem8, 51224, 4, "mem8")
+QDEF(MP_QSTR_mem_alloc, 11090, 9, "mem_alloc")
+QDEF(MP_QSTR_mem_free, 25291, 8, "mem_free")
+QDEF(MP_QSTR_min, 17071, 3, "min")
+QDEF(MP_QSTR_mode, 49190, 4, "mode")
+QDEF(MP_QSTR_modf, 49189, 4, "modf")
+QDEF(MP_QSTR_module, 39359, 6, "module")
+QDEF(MP_QSTR_modules, 53740, 7, "modules")
+QDEF(MP_QSTR_name, 30114, 4, "name")
+QDEF(MP_QSTR_namedtuple, 5662, 10, "namedtuple")
+QDEF(MP_QSTR_oct, 23805, 3, "oct")
+QDEF(MP_QSTR_off, 23690, 3, "off")
+QDEF(MP_QSTR_on, 28516, 2, "on")
+QDEF(MP_QSTR_opt_level, 26503, 9, "opt_level")
+QDEF(MP_QSTR_pack, 53692, 4, "pack")
+QDEF(MP_QSTR_pack_into, 43295, 9, "pack_into")
+QDEF(MP_QSTR_path, 52872, 4, "path")
+QDEF(MP_QSTR_pend_throw, 29939, 10, "pend_throw")
+QDEF(MP_QSTR_period, 41120, 6, "period")
+QDEF(MP_QSTR_pi, 28700, 2, "pi")
+QDEF(MP_QSTR_platform, 6458, 8, "platform")
+QDEF(MP_QSTR_print_exception, 8732, 15, "print_exception")
+QDEF(MP_QSTR_property, 10690, 8, "property")
+QDEF(MP_QSTR_radians, 16263, 7, "radians")
+QDEF(MP_QSTR_readlines, 22890, 9, "readlines")
+QDEF(MP_QSTR_real, 63935, 4, "real")
+QDEF(MP_QSTR_release, 36844, 7, "release")
+QDEF(MP_QSTR_reversed, 28321, 8, "reversed")
+QDEF(MP_QSTR_rxbuf, 26494, 5, "rxbuf")
+QDEF(MP_QSTR_schedule, 44256, 8, "schedule")
+QDEF(MP_QSTR_setter, 22788, 6, "setter")
+QDEF(MP_QSTR_sin, 37041, 3, "sin")
+QDEF(MP_QSTR_sleep, 10218, 5, "sleep")
+QDEF(MP_QSTR_sleep_ms, 25355, 8, "sleep_ms")
+QDEF(MP_QSTR_slice, 62645, 5, "slice")
+QDEF(MP_QSTR_soft_reset, 26081, 10, "soft_reset")
+QDEF(MP_QSTR_sqrt, 17441, 4, "sqrt")
+QDEF(MP_QSTR_stack_size, 15153, 10, "stack_size")
+QDEF(MP_QSTR_start_new_thread, 9687, 16, "start_new_thread")
+QDEF(MP_QSTR_symmetric_difference, 26574, 20, "symmetric_difference")
+QDEF(MP_QSTR_symmetric_difference_update, 63584, 27, "symmetric_difference_update")
+QDEF(MP_QSTR_sys, 36540, 3, "sys")
+QDEF(MP_QSTR_tan, 25086, 3, "tan")
+QDEF(MP_QSTR_threshold, 12274, 9, "threshold")
+QDEF(MP_QSTR_tick_hz, 56189, 7, "tick_hz")
+QDEF(MP_QSTR_ticks_add, 44701, 9, "ticks_add")
+QDEF(MP_QSTR_ticks_cpu, 42266, 9, "ticks_cpu")
+QDEF(MP_QSTR_ticks_diff, 57521, 10, "ticks_diff")
+QDEF(MP_QSTR_ticks_ms, 12866, 8, "ticks_ms")
+QDEF(MP_QSTR_timeout, 21566, 7, "timeout")
+QDEF(MP_QSTR_timeout_char, 19065, 12, "timeout_char")
+QDEF(MP_QSTR_trigger, 35997, 7, "trigger")
+QDEF(MP_QSTR_trunc, 39259, 5, "trunc")
+QDEF(MP_QSTR_uarray, 34441, 6, "uarray")
+QDEF(MP_QSTR_ucollections, 39445, 12, "ucollections")
+QDEF(MP_QSTR_umachine, 32661, 8, "umachine")
+QDEF(MP_QSTR_union, 31990, 5, "union")
+QDEF(MP_QSTR_unpack, 15367, 6, "unpack")
+QDEF(MP_QSTR_unpack_from, 27918, 11, "unpack_from")
+QDEF(MP_QSTR_ustruct, 2119, 7, "ustruct")
+QDEF(MP_QSTR_usys, 62409, 4, "usys")
+QDEF(MP_QSTR_utime, 40421, 5, "utime")
+QDEF(MP_QSTR_version, 54207, 7, "version")
+QDEF(MP_QSTR_version_info, 2670, 12, "version_info")
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/before_build_command.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/before_build_command.png
new file mode 100644
index 00000000..c7b4e34b
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/before_build_command.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_1.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_1.png
new file mode 100644
index 00000000..20e68411
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_1.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_2.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_2.png
new file mode 100644
index 00000000..1ce85a0c
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_2.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_3.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_3.png
new file mode 100644
index 00000000..deb9c402
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/external_flash_3.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help('modules').png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help('modules').png
new file mode 100644
index 00000000..75e292ff
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help('modules').png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help().png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help().png
new file mode 100644
index 00000000..12aeadf7
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/help().png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/include_paths.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/include_paths.png
new file mode 100644
index 00000000..9d045c37
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/include_paths.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/other_configuration.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/other_configuration.png
new file mode 100644
index 00000000..ce69806e
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/other_configuration.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/paste_mode_pin_py.png b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/paste_mode_pin_py.png
new file mode 100644
index 00000000..6f4d1db1
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/imgs/paste_mode_pin_py.png differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/os.py b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/os.py
new file mode 100644
index 00000000..a103ea4b
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/os.py
@@ -0,0 +1,40 @@
+import uos as os
+
+# test mkdir()
+print('{:-^40}'.format('test mkdir'))
+print(os.listdir())
+os.mkdir('test_dir')
+print(os.listdir())
+
+# test file open() and write()
+print('{:-^40}'.format('test write'))
+f = open('test_dir/test_file', 'w')
+f.write("Hello TencentOS-tiny\n")
+print("Hello MicroPython", file=f)
+f.close()
+print(os.listdir('test_dir'))
+
+# test file open() and read()
+print('{:-^40}'.format('test read'))
+f = open('test_dir/test_file', 'r')
+print(f.readlines())
+f.close()
+
+# test 'with' statement and iterator
+print('{:-^40}'.format('test with statement'))
+with open('test_dir/test_file', 'r') as file:
+ for line in file:
+ print(line)
+
+# test rename()
+print('{:-^40}'.format('test rename'))
+os.rename('test_dir', 'test_dir2')
+print(os.listdir())
+print(os.listdir('test_dir2'))
+
+# test unlink()
+print('{:-^40}'.format('test unlink'))
+os.unlink('test_dir2/test_file')
+print(os.listdir('test_dir2'))
+os.unlink('test_dir2')
+print(os.listdir())
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/pin.py b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/pin.py
new file mode 100644
index 00000000..1df76913
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/pin.py
@@ -0,0 +1,28 @@
+import umachine as machine
+import utime as time
+
+running = True
+
+def key1_irq_callback(pin):
+ if pin.value() == 0:
+ print('Key1 is pressed')
+ else:
+ print('Key1 is released')
+
+def key2_irq_callback(pin):
+ global running
+ running = False
+
+if __name__ == '__main__':
+
+ led = machine.Pin("LED", mode=machine.Pin.OUT)
+ key1 = machine.Pin("KEY1", mode=machine.Pin.IN_PULLUP)
+ key1.irq(trigger=machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING, handler=key1_irq_callback)
+ key2 = machine.Pin("KEY2", mode=machine.Pin.IN_PULLUP)
+ key2.irq(trigger=machine.Pin.IRQ_FALLING, handler=key2_irq_callback)
+
+ while running:
+ led.on()
+ time.sleep(0.5)
+ led.off()
+ time.sleep(0.5)
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/thread.py b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/thread.py
new file mode 100644
index 00000000..964d7740
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/scripts/thread.py
@@ -0,0 +1,19 @@
+import _thread
+
+lock = _thread.allocate_lock()
+n_thread = 4
+n_finished = 0
+
+def thread_entry(no):
+ print(no)
+ with lock:
+ global n_finished
+ n_finished += 1
+
+if __name__ == '__main__':
+ for i in range(n_thread):
+ _thread.start_new_thread(thread_entry, (i,))
+
+ while n_finished < n_thread:
+ pass
+ print("done")
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/startup_stm32l431xx.s b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/startup_stm32l431xx.s
new file mode 100644
index 00000000..6a5c15a5
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_basic_demo/startup_stm32l431xx.s
@@ -0,0 +1,404 @@
+;********************** COPYRIGHT(c) 2017 STMicroelectronics ******************
+;* File Name : startup_stm32l431xx.s
+;* Author : MCD Application Team
+;* Description : STM32L431xx Ultra Low Power devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;*******************************************************************************
+;*
+;* Redistribution and use in source and binary forms, with or without modification,
+;* are permitted provided that the following conditions are met:
+;* 1. Redistributions of source code must retain the above copyright notice,
+;* this list of conditions and the following disclaimer.
+;* 2. Redistributions in binary form must reproduce the above copyright notice,
+;* this list of conditions and the following disclaimer in the documentation
+;* and/or other materials provided with the distribution.
+;* 3. Neither the name of STMicroelectronics nor the names of its contributors
+;* may be used to endorse or promote products derived from this software
+;* without specific prior written permission.
+;*
+;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;*
+;*******************************************************************************
+;
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x100
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x100
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection
+ DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
+ DCD FLASH_IRQHandler ; FLASH
+ DCD RCC_IRQHandler ; RCC
+ DCD EXTI0_IRQHandler ; EXTI Line0
+ DCD EXTI1_IRQHandler ; EXTI Line1
+ DCD EXTI2_IRQHandler ; EXTI Line2
+ DCD EXTI3_IRQHandler ; EXTI Line3
+ DCD EXTI4_IRQHandler ; EXTI Line4
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
+ DCD ADC1_IRQHandler ; ADC1
+ DCD CAN1_TX_IRQHandler ; CAN1 TX
+ DCD CAN1_RX0_IRQHandler ; CAN1 RX0
+ DCD CAN1_RX1_IRQHandler ; CAN1 RX1
+ DCD CAN1_SCE_IRQHandler ; CAN1 SCE
+ DCD EXTI9_5_IRQHandler ; External Line[9:5]s
+ DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break and TIM15
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16
+ DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
+ DCD TIM2_IRQHandler ; TIM2
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD I2C1_EV_IRQHandler ; I2C1 Event
+ DCD I2C1_ER_IRQHandler ; I2C1 Error
+ DCD I2C2_EV_IRQHandler ; I2C2 Event
+ DCD I2C2_ER_IRQHandler ; I2C2 Error
+ DCD SPI1_IRQHandler ; SPI1
+ DCD SPI2_IRQHandler ; SPI2
+ DCD USART1_IRQHandler ; USART1
+ DCD USART2_IRQHandler ; USART2
+ DCD USART3_IRQHandler ; USART3
+ DCD EXTI15_10_IRQHandler ; External Line[15:10]
+ DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SDMMC1_IRQHandler ; SDMMC1
+ DCD 0 ; Reserved
+ DCD SPI3_IRQHandler ; SPI3
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
+ DCD TIM7_IRQHandler ; TIM7
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD COMP_IRQHandler ; COMP Interrupt
+ DCD LPTIM1_IRQHandler ; LP TIM1 interrupt
+ DCD LPTIM2_IRQHandler ; LP TIM2 interrupt
+ DCD 0 ; Reserved
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7
+ DCD LPUART1_IRQHandler ; LP UART1 interrupt
+ DCD QUADSPI_IRQHandler ; Quad SPI global interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 event
+ DCD I2C3_ER_IRQHandler ; I2C3 error
+ DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt
+ DCD 0 ; Reserved
+ DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
+ DCD TSC_IRQHandler ; Touch Sense Controller global interrupt
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD RNG_IRQHandler ; RNG global interrupt
+ DCD FPU_IRQHandler ; FPU
+ DCD CRS_IRQHandler ; CRS interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT CAN1_TX_IRQHandler [WEAK]
+ EXPORT CAN1_RX0_IRQHandler [WEAK]
+ EXPORT CAN1_RX1_IRQHandler [WEAK]
+ EXPORT CAN1_SCE_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_TIM15_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C2_EV_IRQHandler [WEAK]
+ EXPORT I2C2_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT USART2_IRQHandler [WEAK]
+ EXPORT USART3_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT SDMMC1_IRQHandler [WEAK]
+ EXPORT SPI3_IRQHandler [WEAK]
+ EXPORT TIM6_DAC_IRQHandler [WEAK]
+ EXPORT TIM7_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT SWPMI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+CAN1_TX_IRQHandler
+CAN1_RX0_IRQHandler
+CAN1_RX1_IRQHandler
+CAN1_SCE_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_TIM15_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+SDMMC1_IRQHandler
+SPI3_IRQHandler
+TIM6_DAC_IRQHandler
+TIM7_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+COMP_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+LPUART1_IRQHandler
+QUADSPI_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SAI1_IRQHandler
+SWPMI1_IRQHandler
+TSC_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+CRS_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvoptx b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvoptx
new file mode 100644
index 00000000..6c457c36
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvoptx
@@ -0,0 +1,3519 @@
+
+
+
+ 1.0
+
+ ### uVision Project, (C) Keil Software
+
+
+ *.c
+ *.s*; *.src; *.a*
+ *.obj; *.o
+ *.lib
+ *.txt; *.h; *.inc
+ *.plm
+ *.cpp
+ 0
+
+
+
+ 0
+ 0
+
+
+
+ TencentOS_tiny
+ 0x4
+ ARM-ADS
+
+ 80000000
+
+ 1
+ 1
+ 0
+ 1
+ 0
+
+
+ 1
+ 65535
+ 0
+ 0
+ 0
+
+
+ 79
+ 66
+ 8
+ .\list\
+
+
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+
+
+ 1
+ 0
+ 1
+
+ 18
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 6
+
+
+
+
+
+
+
+
+
+
+ STLink\ST-LINKIII-KEIL_SWO.dll
+
+
+
+ 0
+ ARMRTXEVENTFLAGS
+ -L70 -Z18 -C0 -M0 -T1
+
+
+ 0
+ DLGTARM
+ (1010=75,104,525,661,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=120,153,378,741,0)(1012=-1,-1,-1,-1,0)
+
+
+ 0
+ ARMDBGFLAGS
+
+
+
+ 0
+ DLGUARM
+ (105=-1,-1,-1,-1,0)
+
+
+ 0
+ UL2CM3
+ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32L431RCTx$CMSIS\Flash\STM32L4xx_256.FLM))
+
+
+ 0
+ ST-LINKIII-KEIL_SWO
+ -U066EFF3035344E5043163106 -O10446 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC8000 -FN2 -FF0STM32L4xx_256.FLM -FS08000000 -FL040000 -FP0($$Device:STM32L431RCTx$CMSIS\Flash\STM32L4xx_256.FLM) -FF1BearPi_W25Q64JV -FS190000000 -FL1800000
+
+
+
+
+
+ 0
+ 1
+ tos_next_task
+
+
+ 1
+ 1
+ tos_rdyq.highest_prio
+
+
+ 2
+ 1
+ task_list
+
+
+ 3
+ 1
+ 0x20000280,0x10
+
+
+ 4
+ 1
+ tos_rdyq.highest_prio
+
+
+ 5
+ 1
+ owner
+
+
+ 6
+ 1
+ tos_curr_task
+
+
+ 7
+ 1
+ highest_pending_prio
+
+
+ 8
+ 1
+ task
+
+
+
+ 0
+
+
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 2
+ 10000000
+
+
+
+
+
+ Application/MDK-ARM
+ 0
+ 0
+ 0
+ 0
+
+ 1
+ 1
+ 2
+ 0
+ 0
+ 0
+ startup_stm32l431xx.s
+ startup_stm32l431xx.s
+ 0
+ 0
+
+
+
+
+ Application/User
+ 0
+ 0
+ 0
+ 0
+
+ 2
+ 2
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\gpio.c
+ gpio.c
+ 0
+ 0
+
+
+ 2
+ 3
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\main.c
+ main.c
+ 0
+ 0
+
+
+ 2
+ 4
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\mcu_init.c
+ mcu_init.c
+ 0
+ 0
+
+
+ 2
+ 5
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\stm32l4xx_hal_msp.c
+ stm32l4xx_hal_msp.c
+ 0
+ 0
+
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\stm32l4xx_it_mpy.c
+ stm32l4xx_it_mpy.c
+ 0
+ 0
+
+
+ 2
+ 7
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\usart.c
+ usart.c
+ 0
+ 0
+
+
+ 2
+ 8
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\adc.c
+ adc.c
+ 0
+ 0
+
+
+ 2
+ 9
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\i2c.c
+ i2c.c
+ 0
+ 0
+
+
+ 2
+ 10
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\spi.c
+ spi.c
+ 0
+ 0
+
+
+ 2
+ 11
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\sdmmc.c
+ sdmmc.c
+ 0
+ 0
+
+
+ 2
+ 12
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\quadspi.c
+ quadspi.c
+ 0
+ 0
+
+
+
+
+ examples
+ 0
+ 0
+ 0
+ 0
+
+ 3
+ 13
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\examples\micropython_demo\micropython_demo.c
+ micropython_demo.c
+ 0
+ 0
+
+
+
+
+ Drivers/STM32L4xx_HAL_Driver
+ 0
+ 0
+ 0
+ 0
+
+ 4
+ 14
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim.c
+ stm32l4xx_hal_tim.c
+ 0
+ 0
+
+
+ 4
+ 15
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim_ex.c
+ stm32l4xx_hal_tim_ex.c
+ 0
+ 0
+
+
+ 4
+ 16
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c
+ stm32l4xx_hal_uart.c
+ 0
+ 0
+
+
+ 4
+ 17
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c
+ stm32l4xx_hal_uart_ex.c
+ 0
+ 0
+
+
+ 4
+ 18
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c
+ stm32l4xx_hal.c
+ 0
+ 0
+
+
+ 4
+ 19
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c
+ stm32l4xx_hal_i2c.c
+ 0
+ 0
+
+
+ 4
+ 20
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c_ex.c
+ stm32l4xx_hal_i2c_ex.c
+ 0
+ 0
+
+
+ 4
+ 21
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c
+ stm32l4xx_hal_rcc.c
+ 0
+ 0
+
+
+ 4
+ 22
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c
+ stm32l4xx_hal_rcc_ex.c
+ 0
+ 0
+
+
+ 4
+ 23
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash.c
+ stm32l4xx_hal_flash.c
+ 0
+ 0
+
+
+ 4
+ 24
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c
+ stm32l4xx_hal_flash_ex.c
+ 0
+ 0
+
+
+ 4
+ 25
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ramfunc.c
+ stm32l4xx_hal_flash_ramfunc.c
+ 0
+ 0
+
+
+ 4
+ 26
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c
+ stm32l4xx_hal_gpio.c
+ 0
+ 0
+
+
+ 4
+ 27
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c
+ stm32l4xx_hal_dma.c
+ 0
+ 0
+
+
+ 4
+ 28
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c
+ stm32l4xx_hal_dma_ex.c
+ 0
+ 0
+
+
+ 4
+ 29
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c
+ stm32l4xx_hal_pwr.c
+ 0
+ 0
+
+
+ 4
+ 30
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c
+ stm32l4xx_hal_pwr_ex.c
+ 0
+ 0
+
+
+ 4
+ 31
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c
+ stm32l4xx_hal_cortex.c
+ 0
+ 0
+
+
+ 4
+ 32
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc_ex.c
+ stm32l4xx_hal_adc_ex.c
+ 0
+ 0
+
+
+ 4
+ 33
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc.c
+ stm32l4xx_hal_adc.c
+ 0
+ 0
+
+
+ 4
+ 34
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac.c
+ stm32l4xx_hal_dac.c
+ 0
+ 0
+
+
+ 4
+ 35
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac_ex.c
+ stm32l4xx_hal_dac_ex.c
+ 0
+ 0
+
+
+ 4
+ 36
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi.c
+ stm32l4xx_hal_spi.c
+ 0
+ 0
+
+
+ 4
+ 37
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi_ex.c
+ stm32l4xx_hal_spi_ex.c
+ 0
+ 0
+
+
+ 4
+ 38
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd.c
+ stm32l4xx_hal_sd.c
+ 0
+ 0
+
+
+ 4
+ 39
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd_ex.c
+ stm32l4xx_hal_sd_ex.c
+ 0
+ 0
+
+
+ 4
+ 40
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_ll_sdmmc.c
+ stm32l4xx_ll_sdmmc.c
+ 0
+ 0
+
+
+ 4
+ 41
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_qspi.c
+ stm32l4xx_hal_qspi.c
+ 0
+ 0
+
+
+
+
+ Drivers/CMSIS
+ 0
+ 0
+ 0
+ 0
+
+ 5
+ 42
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\system_stm32l4xx.c
+ system_stm32l4xx.c
+ 0
+ 0
+
+
+
+
+ Hardware
+ 0
+ 0
+ 0
+ 0
+
+ 6
+ 43
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Hardware\BH1750\BH1750.c
+ BH1750.c
+ 0
+ 0
+
+
+ 6
+ 44
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Hardware\LCD_ST7789\lcd_spi2_drv.c
+ lcd_spi2_drv.c
+ 0
+ 0
+
+
+ 6
+ 45
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Hardware\W25QXX-QSPI\w25qxx.c
+ w25qxx.c
+ 0
+ 0
+
+
+
+
+ kernel
+ 0
+ 0
+ 0
+ 0
+
+ 7
+ 46
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mmblk.c
+ tos_mmblk.c
+ 0
+ 0
+
+
+ 7
+ 47
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mmheap.c
+ tos_mmheap.c
+ 0
+ 0
+
+
+ 7
+ 48
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mutex.c
+ tos_mutex.c
+ 0
+ 0
+
+
+ 7
+ 49
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sched.c
+ tos_sched.c
+ 0
+ 0
+
+
+ 7
+ 50
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sem.c
+ tos_sem.c
+ 0
+ 0
+
+
+ 7
+ 51
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_sys.c
+ tos_sys.c
+ 0
+ 0
+
+
+ 7
+ 52
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_task.c
+ tos_task.c
+ 0
+ 0
+
+
+ 7
+ 53
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_tick.c
+ tos_tick.c
+ 0
+ 0
+
+
+ 7
+ 54
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_time.c
+ tos_time.c
+ 0
+ 0
+
+
+ 7
+ 55
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_timer.c
+ tos_timer.c
+ 0
+ 0
+
+
+ 7
+ 56
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_event.c
+ tos_event.c
+ 0
+ 0
+
+
+ 7
+ 57
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_global.c
+ tos_global.c
+ 0
+ 0
+
+
+ 7
+ 58
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_pend.c
+ tos_pend.c
+ 0
+ 0
+
+
+ 7
+ 59
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_robin.c
+ tos_robin.c
+ 0
+ 0
+
+
+ 7
+ 60
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_binary_heap.c
+ tos_binary_heap.c
+ 0
+ 0
+
+
+ 7
+ 61
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_char_fifo.c
+ tos_char_fifo.c
+ 0
+ 0
+
+
+ 7
+ 62
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_completion.c
+ tos_completion.c
+ 0
+ 0
+
+
+ 7
+ 63
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_countdownlatch.c
+ tos_countdownlatch.c
+ 0
+ 0
+
+
+ 7
+ 64
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_mail_queue.c
+ tos_mail_queue.c
+ 0
+ 0
+
+
+ 7
+ 65
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_message_queue.c
+ tos_message_queue.c
+ 0
+ 0
+
+
+ 7
+ 66
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_mail_queue.c
+ tos_priority_mail_queue.c
+ 0
+ 0
+
+
+ 7
+ 67
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_message_queue.c
+ tos_priority_message_queue.c
+ 0
+ 0
+
+
+ 7
+ 68
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_priority_queue.c
+ tos_priority_queue.c
+ 0
+ 0
+
+
+ 7
+ 69
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_ring_queue.c
+ tos_ring_queue.c
+ 0
+ 0
+
+
+ 7
+ 70
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\kernel\core\tos_stopwatch.c
+ tos_stopwatch.c
+ 0
+ 0
+
+
+
+
+ cpu
+ 0
+ 0
+ 0
+ 0
+
+ 8
+ 71
+ 2
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S
+ port_s.S
+ 0
+ 0
+
+
+ 8
+ 72
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c
+ tos_cpu.c
+ 0
+ 0
+
+
+ 8
+ 73
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_c.c
+ port_c.c
+ 0
+ 0
+
+
+
+
+ config
+ 0
+ 0
+ 0
+ 0
+
+ 9
+ 74
+ 5
+ 0
+ 0
+ 0
+ ..\..\TOS-CONFIG\tos_config.h
+ tos_config.h
+ 0
+ 0
+
+
+
+
+ hal
+ 0
+ 0
+ 0
+ 0
+
+ 10
+ 75
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_uart.c
+ tos_hal_uart.c
+ 0
+ 0
+
+
+ 10
+ 76
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_sd.c
+ tos_hal_sd.c
+ 0
+ 0
+
+
+ 10
+ 77
+ 1
+ 0
+ 0
+ 0
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_pin.c
+ mp_tos_hal_pin.c
+ 0
+ 0
+
+
+ 10
+ 78
+ 1
+ 0
+ 0
+ 0
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_spi.c
+ mp_tos_hal_spi.c
+ 0
+ 0
+
+
+ 10
+ 79
+ 1
+ 0
+ 0
+ 0
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_uart.c
+ mp_tos_hal_uart.c
+ 0
+ 0
+
+
+
+
+ net
+ 0
+ 0
+ 0
+ 0
+
+ 11
+ 80
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\net\at\src\tos_at.c
+ tos_at.c
+ 0
+ 0
+
+
+ 11
+ 81
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\net\sal_module_wrapper\sal_module_wrapper.c
+ sal_module_wrapper.c
+ 0
+ 0
+
+
+ 11
+ 82
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\net\socket_wrapper\tos_at_socket.c
+ tos_at_socket.c
+ 0
+ 0
+
+
+ 11
+ 83
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\net\socket_wrapper\tos_at_socket_lib.c
+ tos_at_socket_lib.c
+ 0
+ 0
+
+
+ 11
+ 84
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\net\socket_wrapper\tos_at_socket_prv.c
+ tos_at_socket_prv.c
+ 0
+ 0
+
+
+
+
+ devices
+ 0
+ 0
+ 0
+ 0
+
+ 12
+ 85
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\devices\esp8266\esp8266.c
+ esp8266.c
+ 0
+ 0
+
+
+
+
+ vfs
+ 0
+ 0
+ 0
+ 0
+
+ 13
+ 86
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\vfs\tos_vfs.c
+ tos_vfs.c
+ 0
+ 0
+
+
+ 13
+ 87
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\vfs\tos_vfs_device.c
+ tos_vfs_device.c
+ 0
+ 0
+
+
+ 13
+ 88
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\vfs\tos_vfs_file.c
+ tos_vfs_file.c
+ 0
+ 0
+
+
+ 13
+ 89
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\vfs\tos_vfs_fs.c
+ tos_vfs_fs.c
+ 0
+ 0
+
+
+ 13
+ 90
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\vfs\tos_vfs_inode.c
+ tos_vfs_inode.c
+ 0
+ 0
+
+
+
+
+ fatfs
+ 0
+ 0
+ 0
+ 0
+
+ 14
+ 91
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_diskio.c
+ tos_diskio.c
+ 0
+ 0
+
+
+ 14
+ 92
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_drv.c
+ tos_fatfs_drv.c
+ 0
+ 0
+
+
+ 14
+ 93
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_vfs.c
+ tos_fatfs_vfs.c
+ 0
+ 0
+
+
+ 14
+ 94
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ff.c
+ tos_ff.c
+ 0
+ 0
+
+
+ 14
+ 95
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ffsystem.c
+ tos_ffsystem.c
+ 0
+ 0
+
+
+ 14
+ 96
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ffunicode.c
+ tos_ffunicode.c
+ 0
+ 0
+
+
+
+
+ micropython/py
+ 0
+ 0
+ 0
+ 0
+
+ 15
+ 97
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\argcheck.c
+ argcheck.c
+ 0
+ 0
+
+
+ 15
+ 98
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmarm.c
+ asmarm.c
+ 0
+ 0
+
+
+ 15
+ 99
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmbase.c
+ asmbase.c
+ 0
+ 0
+
+
+ 15
+ 100
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmthumb.c
+ asmthumb.c
+ 0
+ 0
+
+
+ 15
+ 101
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmx64.c
+ asmx64.c
+ 0
+ 0
+
+
+ 15
+ 102
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmx86.c
+ asmx86.c
+ 0
+ 0
+
+
+ 15
+ 103
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\asmxtensa.c
+ asmxtensa.c
+ 0
+ 0
+
+
+ 15
+ 104
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\bc.c
+ bc.c
+ 0
+ 0
+
+
+ 15
+ 105
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\binary.c
+ binary.c
+ 0
+ 0
+
+
+ 15
+ 106
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinevex.c
+ builtinevex.c
+ 0
+ 0
+
+
+ 15
+ 107
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinhelp.c
+ builtinhelp.c
+ 0
+ 0
+
+
+ 15
+ 108
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\builtinimport.c
+ builtinimport.c
+ 0
+ 0
+
+
+ 15
+ 109
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\compile.c
+ compile.c
+ 0
+ 0
+
+
+ 15
+ 110
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitbc.c
+ emitbc.c
+ 0
+ 0
+
+
+ 15
+ 111
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitcommon.c
+ emitcommon.c
+ 0
+ 0
+
+
+ 15
+ 112
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitglue.c
+ emitglue.c
+ 0
+ 0
+
+
+ 15
+ 113
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitinlinethumb.c
+ emitinlinethumb.c
+ 0
+ 0
+
+
+ 15
+ 114
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitinlinextensa.c
+ emitinlinextensa.c
+ 0
+ 0
+
+
+ 15
+ 115
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnarm.c
+ emitnarm.c
+ 0
+ 0
+
+
+ 15
+ 116
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnative.c
+ emitnative.c
+ 0
+ 0
+
+
+ 15
+ 117
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnthumb.c
+ emitnthumb.c
+ 0
+ 0
+
+
+ 15
+ 118
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnx64.c
+ emitnx64.c
+ 0
+ 0
+
+
+ 15
+ 119
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnx86.c
+ emitnx86.c
+ 0
+ 0
+
+
+ 15
+ 120
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnxtensa.c
+ emitnxtensa.c
+ 0
+ 0
+
+
+ 15
+ 121
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\emitnxtensawin.c
+ emitnxtensawin.c
+ 0
+ 0
+
+
+ 15
+ 122
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\formatfloat.c
+ formatfloat.c
+ 0
+ 0
+
+
+ 15
+ 123
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\frozenmod.c
+ frozenmod.c
+ 0
+ 0
+
+
+ 15
+ 124
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\gc.c
+ gc.c
+ 0
+ 0
+
+
+ 15
+ 125
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\lexer.c
+ lexer.c
+ 0
+ 0
+
+
+ 15
+ 126
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\malloc.c
+ malloc.c
+ 0
+ 0
+
+
+ 15
+ 127
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\map.c
+ map.c
+ 0
+ 0
+
+
+ 15
+ 128
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modarray.c
+ modarray.c
+ 0
+ 0
+
+
+ 15
+ 129
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modbuiltins.c
+ modbuiltins.c
+ 0
+ 0
+
+
+ 15
+ 130
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modcmath.c
+ modcmath.c
+ 0
+ 0
+
+
+ 15
+ 131
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modcollections.c
+ modcollections.c
+ 0
+ 0
+
+
+ 15
+ 132
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modgc.c
+ modgc.c
+ 0
+ 0
+
+
+ 15
+ 133
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modio.c
+ modio.c
+ 0
+ 0
+
+
+ 15
+ 134
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modmath.c
+ modmath.c
+ 0
+ 0
+
+
+ 15
+ 135
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modmicropython.c
+ modmicropython.c
+ 0
+ 0
+
+
+ 15
+ 136
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modstruct.c
+ modstruct.c
+ 0
+ 0
+
+
+ 15
+ 137
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modsys.c
+ modsys.c
+ 0
+ 0
+
+
+ 15
+ 138
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\modthread.c
+ modthread.c
+ 0
+ 0
+
+
+ 15
+ 139
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\moduerrno.c
+ moduerrno.c
+ 0
+ 0
+
+
+ 15
+ 140
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpprint.c
+ mpprint.c
+ 0
+ 0
+
+
+ 15
+ 141
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpstate.c
+ mpstate.c
+ 0
+ 0
+
+
+ 15
+ 142
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\mpz.c
+ mpz.c
+ 0
+ 0
+
+
+ 15
+ 143
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nativeglue.c
+ nativeglue.c
+ 0
+ 0
+
+
+ 15
+ 144
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlr.c
+ nlr.c
+ 0
+ 0
+
+
+ 15
+ 145
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlraarch64.c
+ nlraarch64.c
+ 0
+ 0
+
+
+ 15
+ 146
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrpowerpc.c
+ nlrpowerpc.c
+ 0
+ 0
+
+
+ 15
+ 147
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrsetjmp.c
+ nlrsetjmp.c
+ 0
+ 0
+
+
+ 15
+ 148
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrthumb.c
+ nlrthumb.c
+ 0
+ 0
+
+
+ 15
+ 149
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrx64.c
+ nlrx64.c
+ 0
+ 0
+
+
+ 15
+ 150
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrx86.c
+ nlrx86.c
+ 0
+ 0
+
+
+ 15
+ 151
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\nlrxtensa.c
+ nlrxtensa.c
+ 0
+ 0
+
+
+ 15
+ 152
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\obj.c
+ obj.c
+ 0
+ 0
+
+
+ 15
+ 153
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objarray.c
+ objarray.c
+ 0
+ 0
+
+
+ 15
+ 154
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objattrtuple.c
+ objattrtuple.c
+ 0
+ 0
+
+
+ 15
+ 155
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objbool.c
+ objbool.c
+ 0
+ 0
+
+
+ 15
+ 156
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objboundmeth.c
+ objboundmeth.c
+ 0
+ 0
+
+
+ 15
+ 157
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objcell.c
+ objcell.c
+ 0
+ 0
+
+
+ 15
+ 158
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objclosure.c
+ objclosure.c
+ 0
+ 0
+
+
+ 15
+ 159
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objcomplex.c
+ objcomplex.c
+ 0
+ 0
+
+
+ 15
+ 160
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objdeque.c
+ objdeque.c
+ 0
+ 0
+
+
+ 15
+ 161
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objdict.c
+ objdict.c
+ 0
+ 0
+
+
+ 15
+ 162
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objenumerate.c
+ objenumerate.c
+ 0
+ 0
+
+
+ 15
+ 163
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objexcept.c
+ objexcept.c
+ 0
+ 0
+
+
+ 15
+ 164
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfilter.c
+ objfilter.c
+ 0
+ 0
+
+
+ 15
+ 165
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfloat.c
+ objfloat.c
+ 0
+ 0
+
+
+ 15
+ 166
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objfun.c
+ objfun.c
+ 0
+ 0
+
+
+ 15
+ 167
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objgenerator.c
+ objgenerator.c
+ 0
+ 0
+
+
+ 15
+ 168
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objgetitemiter.c
+ objgetitemiter.c
+ 0
+ 0
+
+
+ 15
+ 169
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint.c
+ objint.c
+ 0
+ 0
+
+
+ 15
+ 170
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint_longlong.c
+ objint_longlong.c
+ 0
+ 0
+
+
+ 15
+ 171
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objint_mpz.c
+ objint_mpz.c
+ 0
+ 0
+
+
+ 15
+ 172
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objlist.c
+ objlist.c
+ 0
+ 0
+
+
+ 15
+ 173
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objmap.c
+ objmap.c
+ 0
+ 0
+
+
+ 15
+ 174
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objmodule.c
+ objmodule.c
+ 0
+ 0
+
+
+ 15
+ 175
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objnamedtuple.c
+ objnamedtuple.c
+ 0
+ 0
+
+
+ 15
+ 176
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objnone.c
+ objnone.c
+ 0
+ 0
+
+
+ 15
+ 177
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objobject.c
+ objobject.c
+ 0
+ 0
+
+
+ 15
+ 178
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objpolyiter.c
+ objpolyiter.c
+ 0
+ 0
+
+
+ 15
+ 179
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objproperty.c
+ objproperty.c
+ 0
+ 0
+
+
+ 15
+ 180
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objrange.c
+ objrange.c
+ 0
+ 0
+
+
+ 15
+ 181
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objreversed.c
+ objreversed.c
+ 0
+ 0
+
+
+ 15
+ 182
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objset.c
+ objset.c
+ 0
+ 0
+
+
+ 15
+ 183
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objsingleton.c
+ objsingleton.c
+ 0
+ 0
+
+
+ 15
+ 184
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objslice.c
+ objslice.c
+ 0
+ 0
+
+
+ 15
+ 185
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstr.c
+ objstr.c
+ 0
+ 0
+
+
+ 15
+ 186
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstringio.c
+ objstringio.c
+ 0
+ 0
+
+
+ 15
+ 187
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objstrunicode.c
+ objstrunicode.c
+ 0
+ 0
+
+
+ 15
+ 188
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objtuple.c
+ objtuple.c
+ 0
+ 0
+
+
+ 15
+ 189
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objtype.c
+ objtype.c
+ 0
+ 0
+
+
+ 15
+ 190
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\objzip.c
+ objzip.c
+ 0
+ 0
+
+
+ 15
+ 191
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\opmethods.c
+ opmethods.c
+ 0
+ 0
+
+
+ 15
+ 192
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\pairheap.c
+ pairheap.c
+ 0
+ 0
+
+
+ 15
+ 193
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parse.c
+ parse.c
+ 0
+ 0
+
+
+ 15
+ 194
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parsenum.c
+ parsenum.c
+ 0
+ 0
+
+
+ 15
+ 195
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\parsenumbase.c
+ parsenumbase.c
+ 0
+ 0
+
+
+ 15
+ 196
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\persistentcode.c
+ persistentcode.c
+ 0
+ 0
+
+
+ 15
+ 197
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\profile.c
+ profile.c
+ 0
+ 0
+
+
+ 15
+ 198
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\pystack.c
+ pystack.c
+ 0
+ 0
+
+
+ 15
+ 199
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\qstr.c
+ qstr.c
+ 0
+ 0
+
+
+ 15
+ 200
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\reader.c
+ reader.c
+ 0
+ 0
+
+
+ 15
+ 201
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\repl.c
+ repl.c
+ 0
+ 0
+
+
+ 15
+ 202
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\ringbuf.c
+ ringbuf.c
+ 0
+ 0
+
+
+ 15
+ 203
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\runtime.c
+ runtime.c
+ 0
+ 0
+
+
+ 15
+ 204
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\runtime_utils.c
+ runtime_utils.c
+ 0
+ 0
+
+
+ 15
+ 205
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\scheduler.c
+ scheduler.c
+ 0
+ 0
+
+
+ 15
+ 206
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\scope.c
+ scope.c
+ 0
+ 0
+
+
+ 15
+ 207
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\sequence.c
+ sequence.c
+ 0
+ 0
+
+
+ 15
+ 208
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\showbc.c
+ showbc.c
+ 0
+ 0
+
+
+ 15
+ 209
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\smallint.c
+ smallint.c
+ 0
+ 0
+
+
+ 15
+ 210
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\stackctrl.c
+ stackctrl.c
+ 0
+ 0
+
+
+ 15
+ 211
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\stream.c
+ stream.c
+ 0
+ 0
+
+
+ 15
+ 212
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\unicode.c
+ unicode.c
+ 0
+ 0
+
+
+ 15
+ 213
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\vm.c
+ vm.c
+ 0
+ 0
+
+
+ 15
+ 214
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\vstr.c
+ vstr.c
+ 0
+ 0
+
+
+ 15
+ 215
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\py\warning.c
+ warning.c
+ 0
+ 0
+
+
+
+
+ micropython/shared
+ 0
+ 0
+ 0
+ 0
+
+ 16
+ 216
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\readline\readline.c
+ readline.c
+ 0
+ 0
+
+
+ 16
+ 217
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\pyexec.c
+ pyexec.c
+ 0
+ 0
+
+
+ 16
+ 218
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\stdout_helpers.c
+ stdout_helpers.c
+ 0
+ 0
+
+
+ 16
+ 219
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\sys_stdio_mphal.c
+ sys_stdio_mphal.c
+ 0
+ 0
+
+
+ 16
+ 220
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\runtime\interrupt_char.c
+ interrupt_char.c
+ 0
+ 0
+
+
+ 16
+ 221
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\shared\netutils\netutils.c
+ netutils.c
+ 0
+ 0
+
+
+
+
+ micropython/extmod
+ 0
+ 0
+ 0
+ 0
+
+ 17
+ 222
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modframebuf.c
+ modframebuf.c
+ 0
+ 0
+
+
+ 17
+ 223
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduasyncio.c
+ moduasyncio.c
+ 0
+ 0
+
+
+ 17
+ 224
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modubinascii.c
+ modubinascii.c
+ 0
+ 0
+
+
+ 17
+ 225
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moductypes.c
+ moductypes.c
+ 0
+ 0
+
+
+ 17
+ 226
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduhashlib.c
+ moduhashlib.c
+ 0
+ 0
+
+
+ 17
+ 227
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduheapq.c
+ moduheapq.c
+ 0
+ 0
+
+
+ 17
+ 228
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modujson.c
+ modujson.c
+ 0
+ 0
+
+
+ 17
+ 229
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduos.c
+ moduos.c
+ 0
+ 0
+
+
+ 17
+ 230
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modurandom.c
+ modurandom.c
+ 0
+ 0
+
+
+ 17
+ 231
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modure.c
+ modure.c
+ 0
+ 0
+
+
+ 17
+ 232
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduselect.c
+ moduselect.c
+ 0
+ 0
+
+
+ 17
+ 233
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\moduzlib.c
+ moduzlib.c
+ 0
+ 0
+
+
+ 17
+ 234
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\vfs.c
+ vfs.c
+ 0
+ 0
+
+
+ 17
+ 235
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\vfs_reader.c
+ vfs_reader.c
+ 0
+ 0
+
+
+ 17
+ 236
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\uos_dupterm.c
+ uos_dupterm.c
+ 0
+ 0
+
+
+ 17
+ 237
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\utime_mphal.c
+ utime_mphal.c
+ 0
+ 0
+
+
+ 17
+ 238
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_signal.c
+ machine_signal.c
+ 0
+ 0
+
+
+ 17
+ 239
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\virtpin.c
+ virtpin.c
+ 0
+ 0
+
+
+ 17
+ 240
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_mem.c
+ machine_mem.c
+ 0
+ 0
+
+
+ 17
+ 241
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_spi.c
+ machine_spi.c
+ 0
+ 0
+
+
+ 17
+ 242
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\machine_i2c.c
+ machine_i2c.c
+ 0
+ 0
+
+
+ 17
+ 243
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modnetwork.c
+ modnetwork.c
+ 0
+ 0
+
+
+ 17
+ 244
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\extmod\modusocket.c
+ modusocket.c
+ 0
+ 0
+
+
+
+
+ micropython/drivers
+ 0
+ 0
+ 0
+ 0
+
+ 18
+ 245
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\drivers\bus\softspi.c
+ softspi.c
+ 0
+ 0
+
+
+
+
+ micropython/port
+ 0
+ 0
+ 0
+ 0
+
+ 19
+ 246
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\help.c
+ help.c
+ 0
+ 0
+
+
+ 19
+ 247
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mphalport.c
+ mphalport.c
+ 0
+ 0
+
+
+ 19
+ 248
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mpmain.c
+ mpmain.c
+ 0
+ 0
+
+
+ 19
+ 249
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\mpthreadport.c
+ mpthreadport.c
+ 0
+ 0
+
+
+ 19
+ 250
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_hw_spi.c
+ machine_hw_spi.c
+ 0
+ 0
+
+
+ 19
+ 251
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_pin.c
+ machine_pin.c
+ 0
+ 0
+
+
+ 19
+ 252
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_timer.c
+ machine_timer.c
+ 0
+ 0
+
+
+ 19
+ 253
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\machine_uart.c
+ machine_uart.c
+ 0
+ 0
+
+
+ 19
+ 254
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modesp8266.c
+ modesp8266.c
+ 0
+ 0
+
+
+ 19
+ 255
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modmachine.c
+ modmachine.c
+ 0
+ 0
+
+
+ 19
+ 256
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\modutime.c
+ modutime.c
+ 0
+ 0
+
+
+ 19
+ 257
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos.c
+ vfs_tos.c
+ 0
+ 0
+
+
+ 19
+ 258
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos_file.c
+ vfs_tos_file.c
+ 0
+ 0
+
+
+ 19
+ 259
+ 1
+ 0
+ 0
+ 0
+ ..\micropython_basic_demo\board\mphalboard.c
+ mphalboard.c
+ 0
+ 0
+
+
+
+
+ ::CMSIS
+ 0
+ 0
+ 0
+ 1
+
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvprojx b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvprojx
new file mode 100644
index 00000000..a53dc0a3
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_STM32L31RC.uvprojx
@@ -0,0 +1,2137 @@
+
+
+
+ 2.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+ TencentOS_tiny
+ 0x4
+ ARM-ADS
+ 5060750::V5.06 update 6 (build 750)::ARMCC
+ 0
+
+
+ STM32L431RCTx
+ STMicroelectronics
+ Keil.STM32L4xx_DFP.2.2.0
+ http://www.keil.com/pack
+ IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32L431RCTx$CMSIS\SVD\STM32L4x1.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\obj\
+ TencentOS_tiny
+ 1
+ 0
+ 1
+ 1
+ 0
+ .\list\
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make clean-build V=1
+ cmd.exe /C cd $P..\..\..\..\components\language\micropython\port & make genhdr V=1 PYTHON=python PORT_BOARD_DIR=$Pboard TARGET_GENHDR_DIR=$Pgenhdr
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP -MPU
+ DCM.DLL
+ -pCM4
+ SARMCM3.DLL
+ -MPU
+ TCM.DLL
+ -pCM4
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4096
+
+ 1
+ BIN\UL2CM3.DLL
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M4"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x10000
+
+
+ 1
+ 0x8000000
+ 0x40000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x90000000
+ 0x800000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x40000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x10000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+
+
+ USE_HAL_DRIVER,STM32L431xx,WITH_TOS_NET_ADAPTER,USE_ESP8266,USE_MICROPYTHON
+
+ ..\..\BSP\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Legacy;..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L4xx\Include;..\..\..\..\platform\vendor_bsp\st\CMSIS\Include;..\..\..\..\kernel\core\include;..\..\TOS-CONFIG;..\..\..\..\platform\arch\arm\cortex-m4\keil;..\..\..\..\kernel\pm\include;..\..\..\..\osal\cmsis_os;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\net\at\include;..\..\..\..\kernel\hal\include;..\..\..\..\devices\esp8266;..\..\..\..\net\at\include;..\..\..\..\net\sal_module_wrapper;..\..\..\..\net\socket_wrapper\include;..\..\BSP\Hardware\LCD_ST7789;..\..\BSP\Hardware\BH1750;..\..\BSP\Hardware\W25QXX-QSPI;..\..\..\..\examples\micropython_demo;..\..\..\..\components\fs\vfs\include;..\..\..\..\components\fs\fatfs\wrapper\include;..\..\..\..\components\fs\fatfs\3rdparty;..\..\..\..\components\language\micropython;..\..\..\..\components\language\micropython\port;..\..\..\..\components\language\micropython\port\modules;..\micropython_extra_demo;.\board;.\board\hal
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+
+
+
+
+
+
+
+
+
+
+
+ Application/MDK-ARM
+
+
+ startup_stm32l431xx.s
+ 2
+ startup_stm32l431xx.s
+
+
+
+
+ Application/User
+
+
+ gpio.c
+ 1
+ ..\..\BSP\Src\gpio.c
+
+
+ main.c
+ 1
+ ..\..\BSP\Src\main.c
+
+
+ mcu_init.c
+ 1
+ ..\..\BSP\Src\mcu_init.c
+
+
+ stm32l4xx_hal_msp.c
+ 1
+ ..\..\BSP\Src\stm32l4xx_hal_msp.c
+
+
+ stm32l4xx_it_mpy.c
+ 1
+ ..\..\BSP\Src\stm32l4xx_it_mpy.c
+
+
+ usart.c
+ 1
+ ..\..\BSP\Src\usart.c
+
+
+ adc.c
+ 1
+ ..\..\BSP\Src\adc.c
+
+
+ i2c.c
+ 1
+ ..\..\BSP\Src\i2c.c
+
+
+ spi.c
+ 1
+ ..\..\BSP\Src\spi.c
+
+
+ sdmmc.c
+ 1
+ ..\..\BSP\Src\sdmmc.c
+
+
+ quadspi.c
+ 1
+ ..\..\BSP\Src\quadspi.c
+
+
+
+
+ examples
+
+
+ micropython_demo.c
+ 1
+ ..\..\..\..\examples\micropython_demo\micropython_demo.c
+
+
+
+
+ Drivers/STM32L4xx_HAL_Driver
+
+
+ stm32l4xx_hal_tim.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim.c
+
+
+ stm32l4xx_hal_tim_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim_ex.c
+
+
+ stm32l4xx_hal_uart.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c
+
+
+ stm32l4xx_hal_uart_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c
+
+
+ stm32l4xx_hal.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c
+
+
+ stm32l4xx_hal_i2c.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c
+
+
+ stm32l4xx_hal_i2c_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c_ex.c
+
+
+ stm32l4xx_hal_rcc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c
+
+
+ stm32l4xx_hal_rcc_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c
+
+
+ stm32l4xx_hal_flash.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash.c
+
+
+ stm32l4xx_hal_flash_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c
+
+
+ stm32l4xx_hal_flash_ramfunc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ramfunc.c
+
+
+ stm32l4xx_hal_gpio.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c
+
+
+ stm32l4xx_hal_dma.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c
+
+
+ stm32l4xx_hal_dma_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c
+
+
+ stm32l4xx_hal_pwr.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c
+
+
+ stm32l4xx_hal_pwr_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c
+
+
+ stm32l4xx_hal_cortex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c
+
+
+ stm32l4xx_hal_adc_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc_ex.c
+
+
+ stm32l4xx_hal_adc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc.c
+
+
+ stm32l4xx_hal_dac.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac.c
+
+
+ stm32l4xx_hal_dac_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac_ex.c
+
+
+ stm32l4xx_hal_spi.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi.c
+
+
+ stm32l4xx_hal_spi_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi_ex.c
+
+
+ stm32l4xx_hal_sd.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd.c
+
+
+ stm32l4xx_hal_sd_ex.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd_ex.c
+
+
+ stm32l4xx_ll_sdmmc.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_ll_sdmmc.c
+
+
+ stm32l4xx_hal_qspi.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_qspi.c
+
+
+
+
+ Drivers/CMSIS
+
+
+ system_stm32l4xx.c
+ 1
+ ..\..\BSP\Src\system_stm32l4xx.c
+
+
+
+
+ Hardware
+
+
+ BH1750.c
+ 1
+ ..\..\BSP\Hardware\BH1750\BH1750.c
+
+
+ lcd_spi2_drv.c
+ 1
+ ..\..\BSP\Hardware\LCD_ST7789\lcd_spi2_drv.c
+
+
+ w25qxx.c
+ 1
+ ..\..\BSP\Hardware\W25QXX-QSPI\w25qxx.c
+
+
+
+
+ kernel
+
+
+ tos_mmblk.c
+ 1
+ ..\..\..\..\kernel\core\tos_mmblk.c
+
+
+ tos_mmheap.c
+ 1
+ ..\..\..\..\kernel\core\tos_mmheap.c
+
+
+ tos_mutex.c
+ 1
+ ..\..\..\..\kernel\core\tos_mutex.c
+
+
+ tos_sched.c
+ 1
+ ..\..\..\..\kernel\core\tos_sched.c
+
+
+ tos_sem.c
+ 1
+ ..\..\..\..\kernel\core\tos_sem.c
+
+
+ tos_sys.c
+ 1
+ ..\..\..\..\kernel\core\tos_sys.c
+
+
+ tos_task.c
+ 1
+ ..\..\..\..\kernel\core\tos_task.c
+
+
+ tos_tick.c
+ 1
+ ..\..\..\..\kernel\core\tos_tick.c
+
+
+ tos_time.c
+ 1
+ ..\..\..\..\kernel\core\tos_time.c
+
+
+ tos_timer.c
+ 1
+ ..\..\..\..\kernel\core\tos_timer.c
+
+
+ tos_event.c
+ 1
+ ..\..\..\..\kernel\core\tos_event.c
+
+
+ tos_global.c
+ 1
+ ..\..\..\..\kernel\core\tos_global.c
+
+
+ tos_pend.c
+ 1
+ ..\..\..\..\kernel\core\tos_pend.c
+
+
+ tos_robin.c
+ 1
+ ..\..\..\..\kernel\core\tos_robin.c
+
+
+ tos_binary_heap.c
+ 1
+ ..\..\..\..\kernel\core\tos_binary_heap.c
+
+
+ tos_char_fifo.c
+ 1
+ ..\..\..\..\kernel\core\tos_char_fifo.c
+
+
+ tos_completion.c
+ 1
+ ..\..\..\..\kernel\core\tos_completion.c
+
+
+ tos_countdownlatch.c
+ 1
+ ..\..\..\..\kernel\core\tos_countdownlatch.c
+
+
+ tos_mail_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_mail_queue.c
+
+
+ tos_message_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_message_queue.c
+
+
+ tos_priority_mail_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_mail_queue.c
+
+
+ tos_priority_message_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_message_queue.c
+
+
+ tos_priority_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_priority_queue.c
+
+
+ tos_ring_queue.c
+ 1
+ ..\..\..\..\kernel\core\tos_ring_queue.c
+
+
+ tos_stopwatch.c
+ 1
+ ..\..\..\..\kernel\core\tos_stopwatch.c
+
+
+
+
+ cpu
+
+
+ port_s.S
+ 2
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S
+
+
+ tos_cpu.c
+ 1
+ ..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c
+
+
+ port_c.c
+ 1
+ ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_c.c
+
+
+
+
+ config
+
+
+ tos_config.h
+ 5
+ ..\..\TOS-CONFIG\tos_config.h
+
+
+
+
+ hal
+
+
+ tos_hal_uart.c
+ 1
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_uart.c
+
+
+ tos_hal_sd.c
+ 1
+ ..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_sd.c
+
+
+ mp_tos_hal_pin.c
+ 1
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_pin.c
+
+
+ mp_tos_hal_spi.c
+ 1
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_spi.c
+
+
+ mp_tos_hal_uart.c
+ 1
+ ..\micropython_basic_demo\board\hal\mp_tos_hal_uart.c
+
+
+
+
+ net
+
+
+ tos_at.c
+ 1
+ ..\..\..\..\net\at\src\tos_at.c
+
+
+ sal_module_wrapper.c
+ 1
+ ..\..\..\..\net\sal_module_wrapper\sal_module_wrapper.c
+
+
+ tos_at_socket.c
+ 1
+ ..\..\..\..\net\socket_wrapper\tos_at_socket.c
+
+
+ tos_at_socket_lib.c
+ 1
+ ..\..\..\..\net\socket_wrapper\tos_at_socket_lib.c
+
+
+ tos_at_socket_prv.c
+ 1
+ ..\..\..\..\net\socket_wrapper\tos_at_socket_prv.c
+
+
+
+
+ devices
+
+
+ esp8266.c
+ 1
+ ..\..\..\..\devices\esp8266\esp8266.c
+
+
+
+
+ vfs
+
+
+ tos_vfs.c
+ 1
+ ..\..\..\..\components\fs\vfs\tos_vfs.c
+
+
+ tos_vfs_device.c
+ 1
+ ..\..\..\..\components\fs\vfs\tos_vfs_device.c
+
+
+ tos_vfs_file.c
+ 1
+ ..\..\..\..\components\fs\vfs\tos_vfs_file.c
+
+
+ tos_vfs_fs.c
+ 1
+ ..\..\..\..\components\fs\vfs\tos_vfs_fs.c
+
+
+ tos_vfs_inode.c
+ 1
+ ..\..\..\..\components\fs\vfs\tos_vfs_inode.c
+
+
+
+
+ fatfs
+
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ tos_diskio.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_diskio.c
+
+
+ tos_fatfs_drv.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_drv.c
+
+
+ tos_fatfs_vfs.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_vfs.c
+
+
+ tos_ff.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ff.c
+
+
+ tos_ffsystem.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ffsystem.c
+
+
+ tos_ffunicode.c
+ 1
+ ..\..\..\..\components\fs\fatfs\wrapper\tos_ffunicode.c
+
+
+
+
+ micropython/py
+
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ argcheck.c
+ 1
+ ..\..\..\..\components\language\micropython\py\argcheck.c
+
+
+ asmarm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmarm.c
+
+
+ asmbase.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmbase.c
+
+
+ asmthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmthumb.c
+
+
+ asmx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmx64.c
+
+
+ asmx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmx86.c
+
+
+ asmxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\asmxtensa.c
+
+
+ bc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\bc.c
+
+
+ binary.c
+ 1
+ ..\..\..\..\components\language\micropython\py\binary.c
+
+
+ builtinevex.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinevex.c
+
+
+ builtinhelp.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinhelp.c
+
+
+ builtinimport.c
+ 1
+ ..\..\..\..\components\language\micropython\py\builtinimport.c
+
+
+ compile.c
+ 1
+ ..\..\..\..\components\language\micropython\py\compile.c
+
+
+ emitbc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitbc.c
+
+
+ emitcommon.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitcommon.c
+
+
+ emitglue.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitglue.c
+
+
+ emitinlinethumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitinlinethumb.c
+
+
+ emitinlinextensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitinlinextensa.c
+
+
+ emitnarm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnarm.c
+
+
+ emitnative.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnative.c
+
+
+ emitnthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnthumb.c
+
+
+ emitnx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnx64.c
+
+
+ emitnx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnx86.c
+
+
+ emitnxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnxtensa.c
+
+
+ emitnxtensawin.c
+ 1
+ ..\..\..\..\components\language\micropython\py\emitnxtensawin.c
+
+
+ formatfloat.c
+ 1
+ ..\..\..\..\components\language\micropython\py\formatfloat.c
+
+
+ frozenmod.c
+ 1
+ ..\..\..\..\components\language\micropython\py\frozenmod.c
+
+
+ gc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\gc.c
+
+
+ lexer.c
+ 1
+ ..\..\..\..\components\language\micropython\py\lexer.c
+
+
+ malloc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\malloc.c
+
+
+ map.c
+ 1
+ ..\..\..\..\components\language\micropython\py\map.c
+
+
+ modarray.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modarray.c
+
+
+ modbuiltins.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modbuiltins.c
+
+
+ modcmath.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modcmath.c
+
+
+ modcollections.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modcollections.c
+
+
+ modgc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modgc.c
+
+
+ modio.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modio.c
+
+
+ modmath.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modmath.c
+
+
+ modmicropython.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modmicropython.c
+
+
+ modstruct.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modstruct.c
+
+
+ modsys.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modsys.c
+
+
+ modthread.c
+ 1
+ ..\..\..\..\components\language\micropython\py\modthread.c
+
+
+ moduerrno.c
+ 1
+ ..\..\..\..\components\language\micropython\py\moduerrno.c
+
+
+ mpprint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpprint.c
+
+
+ mpstate.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpstate.c
+
+
+ mpz.c
+ 1
+ ..\..\..\..\components\language\micropython\py\mpz.c
+
+
+ nativeglue.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nativeglue.c
+
+
+ nlr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlr.c
+
+
+ nlraarch64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlraarch64.c
+
+
+ nlrpowerpc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrpowerpc.c
+
+
+ nlrsetjmp.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrsetjmp.c
+
+
+ nlrthumb.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrthumb.c
+
+
+ nlrx64.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrx64.c
+
+
+ nlrx86.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrx86.c
+
+
+ nlrxtensa.c
+ 1
+ ..\..\..\..\components\language\micropython\py\nlrxtensa.c
+
+
+ obj.c
+ 1
+ ..\..\..\..\components\language\micropython\py\obj.c
+
+
+ objarray.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objarray.c
+
+
+ objattrtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objattrtuple.c
+
+
+ objbool.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objbool.c
+
+
+ objboundmeth.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objboundmeth.c
+
+
+ objcell.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objcell.c
+
+
+ objclosure.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objclosure.c
+
+
+ objcomplex.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objcomplex.c
+
+
+ objdeque.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objdeque.c
+
+
+ objdict.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objdict.c
+
+
+ objenumerate.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objenumerate.c
+
+
+ objexcept.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objexcept.c
+
+
+ objfilter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfilter.c
+
+
+ objfloat.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfloat.c
+
+
+ objfun.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objfun.c
+
+
+ objgenerator.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objgenerator.c
+
+
+ objgetitemiter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objgetitemiter.c
+
+
+ objint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint.c
+
+
+ objint_longlong.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint_longlong.c
+
+
+ objint_mpz.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objint_mpz.c
+
+
+ objlist.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objlist.c
+
+
+ objmap.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objmap.c
+
+
+ objmodule.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objmodule.c
+
+
+ objnamedtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objnamedtuple.c
+
+
+ objnone.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objnone.c
+
+
+ objobject.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objobject.c
+
+
+ objpolyiter.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objpolyiter.c
+
+
+ objproperty.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objproperty.c
+
+
+ objrange.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objrange.c
+
+
+ objreversed.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objreversed.c
+
+
+ objset.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objset.c
+
+
+ objsingleton.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objsingleton.c
+
+
+ objslice.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objslice.c
+
+
+ objstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstr.c
+
+
+ objstringio.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstringio.c
+
+
+ objstrunicode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objstrunicode.c
+
+
+ objtuple.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objtuple.c
+
+
+ objtype.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objtype.c
+
+
+ objzip.c
+ 1
+ ..\..\..\..\components\language\micropython\py\objzip.c
+
+
+ opmethods.c
+ 1
+ ..\..\..\..\components\language\micropython\py\opmethods.c
+
+
+ pairheap.c
+ 1
+ ..\..\..\..\components\language\micropython\py\pairheap.c
+
+
+ parse.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parse.c
+
+
+ parsenum.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parsenum.c
+
+
+ parsenumbase.c
+ 1
+ ..\..\..\..\components\language\micropython\py\parsenumbase.c
+
+
+ persistentcode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\persistentcode.c
+
+
+ profile.c
+ 1
+ ..\..\..\..\components\language\micropython\py\profile.c
+
+
+ pystack.c
+ 1
+ ..\..\..\..\components\language\micropython\py\pystack.c
+
+
+ qstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\qstr.c
+
+
+ reader.c
+ 1
+ ..\..\..\..\components\language\micropython\py\reader.c
+
+
+ repl.c
+ 1
+ ..\..\..\..\components\language\micropython\py\repl.c
+
+
+ ringbuf.c
+ 1
+ ..\..\..\..\components\language\micropython\py\ringbuf.c
+
+
+ runtime.c
+ 1
+ ..\..\..\..\components\language\micropython\py\runtime.c
+
+
+ runtime_utils.c
+ 1
+ ..\..\..\..\components\language\micropython\py\runtime_utils.c
+
+
+ scheduler.c
+ 1
+ ..\..\..\..\components\language\micropython\py\scheduler.c
+
+
+ scope.c
+ 1
+ ..\..\..\..\components\language\micropython\py\scope.c
+
+
+ sequence.c
+ 1
+ ..\..\..\..\components\language\micropython\py\sequence.c
+
+
+ showbc.c
+ 1
+ ..\..\..\..\components\language\micropython\py\showbc.c
+
+
+ smallint.c
+ 1
+ ..\..\..\..\components\language\micropython\py\smallint.c
+
+
+ stackctrl.c
+ 1
+ ..\..\..\..\components\language\micropython\py\stackctrl.c
+
+
+ stream.c
+ 1
+ ..\..\..\..\components\language\micropython\py\stream.c
+
+
+ unicode.c
+ 1
+ ..\..\..\..\components\language\micropython\py\unicode.c
+
+
+ vm.c
+ 1
+ ..\..\..\..\components\language\micropython\py\vm.c
+
+
+ vstr.c
+ 1
+ ..\..\..\..\components\language\micropython\py\vstr.c
+
+
+ warning.c
+ 1
+ ..\..\..\..\components\language\micropython\py\warning.c
+
+
+
+
+ micropython/shared
+
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ readline.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\readline\readline.c
+
+
+ pyexec.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\pyexec.c
+
+
+ stdout_helpers.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\stdout_helpers.c
+
+
+ sys_stdio_mphal.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\sys_stdio_mphal.c
+
+
+ interrupt_char.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\runtime\interrupt_char.c
+
+
+ netutils.c
+ 1
+ ..\..\..\..\components\language\micropython\shared\netutils\netutils.c
+
+
+
+
+ micropython/extmod
+
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ modframebuf.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modframebuf.c
+
+
+ moduasyncio.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduasyncio.c
+
+
+ modubinascii.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modubinascii.c
+
+
+ moductypes.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moductypes.c
+
+
+ moduhashlib.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduhashlib.c
+
+
+ moduheapq.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduheapq.c
+
+
+ modujson.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modujson.c
+
+
+ moduos.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduos.c
+
+
+ modurandom.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modurandom.c
+
+
+ modure.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modure.c
+
+
+ moduselect.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduselect.c
+
+
+ moduzlib.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\moduzlib.c
+
+
+ vfs.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\vfs.c
+
+
+ vfs_reader.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\vfs_reader.c
+
+
+ uos_dupterm.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\uos_dupterm.c
+
+
+ utime_mphal.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\utime_mphal.c
+
+
+ machine_signal.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_signal.c
+
+
+ virtpin.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\virtpin.c
+
+
+ machine_mem.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_mem.c
+
+
+ machine_spi.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_spi.c
+
+
+ machine_i2c.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\machine_i2c.c
+
+
+ modnetwork.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modnetwork.c
+
+
+ modusocket.c
+ 1
+ ..\..\..\..\components\language\micropython\extmod\modusocket.c
+
+
+
+
+ micropython/drivers
+
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 11
+
+
+ 1
+
+
+
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ softspi.c
+ 1
+ ..\..\..\..\components\language\micropython\drivers\bus\softspi.c
+
+
+
+
+ micropython/port
+
+
+ help.c
+ 1
+ ..\..\..\..\components\language\micropython\port\help.c
+
+
+ mphalport.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mphalport.c
+
+
+ mpmain.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mpmain.c
+
+
+ mpthreadport.c
+ 1
+ ..\..\..\..\components\language\micropython\port\mpthreadport.c
+
+
+ machine_hw_spi.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_hw_spi.c
+
+
+ machine_pin.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_pin.c
+
+
+ machine_timer.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_timer.c
+
+
+ machine_uart.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\machine_uart.c
+
+
+ modesp8266.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modesp8266.c
+
+
+ modmachine.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modmachine.c
+
+
+ modutime.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\modutime.c
+
+
+ vfs_tos.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos.c
+
+
+ vfs_tos_file.c
+ 1
+ ..\..\..\..\components\language\micropython\port\modules\vfs_tos_file.c
+
+
+ mphalboard.c
+ 1
+ ..\micropython_basic_demo\board\mphalboard.c
+
+
+
+
+ ::CMSIS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_W25Q64JV.FLM b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_W25Q64JV.FLM
new file mode 100644
index 00000000..5b629cb7
Binary files /dev/null and b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/BearPi_W25Q64JV.FLM differ
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.c b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.c
new file mode 100644
index 00000000..1090378b
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.c
@@ -0,0 +1,273 @@
+#include "tos_k.h"
+#include "mp_tos_hal_pin.h"
+#include "gpio.h"
+
+#define ST_EXTI_VECTOR_SIZE 16
+
+#define ST_PORT_NUM(port) ((uint8_t)((port) >> 4) & 0x0F)
+#define ST_PIN_NUM(port) ((uint8_t)((port) & 0x0F))
+
+__STATIC__ hal_pin_cb_t hal_pin_irq_handler[ST_EXTI_VECTOR_SIZE];
+__STATIC__ void *hal_pin_irq_handler_arg[ST_EXTI_VECTOR_SIZE];
+__STATIC__ GPIO_TypeDef *hal_pin_irq_gpio[ST_EXTI_VECTOR_SIZE];
+
+__STATIC__ const uint8_t nvic_irq_channel[ST_EXTI_VECTOR_SIZE] = {
+ EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
+ EXTI4_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn,
+ EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
+ EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
+};
+
+__STATIC__ int mask2no(uint32_t mask) {
+ for (int i = 0; i < 32; i++) {
+ if ((1U << i) == mask) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ GPIO_InitTypeDef gpio_init;
+
+ if (!pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)(GPIOA_BASE + ST_PORT_NUM(port) * 0x0400UL);
+ gpio_pin = 1UL << ST_PIN_NUM(port);
+
+ gpio_init.Pin = gpio_pin;
+ gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
+ switch (mode) {
+ case HAL_PIN_MODE_OUTPUT:
+ gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_OUTPUT_OD:
+ gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_INPUT:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLUP:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_PULLUP;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLDOWN:
+ gpio_init.Mode = GPIO_MODE_INPUT;
+ gpio_init.Pull = GPIO_PULLDOWN;
+ break;
+ default:
+ return -1;
+ }
+ HAL_GPIO_Init((GPIO_TypeDef *)gpiox, &gpio_init);
+
+ pin->port = port;
+ pin->private_gpio = gpiox;
+ pin->private_pin = gpio_pin;
+ pin->mode = mode;
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ GPIO_InitTypeDef gpio_init;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+ if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
+ return -1;
+ }
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
+ TOS_CPU_INT_ENABLE();
+ return -1;
+ }
+
+ if (irq == HAL_PIN_IRQ_NONE) {
+ hal_pin_irq_gpio[gpio_pin_num] = NULL;
+ hal_pin_irq_handler[gpio_pin_num] = NULL;
+ hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
+ TOS_CPU_INT_ENABLE();
+ HAL_NVIC_DisableIRQ(nvic_irq_channel[gpio_pin_num]);
+ } else {
+ hal_pin_irq_gpio[gpio_pin_num] = gpiox;
+ TOS_CPU_INT_ENABLE();
+ gpio_init.Pin = gpio_pin;
+ gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
+ gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
+ switch (irq) {
+ case HAL_PIN_IRQ_RISING:
+ gpio_init.Mode = GPIO_MODE_IT_RISING;
+ break;
+ case HAL_PIN_IRQ_FALLING:
+ gpio_init.Mode = GPIO_MODE_IT_FALLING;
+ break;
+ case HAL_PIN_IRQ_RISING_FALLING:
+ gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
+ break;
+ }
+ switch (pin->mode) {
+ case HAL_PIN_MODE_INPUT_PULLUP:
+ gpio_init.Pull = GPIO_PULLUP;
+ break;
+ case HAL_PIN_MODE_INPUT_PULLDOWN:
+ gpio_init.Pull = GPIO_PULLDOWN;
+ break;
+ default:
+ gpio_init.Pull = GPIO_NOPULL;
+ break;
+ }
+ HAL_GPIO_Init(gpiox, &gpio_init);
+ HAL_NVIC_SetPriority(nvic_irq_channel[gpio_pin_num], 2, 0);
+ HAL_NVIC_EnableIRQ(nvic_irq_channel[gpio_pin_num]);
+
+ pin->irq = irq;
+ }
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+ if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
+ return -1;
+ }
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
+ TOS_CPU_INT_ENABLE();
+ return -1;
+ }
+ hal_pin_irq_handler[gpio_pin_num] = gpiox;
+ hal_pin_irq_handler[gpio_pin_num] = callback;
+ hal_pin_irq_handler_arg[gpio_pin_num] = cb_arg;
+ TOS_CPU_INT_ENABLE();
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_write(hal_pin_t *pin, int state)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+
+ HAL_GPIO_WritePin(gpiox, gpio_pin, (state == 0) ? GPIO_PIN_RESET : GPIO_PIN_SET);
+
+ return 0;
+}
+
+__API__ int tos_hal_pin_read(hal_pin_t *pin)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+
+ return (HAL_GPIO_ReadPin(gpiox, gpio_pin) == GPIO_PIN_RESET) ? 0 : 1;
+}
+
+__API__ int tos_hal_pin_deinit(hal_pin_t *pin)
+{
+ GPIO_TypeDef *gpiox;
+ uint32_t gpio_pin;
+ uint32_t gpio_pin_num;
+ TOS_CPU_CPSR_ALLOC();
+
+ if (!pin) {
+ return -1;
+ }
+
+ if (!pin->private_gpio || !pin->private_pin) {
+ return -1;
+ }
+
+ gpiox = (GPIO_TypeDef *)pin->private_gpio;
+ gpio_pin = (uint32_t)pin->private_pin;
+ gpio_pin_num = mask2no(gpio_pin);
+
+ TOS_CPU_INT_DISABLE();
+ if (hal_pin_irq_gpio[gpio_pin_num] == gpiox) {
+ hal_pin_irq_gpio[gpio_pin_num] = NULL;
+ hal_pin_irq_handler[gpio_pin_num] = NULL;
+ hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
+ }
+ TOS_CPU_INT_ENABLE();
+ HAL_GPIO_DeInit(gpiox, gpio_pin);
+
+ return 0;
+}
+
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ uint32_t gpio_pin_num = mask2no(GPIO_Pin);
+ hal_pin_cb_t callback;
+ uint32_t cb_arg;
+ if (gpio_pin_num < ST_EXTI_VECTOR_SIZE) {
+
+ callback = hal_pin_irq_handler[gpio_pin_num];
+ cb_arg = hal_pin_irq_handler_arg[gpio_pin_num];
+ if (callback) {
+ callback(cb_arg);
+ }
+ }
+}
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.h
new file mode 100644
index 00000000..6ac564d1
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_pin.h
@@ -0,0 +1,45 @@
+#ifndef _TOS_HAL_PIN_H_
+#define _TOS_HAL_PIN_H_
+
+typedef unsigned char hal_pin_port_t;
+
+typedef enum hal_pin_mode_en {
+ HAL_PIN_MODE_OUTPUT = 0,
+ HAL_PIN_MODE_OUTPUT_OD,
+ HAL_PIN_MODE_INPUT,
+ HAL_PIN_MODE_INPUT_PULLUP,
+ HAL_PIN_MODE_INPUT_PULLDOWN,
+} hal_pin_mode_t;
+
+typedef enum hal_pin_irq_en {
+ HAL_PIN_IRQ_NONE = 0x00,
+ HAL_PIN_IRQ_RISING = 0x01,
+ HAL_PIN_IRQ_FALLING = 0x02,
+ HAL_PIN_IRQ_RISING_FALLING = 0x03,
+} hal_pin_irq_t;
+
+typedef struct hal_pin_st {
+ hal_pin_port_t port;
+ void *private_gpio;
+ void *private_pin;
+ hal_pin_mode_t mode;
+ hal_pin_irq_t irq;
+} hal_pin_t;
+
+
+typedef void (*hal_pin_cb_t)(void *arg);
+
+__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode);
+
+__API__ int tos_hal_pin_write(hal_pin_t *pin, int state);
+
+__API__ int tos_hal_pin_read(hal_pin_t *pin);
+
+__API__ int tos_hal_pin_mode(hal_pin_t *pin, hal_pin_mode_t mode);
+
+__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq);
+
+__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg);
+
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.c b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.c
new file mode 100644
index 00000000..b4f58be9
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.c
@@ -0,0 +1,80 @@
+#include "tos_k.h"
+#include "mp_tos_hal_spi.h"
+#include "stm32l4xx_hal.h"
+#include "spi.h"
+
+__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port)
+{
+ if (!spi) {
+ return -1;
+ }
+
+ if (port == HAL_SPI_PORT_1) {
+ spi->private_spi = &hspi1;
+ MX_SPI1_Init();
+ } else if (port == HAL_SPI_PORT_2) {
+ spi->private_spi = &hspi2;
+ MX_SPI2_Init();
+ } else if (port == HAL_SPI_PORT_3) {
+ spi->private_spi = &hspi3;
+ MX_SPI3_Init();
+ } else {
+ return -1;
+ }
+
+ return 0;
+}
+
+__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout)
+{
+ HAL_StatusTypeDef hal_status;
+ SPI_HandleTypeDef *spi_handle;
+
+ if (!spi || (!send_buf && !recv_buf)) {
+ return -1;
+ }
+
+ if (!spi->private_spi) {
+ return -1;
+ }
+
+ spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
+
+ if (send_buf && recv_buf) {
+ hal_status = HAL_SPI_TransmitReceive(spi_handle, send_buf, recv_buf, size, timeout);
+ } else if (send_buf) {
+ hal_status = HAL_SPI_Transmit(spi_handle, send_buf, size, timeout);
+ } else if (recv_buf) {
+ hal_status = HAL_SPI_Receive(spi_handle, send_buf, size, timeout);
+ }
+
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+ return 0;
+}
+
+__API__ int tos_hal_spi_deinit(hal_spi_t *spi)
+{
+ HAL_StatusTypeDef hal_status;
+ SPI_HandleTypeDef *spi_handle;
+
+ if (!spi) {
+ return -1;
+ }
+
+ if (!spi->private_spi) {
+ return -1;
+ }
+
+ spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
+
+ hal_status = HAL_SPI_DeInit(spi_handle);
+ HAL_SPI_MspDeInit(spi_handle);
+
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.h
new file mode 100644
index 00000000..6dad4e9f
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_spi.h
@@ -0,0 +1,22 @@
+#ifndef _TOS_HAL_SPI_H_
+#define _TOS_HAL_SPI_H_
+
+typedef enum hal_spi_port_en {
+ HAL_SPI_PORT_0 = 0,
+ HAL_SPI_PORT_1,
+ HAL_SPI_PORT_2,
+ HAL_SPI_PORT_3,
+} hal_spi_port_t;
+
+typedef struct hal_spi_st {
+ hal_spi_port_t port;
+ void *private_spi;
+} hal_spi_t;
+
+__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port);
+
+__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout);
+
+__API__ int tos_hal_spi_deinit(hal_spi_t *spi);
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.c b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.c
new file mode 100644
index 00000000..a86dd40d
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.c
@@ -0,0 +1,26 @@
+#include "tos_k.h"
+#include "mp_tos_hal_uart.h"
+#include "stm32l4xx_hal.h"
+#include "usart.h"
+
+__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size)
+{
+ HAL_StatusTypeDef hal_status;
+ UART_HandleTypeDef *uart_handle;
+
+ if (!uart || !buf) {
+ return -1;
+ }
+
+ if (!uart->private_uart) {
+ return -1;
+ }
+
+ uart_handle = (UART_HandleTypeDef *)uart->private_uart;
+
+ hal_status = HAL_UART_Receive_IT(uart_handle, (uint8_t *)buf, size);
+ if (hal_status != HAL_OK) {
+ return -1;
+ }
+ return 0;
+}
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.h
new file mode 100644
index 00000000..31b79dbf
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/hal/mp_tos_hal_uart.h
@@ -0,0 +1,8 @@
+#ifndef _MP_TOS_HAL_UART_H_
+#define _MP_TOS_HAL_UART_H_
+
+#include "tos_hal_uart.h"
+
+__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size);
+
+#endif
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mpconfigboard.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mpconfigboard.h
new file mode 100644
index 00000000..33fba638
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mpconfigboard.h
@@ -0,0 +1,16 @@
+/* board specific config */
+#define MICROPY_HW_BOARD_NAME "BearPi"
+#define MICROPY_HW_MCU_NAME "STM32F431RC"
+
+#define MICROPY_HW_UART_NUM 4
+#define MICROPY_HW_UART_REPL 2
+#define MICROPY_HW_SPI_NUM 4
+
+/* project specific config */
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES)
+
+#define MP_USING_QSPI_FLASH
+#define MP_USING_VFS
+#define MP_USING_NETWORK
+#define MP_USING_MACHINE_SPI
+#define MP_USING_MACHINE_I2C
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mpconfigboard.mk b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mpconfigboard.mk
new file mode 100644
index 00000000..e69de29b
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.c b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.c
new file mode 100644
index 00000000..58d8f0a0
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.c
@@ -0,0 +1,109 @@
+
+#include "py/mpconfig.h"
+#include "py/mphal.h"
+#include "py/obj.h"
+#include "py/runtime.h"
+
+#include "modmachine.h"
+
+#if !(MP_GEN_HDR)
+#include "tos_k.h"
+#include "main.h"
+#endif
+
+/********************** Tick *************************/
+
+static uint32_t systick_get_us() {
+ // get systick value
+ uint32_t counter = SysTick->VAL;
+ uint32_t load = SysTick->LOAD;
+
+ // convert from decrementing to incrementing
+ counter = load - counter;
+
+ return (counter * 1000) / (load + 1);
+}
+
+mp_uint_t mp_hal_ticks_us(void) {
+ uint32_t ms = tos_tick2millisec(tos_systick_get());
+ uint32_t us = systick_get_us();
+ return ms * 1000 + us;
+}
+
+void mp_hal_delay_us(mp_uint_t usec) {
+ mp_uint_t ms = usec / 1000;
+ mp_uint_t us = usec % 1000;
+ if (ms > 0)
+ mp_hal_delay_ms(ms);
+ mp_uint_t start = mp_hal_ticks_us();
+ while (mp_hal_ticks_us() - start < us) {
+ }
+}
+
+/********************** GPIO *************************/
+
+#define ST_PIN(port_num, pin_num) ((uint8_t)(((port_num) << 4) & 0xF0) | ((pin_num) & 0x0F))
+
+STATIC const mp_rom_map_elem_t machine_pins_locals_dict_table[] = {
+
+ { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_INT(ST_PIN(0, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_INT(ST_PIN(0, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_INT(ST_PIN(0, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_INT(ST_PIN(0, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_INT(ST_PIN(0, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_INT(ST_PIN(0, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_INT(ST_PIN(0, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_INT(ST_PIN(0, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_INT(ST_PIN(0, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_INT(ST_PIN(0, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_INT(ST_PIN(0, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_INT(ST_PIN(0, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_INT(ST_PIN(0, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_A13), MP_ROM_INT(ST_PIN(0, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_A14), MP_ROM_INT(ST_PIN(0, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_A15), MP_ROM_INT(ST_PIN(0, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_INT(ST_PIN(1, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_B1), MP_ROM_INT(ST_PIN(1, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_B2), MP_ROM_INT(ST_PIN(1, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_B3), MP_ROM_INT(ST_PIN(1, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_B4), MP_ROM_INT(ST_PIN(1, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_B5), MP_ROM_INT(ST_PIN(1, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_B6), MP_ROM_INT(ST_PIN(1, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_B7), MP_ROM_INT(ST_PIN(1, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_B8), MP_ROM_INT(ST_PIN(1, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_B9), MP_ROM_INT(ST_PIN(1, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_B10), MP_ROM_INT(ST_PIN(1, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_B11), MP_ROM_INT(ST_PIN(1, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_INT(ST_PIN(1, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_B13), MP_ROM_INT(ST_PIN(1, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_B14), MP_ROM_INT(ST_PIN(1, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_B15), MP_ROM_INT(ST_PIN(1, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_C0), MP_ROM_INT(ST_PIN(2, 0)) },
+ { MP_ROM_QSTR(MP_QSTR_C1), MP_ROM_INT(ST_PIN(2, 1)) },
+ { MP_ROM_QSTR(MP_QSTR_C2), MP_ROM_INT(ST_PIN(2, 2)) },
+ { MP_ROM_QSTR(MP_QSTR_C3), MP_ROM_INT(ST_PIN(2, 3)) },
+ { MP_ROM_QSTR(MP_QSTR_C4), MP_ROM_INT(ST_PIN(2, 4)) },
+ { MP_ROM_QSTR(MP_QSTR_C5), MP_ROM_INT(ST_PIN(2, 5)) },
+ { MP_ROM_QSTR(MP_QSTR_C6), MP_ROM_INT(ST_PIN(2, 6)) },
+ { MP_ROM_QSTR(MP_QSTR_C7), MP_ROM_INT(ST_PIN(2, 7)) },
+ { MP_ROM_QSTR(MP_QSTR_C8), MP_ROM_INT(ST_PIN(2, 8)) },
+ { MP_ROM_QSTR(MP_QSTR_C9), MP_ROM_INT(ST_PIN(2, 9)) },
+ { MP_ROM_QSTR(MP_QSTR_C10), MP_ROM_INT(ST_PIN(2, 10)) },
+ { MP_ROM_QSTR(MP_QSTR_C11), MP_ROM_INT(ST_PIN(2, 11)) },
+ { MP_ROM_QSTR(MP_QSTR_C12), MP_ROM_INT(ST_PIN(2, 12)) },
+ { MP_ROM_QSTR(MP_QSTR_C13), MP_ROM_INT(ST_PIN(2, 13)) },
+ { MP_ROM_QSTR(MP_QSTR_C14), MP_ROM_INT(ST_PIN(2, 14)) },
+ { MP_ROM_QSTR(MP_QSTR_C15), MP_ROM_INT(ST_PIN(2, 15)) },
+
+ { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_INT(ST_PIN(3, 2)) },
+
+ { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_INT(ST_PIN(2, 13)) }, // C13
+ { MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_INT(ST_PIN(1, 2)) }, // B2
+ { MP_ROM_QSTR(MP_QSTR_KEY2), MP_ROM_INT(ST_PIN(1, 3)) }, // B3
+
+};
+MP_DEFINE_CONST_DICT(machine_pins_locals_dict, machine_pins_locals_dict_table);
+
+
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.h
new file mode 100644
index 00000000..bebb5f6d
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/board/mphalboard.h
@@ -0,0 +1,11 @@
+#ifndef _MPHALBOARD_H_
+#define _MPHALBOARD_H_
+
+#include "py/obj.h"
+
+extern mp_uint_t mp_hal_ticks_us(void);
+extern void mp_hal_delay_us(mp_uint_t usec);
+
+extern const mp_obj_dict_t machine_pins_locals_dict;
+
+#endif /* _MPHALBOARD_H_ */
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/moduledefs.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/moduledefs.h
new file mode 100644
index 00000000..6cc5d240
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/moduledefs.h
@@ -0,0 +1,150 @@
+// Automatically generated by makemoduledefs.py.
+
+extern const struct _mp_obj_module_t mp_module___main__;
+#undef MODULE_DEF_MP_QSTR___MAIN__
+#define MODULE_DEF_MP_QSTR___MAIN__ { MP_ROM_QSTR(MP_QSTR___main__), MP_ROM_PTR(&mp_module___main__) },
+
+extern const struct _mp_obj_module_t mp_module_thread;
+#undef MODULE_DEF_MP_QSTR__THREAD
+#define MODULE_DEF_MP_QSTR__THREAD { MP_ROM_QSTR(MP_QSTR__thread), MP_ROM_PTR(&mp_module_thread) },
+
+extern const struct _mp_obj_module_t mp_module_uasyncio;
+#undef MODULE_DEF_MP_QSTR__UASYNCIO
+#define MODULE_DEF_MP_QSTR__UASYNCIO { MP_ROM_QSTR(MP_QSTR__uasyncio), MP_ROM_PTR(&mp_module_uasyncio) },
+
+extern const struct _mp_obj_module_t mp_module_builtins;
+#undef MODULE_DEF_MP_QSTR_BUILTINS
+#define MODULE_DEF_MP_QSTR_BUILTINS { MP_ROM_QSTR(MP_QSTR_builtins), MP_ROM_PTR(&mp_module_builtins) },
+
+extern const struct _mp_obj_module_t mp_module_cmath;
+#undef MODULE_DEF_MP_QSTR_CMATH
+#define MODULE_DEF_MP_QSTR_CMATH { MP_ROM_QSTR(MP_QSTR_cmath), MP_ROM_PTR(&mp_module_cmath) },
+
+extern const struct _mp_obj_module_t mp_module_framebuf;
+#undef MODULE_DEF_MP_QSTR_FRAMEBUF
+#define MODULE_DEF_MP_QSTR_FRAMEBUF { MP_ROM_QSTR(MP_QSTR_framebuf), MP_ROM_PTR(&mp_module_framebuf) },
+
+extern const struct _mp_obj_module_t mp_module_gc;
+#undef MODULE_DEF_MP_QSTR_GC
+#define MODULE_DEF_MP_QSTR_GC { MP_ROM_QSTR(MP_QSTR_gc), MP_ROM_PTR(&mp_module_gc) },
+
+extern const struct _mp_obj_module_t mp_module_math;
+#undef MODULE_DEF_MP_QSTR_MATH
+#define MODULE_DEF_MP_QSTR_MATH { MP_ROM_QSTR(MP_QSTR_math), MP_ROM_PTR(&mp_module_math) },
+
+extern const struct _mp_obj_module_t mp_module_micropython;
+#undef MODULE_DEF_MP_QSTR_MICROPYTHON
+#define MODULE_DEF_MP_QSTR_MICROPYTHON { MP_ROM_QSTR(MP_QSTR_micropython), MP_ROM_PTR(&mp_module_micropython) },
+
+extern const struct _mp_obj_module_t mp_module_network;
+#undef MODULE_DEF_MP_QSTR_NETWORK
+#define MODULE_DEF_MP_QSTR_NETWORK { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&mp_module_network) },
+
+extern const struct _mp_obj_module_t mp_module_uarray;
+#undef MODULE_DEF_MP_QSTR_UARRAY
+#define MODULE_DEF_MP_QSTR_UARRAY { MP_ROM_QSTR(MP_QSTR_uarray), MP_ROM_PTR(&mp_module_uarray) },
+
+extern const struct _mp_obj_module_t mp_module_ubinascii;
+#undef MODULE_DEF_MP_QSTR_UBINASCII
+#define MODULE_DEF_MP_QSTR_UBINASCII { MP_ROM_QSTR(MP_QSTR_ubinascii), MP_ROM_PTR(&mp_module_ubinascii) },
+
+extern const struct _mp_obj_module_t mp_module_collections;
+#undef MODULE_DEF_MP_QSTR_UCOLLECTIONS
+#define MODULE_DEF_MP_QSTR_UCOLLECTIONS { MP_ROM_QSTR(MP_QSTR_ucollections), MP_ROM_PTR(&mp_module_collections) },
+
+extern const struct _mp_obj_module_t mp_module_uctypes;
+#undef MODULE_DEF_MP_QSTR_UCTYPES
+#define MODULE_DEF_MP_QSTR_UCTYPES { MP_ROM_QSTR(MP_QSTR_uctypes), MP_ROM_PTR(&mp_module_uctypes) },
+
+extern const struct _mp_obj_module_t mp_module_uerrno;
+#undef MODULE_DEF_MP_QSTR_UERRNO
+#define MODULE_DEF_MP_QSTR_UERRNO { MP_ROM_QSTR(MP_QSTR_uerrno), MP_ROM_PTR(&mp_module_uerrno) },
+
+extern const struct _mp_obj_module_t mp_module_uhashlib;
+#undef MODULE_DEF_MP_QSTR_UHASHLIB
+#define MODULE_DEF_MP_QSTR_UHASHLIB { MP_ROM_QSTR(MP_QSTR_uhashlib), MP_ROM_PTR(&mp_module_uhashlib) },
+
+extern const struct _mp_obj_module_t mp_module_uheapq;
+#undef MODULE_DEF_MP_QSTR_UHEAPQ
+#define MODULE_DEF_MP_QSTR_UHEAPQ { MP_ROM_QSTR(MP_QSTR_uheapq), MP_ROM_PTR(&mp_module_uheapq) },
+
+extern const struct _mp_obj_module_t mp_module_io;
+#undef MODULE_DEF_MP_QSTR_UIO
+#define MODULE_DEF_MP_QSTR_UIO { MP_ROM_QSTR(MP_QSTR_uio), MP_ROM_PTR(&mp_module_io) },
+
+extern const struct _mp_obj_module_t mp_module_ujson;
+#undef MODULE_DEF_MP_QSTR_UJSON
+#define MODULE_DEF_MP_QSTR_UJSON { MP_ROM_QSTR(MP_QSTR_ujson), MP_ROM_PTR(&mp_module_ujson) },
+
+extern const struct _mp_obj_module_t mp_module_machine;
+#undef MODULE_DEF_MP_QSTR_UMACHINE
+#define MODULE_DEF_MP_QSTR_UMACHINE { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) },
+
+extern const struct _mp_obj_module_t mp_module_uos;
+#undef MODULE_DEF_MP_QSTR_UOS
+#define MODULE_DEF_MP_QSTR_UOS { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_uos) },
+
+extern const struct _mp_obj_module_t mp_module_urandom;
+#undef MODULE_DEF_MP_QSTR_URANDOM
+#define MODULE_DEF_MP_QSTR_URANDOM { MP_ROM_QSTR(MP_QSTR_urandom), MP_ROM_PTR(&mp_module_urandom) },
+
+extern const struct _mp_obj_module_t mp_module_ure;
+#undef MODULE_DEF_MP_QSTR_URE
+#define MODULE_DEF_MP_QSTR_URE { MP_ROM_QSTR(MP_QSTR_ure), MP_ROM_PTR(&mp_module_ure) },
+
+extern const struct _mp_obj_module_t mp_module_uselect;
+#undef MODULE_DEF_MP_QSTR_USELECT
+#define MODULE_DEF_MP_QSTR_USELECT { MP_ROM_QSTR(MP_QSTR_uselect), MP_ROM_PTR(&mp_module_uselect) },
+
+extern const struct _mp_obj_module_t mp_module_usocket;
+#undef MODULE_DEF_MP_QSTR_USOCKET
+#define MODULE_DEF_MP_QSTR_USOCKET { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) },
+
+extern const struct _mp_obj_module_t mp_module_ustruct;
+#undef MODULE_DEF_MP_QSTR_USTRUCT
+#define MODULE_DEF_MP_QSTR_USTRUCT { MP_ROM_QSTR(MP_QSTR_ustruct), MP_ROM_PTR(&mp_module_ustruct) },
+
+extern const struct _mp_obj_module_t mp_module_sys;
+#undef MODULE_DEF_MP_QSTR_USYS
+#define MODULE_DEF_MP_QSTR_USYS { MP_ROM_QSTR(MP_QSTR_usys), MP_ROM_PTR(&mp_module_sys) },
+
+extern const struct _mp_obj_module_t mp_module_utime;
+#undef MODULE_DEF_MP_QSTR_UTIME
+#define MODULE_DEF_MP_QSTR_UTIME { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&mp_module_utime) },
+
+extern const struct _mp_obj_module_t mp_module_uzlib;
+#undef MODULE_DEF_MP_QSTR_UZLIB
+#define MODULE_DEF_MP_QSTR_UZLIB { MP_ROM_QSTR(MP_QSTR_uzlib), MP_ROM_PTR(&mp_module_uzlib) },
+
+
+#define MICROPY_REGISTERED_MODULES \
+ MODULE_DEF_MP_QSTR_BUILTINS \
+ MODULE_DEF_MP_QSTR_CMATH \
+ MODULE_DEF_MP_QSTR_FRAMEBUF \
+ MODULE_DEF_MP_QSTR_GC \
+ MODULE_DEF_MP_QSTR_MATH \
+ MODULE_DEF_MP_QSTR_MICROPYTHON \
+ MODULE_DEF_MP_QSTR_NETWORK \
+ MODULE_DEF_MP_QSTR_UARRAY \
+ MODULE_DEF_MP_QSTR_UBINASCII \
+ MODULE_DEF_MP_QSTR_UCOLLECTIONS \
+ MODULE_DEF_MP_QSTR_UCTYPES \
+ MODULE_DEF_MP_QSTR_UERRNO \
+ MODULE_DEF_MP_QSTR_UHASHLIB \
+ MODULE_DEF_MP_QSTR_UHEAPQ \
+ MODULE_DEF_MP_QSTR_UIO \
+ MODULE_DEF_MP_QSTR_UJSON \
+ MODULE_DEF_MP_QSTR_UMACHINE \
+ MODULE_DEF_MP_QSTR_UOS \
+ MODULE_DEF_MP_QSTR_URANDOM \
+ MODULE_DEF_MP_QSTR_URE \
+ MODULE_DEF_MP_QSTR_USELECT \
+ MODULE_DEF_MP_QSTR_USOCKET \
+ MODULE_DEF_MP_QSTR_USTRUCT \
+ MODULE_DEF_MP_QSTR_USYS \
+ MODULE_DEF_MP_QSTR_UTIME \
+ MODULE_DEF_MP_QSTR_UZLIB \
+ MODULE_DEF_MP_QSTR__THREAD \
+ MODULE_DEF_MP_QSTR__UASYNCIO \
+ MODULE_DEF_MP_QSTR___MAIN__ \
+// MICROPY_REGISTERED_MODULES
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/mpversion.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/mpversion.h
new file mode 100644
index 00000000..28b57595
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/mpversion.h
@@ -0,0 +1,4 @@
+// This file was generated by py/makeversionhdr.py
+#define MICROPY_GIT_TAG "v2.5.0-73-g0e22ad73-dirty"
+#define MICROPY_GIT_HASH "0e22ad73-dirty"
+#define MICROPY_BUILD_DATE "2022-09-25"
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/qstrdefs.generated.h b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/qstrdefs.generated.h
new file mode 100644
index 00000000..e6bc9971
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/genhdr/qstrdefs.generated.h
@@ -0,0 +1,752 @@
+// This file was automatically generated by makeqstrdata.py
+
+QDEF(MP_QSTRnull, 0, 0, "")
+QDEF(MP_QSTR_, 5381, 0, "")
+QDEF(MP_QSTR___dir__, 36730, 7, "__dir__")
+QDEF(MP_QSTR__0x0a_, 46511, 1, "\x0a")
+QDEF(MP_QSTR__space_, 46469, 1, " ")
+QDEF(MP_QSTR__star_, 46479, 1, "*")
+QDEF(MP_QSTR__slash_, 46474, 1, "/")
+QDEF(MP_QSTR__lt_module_gt_, 38077, 8, "")
+QDEF(MP_QSTR__, 46586, 1, "_")
+QDEF(MP_QSTR___call__, 63911, 8, "__call__")
+QDEF(MP_QSTR___class__, 50475, 9, "__class__")
+QDEF(MP_QSTR___delitem__, 13821, 11, "__delitem__")
+QDEF(MP_QSTR___enter__, 47725, 9, "__enter__")
+QDEF(MP_QSTR___exit__, 63557, 8, "__exit__")
+QDEF(MP_QSTR___getattr__, 63552, 11, "__getattr__")
+QDEF(MP_QSTR___getitem__, 14630, 11, "__getitem__")
+QDEF(MP_QSTR___hash__, 51447, 8, "__hash__")
+QDEF(MP_QSTR___init__, 42335, 8, "__init__")
+QDEF(MP_QSTR___int__, 6934, 7, "__int__")
+QDEF(MP_QSTR___iter__, 13007, 8, "__iter__")
+QDEF(MP_QSTR___len__, 45282, 7, "__len__")
+QDEF(MP_QSTR___main__, 5006, 8, "__main__")
+QDEF(MP_QSTR___module__, 12543, 10, "__module__")
+QDEF(MP_QSTR___name__, 14562, 8, "__name__")
+QDEF(MP_QSTR___new__, 5497, 7, "__new__")
+QDEF(MP_QSTR___next__, 29442, 8, "__next__")
+QDEF(MP_QSTR___qualname__, 107, 12, "__qualname__")
+QDEF(MP_QSTR___repr__, 2832, 8, "__repr__")
+QDEF(MP_QSTR___setitem__, 15922, 11, "__setitem__")
+QDEF(MP_QSTR___str__, 52688, 7, "__str__")
+QDEF(MP_QSTR_ArithmeticError, 35885, 15, "ArithmeticError")
+QDEF(MP_QSTR_AssertionError, 23191, 14, "AssertionError")
+QDEF(MP_QSTR_AttributeError, 56865, 14, "AttributeError")
+QDEF(MP_QSTR_BaseException, 37383, 13, "BaseException")
+QDEF(MP_QSTR_EOFError, 49041, 8, "EOFError")
+QDEF(MP_QSTR_Ellipsis, 57584, 8, "Ellipsis")
+QDEF(MP_QSTR_Exception, 10738, 9, "Exception")
+QDEF(MP_QSTR_GeneratorExit, 25110, 13, "GeneratorExit")
+QDEF(MP_QSTR_ImportError, 39968, 11, "ImportError")
+QDEF(MP_QSTR_IndentationError, 8284, 16, "IndentationError")
+QDEF(MP_QSTR_IndexError, 44419, 10, "IndexError")
+QDEF(MP_QSTR_KeyError, 234, 8, "KeyError")
+QDEF(MP_QSTR_KeyboardInterrupt, 58031, 17, "KeyboardInterrupt")
+QDEF(MP_QSTR_LookupError, 27135, 11, "LookupError")
+QDEF(MP_QSTR_MemoryError, 33756, 11, "MemoryError")
+QDEF(MP_QSTR_NameError, 11706, 9, "NameError")
+QDEF(MP_QSTR_NoneType, 26647, 8, "NoneType")
+QDEF(MP_QSTR_NotImplementedError, 39110, 19, "NotImplementedError")
+QDEF(MP_QSTR_OSError, 26017, 7, "OSError")
+QDEF(MP_QSTR_OverflowError, 57729, 13, "OverflowError")
+QDEF(MP_QSTR_RuntimeError, 61793, 12, "RuntimeError")
+QDEF(MP_QSTR_StopIteration, 7402, 13, "StopIteration")
+QDEF(MP_QSTR_SyntaxError, 36756, 11, "SyntaxError")
+QDEF(MP_QSTR_SystemExit, 65312, 10, "SystemExit")
+QDEF(MP_QSTR_TypeError, 38437, 9, "TypeError")
+QDEF(MP_QSTR_ValueError, 34710, 10, "ValueError")
+QDEF(MP_QSTR_ZeroDivisionError, 10166, 17, "ZeroDivisionError")
+QDEF(MP_QSTR_abs, 12949, 3, "abs")
+QDEF(MP_QSTR_all, 13124, 3, "all")
+QDEF(MP_QSTR_any, 13075, 3, "any")
+QDEF(MP_QSTR_append, 38763, 6, "append")
+QDEF(MP_QSTR_args, 50882, 4, "args")
+QDEF(MP_QSTR_bool, 15595, 4, "bool")
+QDEF(MP_QSTR_builtins, 12791, 8, "builtins")
+QDEF(MP_QSTR_bytearray, 41846, 9, "bytearray")
+QDEF(MP_QSTR_bytecode, 32034, 8, "bytecode")
+QDEF(MP_QSTR_bytes, 45660, 5, "bytes")
+QDEF(MP_QSTR_callable, 28685, 8, "callable")
+QDEF(MP_QSTR_chr, 19676, 3, "chr")
+QDEF(MP_QSTR_classmethod, 36020, 11, "classmethod")
+QDEF(MP_QSTR_clear, 41084, 5, "clear")
+QDEF(MP_QSTR_close, 26419, 5, "close")
+QDEF(MP_QSTR_const, 65472, 5, "const")
+QDEF(MP_QSTR_copy, 56288, 4, "copy")
+QDEF(MP_QSTR_count, 19878, 5, "count")
+QDEF(MP_QSTR_dict, 64575, 4, "dict")
+QDEF(MP_QSTR_dir, 7930, 3, "dir")
+QDEF(MP_QSTR_divmod, 1208, 6, "divmod")
+QDEF(MP_QSTR_end, 8970, 3, "end")
+QDEF(MP_QSTR_endswith, 41755, 8, "endswith")
+QDEF(MP_QSTR_eval, 42651, 4, "eval")
+QDEF(MP_QSTR_exec, 49182, 4, "exec")
+QDEF(MP_QSTR_extend, 59491, 6, "extend")
+QDEF(MP_QSTR_find, 13312, 4, "find")
+QDEF(MP_QSTR_format, 13094, 6, "format")
+QDEF(MP_QSTR_from_bytes, 29749, 10, "from_bytes")
+QDEF(MP_QSTR_get, 15155, 3, "get")
+QDEF(MP_QSTR_getattr, 6080, 7, "getattr")
+QDEF(MP_QSTR_globals, 18845, 7, "globals")
+QDEF(MP_QSTR_hasattr, 45196, 7, "hasattr")
+QDEF(MP_QSTR_hash, 28855, 4, "hash")
+QDEF(MP_QSTR_id, 28456, 2, "id")
+QDEF(MP_QSTR_index, 10363, 5, "index")
+QDEF(MP_QSTR_insert, 21522, 6, "insert")
+QDEF(MP_QSTR_int, 21270, 3, "int")
+QDEF(MP_QSTR_isalpha, 14315, 7, "isalpha")
+QDEF(MP_QSTR_isdigit, 39592, 7, "isdigit")
+QDEF(MP_QSTR_isinstance, 48822, 10, "isinstance")
+QDEF(MP_QSTR_islower, 33020, 7, "islower")
+QDEF(MP_QSTR_isspace, 63579, 7, "isspace")
+QDEF(MP_QSTR_issubclass, 32693, 10, "issubclass")
+QDEF(MP_QSTR_isupper, 42973, 7, "isupper")
+QDEF(MP_QSTR_items, 21475, 5, "items")
+QDEF(MP_QSTR_iter, 8591, 4, "iter")
+QDEF(MP_QSTR_join, 23719, 4, "join")
+QDEF(MP_QSTR_key, 27954, 3, "key")
+QDEF(MP_QSTR_keys, 4865, 4, "keys")
+QDEF(MP_QSTR_len, 16482, 3, "len")
+QDEF(MP_QSTR_list, 7463, 4, "list")
+QDEF(MP_QSTR_little, 27273, 6, "little")
+QDEF(MP_QSTR_locals, 41275, 6, "locals")
+QDEF(MP_QSTR_lower, 52166, 5, "lower")
+QDEF(MP_QSTR_lstrip, 47589, 6, "lstrip")
+QDEF(MP_QSTR_main, 47054, 4, "main")
+QDEF(MP_QSTR_map, 17337, 3, "map")
+QDEF(MP_QSTR_micropython, 31755, 11, "micropython")
+QDEF(MP_QSTR_next, 34882, 4, "next")
+QDEF(MP_QSTR_object, 36240, 6, "object")
+QDEF(MP_QSTR_open, 15057, 4, "open")
+QDEF(MP_QSTR_ord, 24092, 3, "ord")
+QDEF(MP_QSTR_pop, 29482, 3, "pop")
+QDEF(MP_QSTR_popitem, 11455, 7, "popitem")
+QDEF(MP_QSTR_pow, 29485, 3, "pow")
+QDEF(MP_QSTR_print, 50772, 5, "print")
+QDEF(MP_QSTR_range, 24090, 5, "range")
+QDEF(MP_QSTR_read, 63927, 4, "read")
+QDEF(MP_QSTR_readinto, 48971, 8, "readinto")
+QDEF(MP_QSTR_readline, 6649, 8, "readline")
+QDEF(MP_QSTR_remove, 35427, 6, "remove")
+QDEF(MP_QSTR_replace, 9545, 7, "replace")
+QDEF(MP_QSTR_repr, 63440, 4, "repr")
+QDEF(MP_QSTR_reverse, 10789, 7, "reverse")
+QDEF(MP_QSTR_rfind, 40146, 5, "rfind")
+QDEF(MP_QSTR_rindex, 11241, 6, "rindex")
+QDEF(MP_QSTR_round, 9703, 5, "round")
+QDEF(MP_QSTR_rsplit, 165, 6, "rsplit")
+QDEF(MP_QSTR_rstrip, 38203, 6, "rstrip")
+QDEF(MP_QSTR_self, 30585, 4, "self")
+QDEF(MP_QSTR_send, 30393, 4, "send")
+QDEF(MP_QSTR_sep, 36643, 3, "sep")
+QDEF(MP_QSTR_set, 36647, 3, "set")
+QDEF(MP_QSTR_setattr, 43220, 7, "setattr")
+QDEF(MP_QSTR_setdefault, 41836, 10, "setdefault")
+QDEF(MP_QSTR_sort, 40383, 4, "sort")
+QDEF(MP_QSTR_sorted, 5470, 6, "sorted")
+QDEF(MP_QSTR_split, 13239, 5, "split")
+QDEF(MP_QSTR_start, 61317, 5, "start")
+QDEF(MP_QSTR_startswith, 59508, 10, "startswith")
+QDEF(MP_QSTR_staticmethod, 44898, 12, "staticmethod")
+QDEF(MP_QSTR_step, 13911, 4, "step")
+QDEF(MP_QSTR_stop, 13981, 4, "stop")
+QDEF(MP_QSTR_str, 36176, 3, "str")
+QDEF(MP_QSTR_strip, 7721, 5, "strip")
+QDEF(MP_QSTR_sum, 36142, 3, "sum")
+QDEF(MP_QSTR_super, 45764, 5, "super")
+QDEF(MP_QSTR_throw, 17587, 5, "throw")
+QDEF(MP_QSTR_to_bytes, 16088, 8, "to_bytes")
+QDEF(MP_QSTR_tuple, 16893, 5, "tuple")
+QDEF(MP_QSTR_type, 32669, 4, "type")
+QDEF(MP_QSTR_update, 30388, 6, "update")
+QDEF(MP_QSTR_upper, 37927, 5, "upper")
+QDEF(MP_QSTR_utf_hyphen_8, 33463, 5, "utf-8")
+QDEF(MP_QSTR_value, 13390, 5, "value")
+QDEF(MP_QSTR_values, 48765, 6, "values")
+QDEF(MP_QSTR_write, 43160, 5, "write")
+QDEF(MP_QSTR_zip, 44262, 3, "zip")
+QDEF(MP_QSTR___abs__, 54933, 7, "__abs__")
+QDEF(MP_QSTR___add__, 33476, 7, "__add__")
+QDEF(MP_QSTR___aenter__, 33868, 10, "__aenter__")
+QDEF(MP_QSTR___aexit__, 53188, 9, "__aexit__")
+QDEF(MP_QSTR___aiter__, 11086, 9, "__aiter__")
+QDEF(MP_QSTR___and__, 56078, 7, "__and__")
+QDEF(MP_QSTR___anext__, 46211, 9, "__anext__")
+QDEF(MP_QSTR___bases__, 12291, 9, "__bases__")
+QDEF(MP_QSTR___bool__, 25899, 8, "__bool__")
+QDEF(MP_QSTR___build_class__, 34882, 15, "__build_class__")
+QDEF(MP_QSTR___contains__, 24518, 12, "__contains__")
+QDEF(MP_QSTR___del__, 14184, 7, "__del__")
+QDEF(MP_QSTR___delattr__, 30555, 11, "__delattr__")
+QDEF(MP_QSTR___delete__, 60892, 10, "__delete__")
+QDEF(MP_QSTR___dict__, 21631, 8, "__dict__")
+QDEF(MP_QSTR___divmod__, 4472, 10, "__divmod__")
+QDEF(MP_QSTR___eq__, 15985, 6, "__eq__")
+QDEF(MP_QSTR___file__, 21507, 8, "__file__")
+QDEF(MP_QSTR___floordiv__, 24390, 12, "__floordiv__")
+QDEF(MP_QSTR___ge__, 18087, 6, "__ge__")
+QDEF(MP_QSTR___get__, 36787, 7, "__get__")
+QDEF(MP_QSTR___globals__, 44701, 11, "__globals__")
+QDEF(MP_QSTR___gt__, 33462, 6, "__gt__")
+QDEF(MP_QSTR___iadd__, 19053, 8, "__iadd__")
+QDEF(MP_QSTR___iand__, 8615, 8, "__iand__")
+QDEF(MP_QSTR___ifloordiv__, 3919, 13, "__ifloordiv__")
+QDEF(MP_QSTR___ilshift__, 41600, 11, "__ilshift__")
+QDEF(MP_QSTR___imatmul__, 28352, 11, "__imatmul__")
+QDEF(MP_QSTR___imod__, 34378, 8, "__imod__")
+QDEF(MP_QSTR___import__, 15928, 10, "__import__")
+QDEF(MP_QSTR___imul__, 52760, 8, "__imul__")
+QDEF(MP_QSTR___invert__, 30711, 10, "__invert__")
+QDEF(MP_QSTR___ior__, 36849, 7, "__ior__")
+QDEF(MP_QSTR___ipow__, 54660, 8, "__ipow__")
+QDEF(MP_QSTR___irshift__, 63710, 11, "__irshift__")
+QDEF(MP_QSTR___isub__, 30728, 8, "__isub__")
+QDEF(MP_QSTR___itruediv__, 545, 12, "__itruediv__")
+QDEF(MP_QSTR___ixor__, 47369, 8, "__ixor__")
+QDEF(MP_QSTR___le__, 5068, 6, "__le__")
+QDEF(MP_QSTR___lshift__, 34825, 10, "__lshift__")
+QDEF(MP_QSTR___lt__, 26717, 6, "__lt__")
+QDEF(MP_QSTR___matmul__, 62281, 10, "__matmul__")
+QDEF(MP_QSTR___mod__, 14179, 7, "__mod__")
+QDEF(MP_QSTR___mul__, 16945, 7, "__mul__")
+QDEF(MP_QSTR___ne__, 2830, 6, "__ne__")
+QDEF(MP_QSTR___neg__, 54633, 7, "__neg__")
+QDEF(MP_QSTR___or__, 47928, 6, "__or__")
+QDEF(MP_QSTR___path__, 9160, 8, "__path__")
+QDEF(MP_QSTR___pos__, 61481, 7, "__pos__")
+QDEF(MP_QSTR___pow__, 45, 7, "__pow__")
+QDEF(MP_QSTR___radd__, 50454, 8, "__radd__")
+QDEF(MP_QSTR___rand__, 11996, 8, "__rand__")
+QDEF(MP_QSTR___repl_print__, 47872, 14, "__repl_print__")
+QDEF(MP_QSTR___reversed__, 65377, 12, "__reversed__")
+QDEF(MP_QSTR___rfloordiv__, 38996, 13, "__rfloordiv__")
+QDEF(MP_QSTR___rlshift__, 53531, 11, "__rlshift__")
+QDEF(MP_QSTR___rmatmul__, 987, 11, "__rmatmul__")
+QDEF(MP_QSTR___rmod__, 35377, 8, "__rmod__")
+QDEF(MP_QSTR___rmul__, 355, 8, "__rmul__")
+QDEF(MP_QSTR___ror__, 56362, 7, "__ror__")
+QDEF(MP_QSTR___rpow__, 39679, 8, "__rpow__")
+QDEF(MP_QSTR___rrshift__, 40389, 11, "__rrshift__")
+QDEF(MP_QSTR___rshift__, 38999, 10, "__rshift__")
+QDEF(MP_QSTR___rsub__, 30579, 8, "__rsub__")
+QDEF(MP_QSTR___rtruediv__, 55130, 12, "__rtruediv__")
+QDEF(MP_QSTR___rxor__, 34546, 8, "__rxor__")
+QDEF(MP_QSTR___set__, 45991, 7, "__set__")
+QDEF(MP_QSTR___setattr__, 6484, 11, "__setattr__")
+QDEF(MP_QSTR___sub__, 2337, 7, "__sub__")
+QDEF(MP_QSTR___traceback__, 53071, 13, "__traceback__")
+QDEF(MP_QSTR___truediv__, 61320, 11, "__truediv__")
+QDEF(MP_QSTR___xor__, 60448, 7, "__xor__")
+QDEF(MP_QSTR__gt__gt__gt__space_, 44187, 4, ">>> ")
+QDEF(MP_QSTR__dot__dot__dot__space_, 10379, 4, "... ")
+QDEF(MP_QSTR__percent__hash_o, 6764, 3, "%#o")
+QDEF(MP_QSTR__percent__hash_x, 6779, 3, "%#x")
+QDEF(MP_QSTR__brace_open__colon__hash_b_brace_close_, 14168, 5, "{:#b}")
+QDEF(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 7795, 32, "maximum recursion depth exceeded")
+QDEF(MP_QSTR__lt_lambda_gt_, 35968, 8, "")
+QDEF(MP_QSTR__lt_listcomp_gt_, 5588, 10, "")
+QDEF(MP_QSTR__lt_dictcomp_gt_, 36300, 10, "")
+QDEF(MP_QSTR__lt_setcomp_gt_, 20820, 9, "")
+QDEF(MP_QSTR__lt_genexpr_gt_, 27188, 9, "")
+QDEF(MP_QSTR__lt_string_gt_, 21330, 8, "")
+QDEF(MP_QSTR__lt_stdin_gt_, 25571, 7, "")
+QDEF(MP_QSTR_A0, 29268, 2, "A0")
+QDEF(MP_QSTR_A1, 29269, 2, "A1")
+QDEF(MP_QSTR_A10, 48325, 3, "A10")
+QDEF(MP_QSTR_A11, 48324, 3, "A11")
+QDEF(MP_QSTR_A12, 48327, 3, "A12")
+QDEF(MP_QSTR_A13, 48326, 3, "A13")
+QDEF(MP_QSTR_A14, 48321, 3, "A14")
+QDEF(MP_QSTR_A15, 48320, 3, "A15")
+QDEF(MP_QSTR_A2, 29270, 2, "A2")
+QDEF(MP_QSTR_A3, 29271, 2, "A3")
+QDEF(MP_QSTR_A4, 29264, 2, "A4")
+QDEF(MP_QSTR_A5, 29265, 2, "A5")
+QDEF(MP_QSTR_A6, 29266, 2, "A6")
+QDEF(MP_QSTR_A7, 29267, 2, "A7")
+QDEF(MP_QSTR_A8, 29276, 2, "A8")
+QDEF(MP_QSTR_A9, 29277, 2, "A9")
+QDEF(MP_QSTR_AF_INET, 47083, 7, "AF_INET")
+QDEF(MP_QSTR_AF_INET6, 46461, 8, "AF_INET6")
+QDEF(MP_QSTR_AP_IF, 38404, 5, "AP_IF")
+QDEF(MP_QSTR_ARRAY, 31324, 5, "ARRAY")
+QDEF(MP_QSTR_B0, 29431, 2, "B0")
+QDEF(MP_QSTR_B1, 29430, 2, "B1")
+QDEF(MP_QSTR_B10, 53638, 3, "B10")
+QDEF(MP_QSTR_B11, 53639, 3, "B11")
+QDEF(MP_QSTR_B12, 53636, 3, "B12")
+QDEF(MP_QSTR_B13, 53637, 3, "B13")
+QDEF(MP_QSTR_B14, 53634, 3, "B14")
+QDEF(MP_QSTR_B15, 53635, 3, "B15")
+QDEF(MP_QSTR_B2, 29429, 2, "B2")
+QDEF(MP_QSTR_B3, 29428, 2, "B3")
+QDEF(MP_QSTR_B4, 29427, 2, "B4")
+QDEF(MP_QSTR_B5, 29426, 2, "B5")
+QDEF(MP_QSTR_B6, 29425, 2, "B6")
+QDEF(MP_QSTR_B7, 29424, 2, "B7")
+QDEF(MP_QSTR_B8, 29439, 2, "B8")
+QDEF(MP_QSTR_B9, 29438, 2, "B9")
+QDEF(MP_QSTR_BFINT16, 58005, 7, "BFINT16")
+QDEF(MP_QSTR_BFINT32, 57939, 7, "BFINT32")
+QDEF(MP_QSTR_BFINT8, 39498, 6, "BFINT8")
+QDEF(MP_QSTR_BFUINT16, 42560, 8, "BFUINT16")
+QDEF(MP_QSTR_BFUINT32, 42502, 8, "BFUINT32")
+QDEF(MP_QSTR_BFUINT8, 44991, 7, "BFUINT8")
+QDEF(MP_QSTR_BF_LEN, 45081, 6, "BF_LEN")
+QDEF(MP_QSTR_BF_POS, 40274, 6, "BF_POS")
+QDEF(MP_QSTR_BIG_ENDIAN, 20991, 10, "BIG_ENDIAN")
+QDEF(MP_QSTR_BytesIO, 46874, 7, "BytesIO")
+QDEF(MP_QSTR_C0, 29334, 2, "C0")
+QDEF(MP_QSTR_C1, 29335, 2, "C1")
+QDEF(MP_QSTR_C10, 50503, 3, "C10")
+QDEF(MP_QSTR_C11, 50502, 3, "C11")
+QDEF(MP_QSTR_C12, 50501, 3, "C12")
+QDEF(MP_QSTR_C13, 50500, 3, "C13")
+QDEF(MP_QSTR_C14, 50499, 3, "C14")
+QDEF(MP_QSTR_C15, 50498, 3, "C15")
+QDEF(MP_QSTR_C2, 29332, 2, "C2")
+QDEF(MP_QSTR_C3, 29333, 2, "C3")
+QDEF(MP_QSTR_C4, 29330, 2, "C4")
+QDEF(MP_QSTR_C5, 29331, 2, "C5")
+QDEF(MP_QSTR_C6, 29328, 2, "C6")
+QDEF(MP_QSTR_C7, 29329, 2, "C7")
+QDEF(MP_QSTR_C8, 29342, 2, "C8")
+QDEF(MP_QSTR_C9, 29343, 2, "C9")
+QDEF(MP_QSTR_CancelledError, 39926, 14, "CancelledError")
+QDEF(MP_QSTR_D2, 29235, 2, "D2")
+QDEF(MP_QSTR_DecompIO, 46995, 8, "DecompIO")
+QDEF(MP_QSTR_EACCES, 49719, 6, "EACCES")
+QDEF(MP_QSTR_EADDRINUSE, 4375, 10, "EADDRINUSE")
+QDEF(MP_QSTR_EAGAIN, 60448, 6, "EAGAIN")
+QDEF(MP_QSTR_EALREADY, 5446, 8, "EALREADY")
+QDEF(MP_QSTR_EBADF, 41825, 5, "EBADF")
+QDEF(MP_QSTR_ECONNABORTED, 43815, 12, "ECONNABORTED")
+QDEF(MP_QSTR_ECONNREFUSED, 11322, 12, "ECONNREFUSED")
+QDEF(MP_QSTR_ECONNRESET, 64281, 10, "ECONNRESET")
+QDEF(MP_QSTR_EEXIST, 44371, 6, "EEXIST")
+QDEF(MP_QSTR_EHOSTUNREACH, 9606, 12, "EHOSTUNREACH")
+QDEF(MP_QSTR_EINPROGRESS, 41114, 11, "EINPROGRESS")
+QDEF(MP_QSTR_EINVAL, 65372, 6, "EINVAL")
+QDEF(MP_QSTR_EIO, 42630, 3, "EIO")
+QDEF(MP_QSTR_EISDIR, 20389, 6, "EISDIR")
+QDEF(MP_QSTR_ENOBUFS, 34787, 7, "ENOBUFS")
+QDEF(MP_QSTR_ENODEV, 26550, 6, "ENODEV")
+QDEF(MP_QSTR_ENOENT, 25950, 6, "ENOENT")
+QDEF(MP_QSTR_ENOMEM, 34212, 6, "ENOMEM")
+QDEF(MP_QSTR_ENOTCONN, 55161, 8, "ENOTCONN")
+QDEF(MP_QSTR_EOPNOTSUPP, 38828, 10, "EOPNOTSUPP")
+QDEF(MP_QSTR_EPERM, 32746, 5, "EPERM")
+QDEF(MP_QSTR_ESP8266, 55433, 7, "ESP8266")
+QDEF(MP_QSTR_ETIMEDOUT, 63743, 9, "ETIMEDOUT")
+QDEF(MP_QSTR_FLOAT32, 34740, 7, "FLOAT32")
+QDEF(MP_QSTR_FLOAT64, 34583, 7, "FLOAT64")
+QDEF(MP_QSTR_FileIO, 5573, 6, "FileIO")
+QDEF(MP_QSTR_FrameBuffer, 48856, 11, "FrameBuffer")
+QDEF(MP_QSTR_FrameBuffer1, 39401, 12, "FrameBuffer1")
+QDEF(MP_QSTR_GS2_HMSB, 49960, 8, "GS2_HMSB")
+QDEF(MP_QSTR_GS4_HMSB, 29550, 8, "GS4_HMSB")
+QDEF(MP_QSTR_GS8, 49321, 3, "GS8")
+QDEF(MP_QSTR_IN, 29474, 2, "IN")
+QDEF(MP_QSTR_INT, 55094, 3, "INT")
+QDEF(MP_QSTR_INT16, 30353, 5, "INT16")
+QDEF(MP_QSTR_INT32, 30295, 5, "INT32")
+QDEF(MP_QSTR_INT64, 30196, 5, "INT64")
+QDEF(MP_QSTR_INT8, 48590, 4, "INT8")
+QDEF(MP_QSTR_IN_PULLDOWN, 47946, 11, "IN_PULLDOWN")
+QDEF(MP_QSTR_IN_PULLUP, 55837, 9, "IN_PULLUP")
+QDEF(MP_QSTR_IOBase, 48694, 6, "IOBase")
+QDEF(MP_QSTR_IRQ_FALLING, 49207, 11, "IRQ_FALLING")
+QDEF(MP_QSTR_IRQ_RISING, 60792, 10, "IRQ_RISING")
+QDEF(MP_QSTR_KEY1, 4963, 4, "KEY1")
+QDEF(MP_QSTR_KEY2, 4960, 4, "KEY2")
+QDEF(MP_QSTR_LED, 56456, 3, "LED")
+QDEF(MP_QSTR_LITTLE_ENDIAN, 23487, 13, "LITTLE_ENDIAN")
+QDEF(MP_QSTR_LONG, 25871, 4, "LONG")
+QDEF(MP_QSTR_LONGLONG, 54405, 8, "LONGLONG")
+QDEF(MP_QSTR_LSB, 57048, 3, "LSB")
+QDEF(MP_QSTR_LockType, 8246, 8, "LockType")
+QDEF(MP_QSTR_MONO_HLSB, 38988, 9, "MONO_HLSB")
+QDEF(MP_QSTR_MONO_HMSB, 33741, 9, "MONO_HMSB")
+QDEF(MP_QSTR_MONO_VLSB, 64530, 9, "MONO_VLSB")
+QDEF(MP_QSTR_MSB, 51801, 3, "MSB")
+QDEF(MP_QSTR_MVLSB, 5123, 5, "MVLSB")
+QDEF(MP_QSTR_NATIVE, 36356, 6, "NATIVE")
+QDEF(MP_QSTR_NotImplemented, 50750, 14, "NotImplemented")
+QDEF(MP_QSTR_ONE_SHOT, 65374, 8, "ONE_SHOT")
+QDEF(MP_QSTR_OPEN_DRAIN, 18526, 10, "OPEN_DRAIN")
+QDEF(MP_QSTR_OUT, 58123, 3, "OUT")
+QDEF(MP_QSTR_OrderedDict, 32496, 11, "OrderedDict")
+QDEF(MP_QSTR_PERIODIC, 13578, 8, "PERIODIC")
+QDEF(MP_QSTR_POLLERR, 49375, 7, "POLLERR")
+QDEF(MP_QSTR_POLLHUP, 35447, 7, "POLLHUP")
+QDEF(MP_QSTR_POLLIN, 24957, 6, "POLLIN")
+QDEF(MP_QSTR_POLLOUT, 34164, 7, "POLLOUT")
+QDEF(MP_QSTR_PTR, 3251, 3, "PTR")
+QDEF(MP_QSTR_Pin, 5138, 3, "Pin")
+QDEF(MP_QSTR_PinBase, 17223, 7, "PinBase")
+QDEF(MP_QSTR_RGB565, 52324, 6, "RGB565")
+QDEF(MP_QSTR_SHORT, 7159, 5, "SHORT")
+QDEF(MP_QSTR_SOCK_DGRAM, 5299, 10, "SOCK_DGRAM")
+QDEF(MP_QSTR_SOCK_RAW, 38602, 8, "SOCK_RAW")
+QDEF(MP_QSTR_SOCK_STREAM, 48690, 11, "SOCK_STREAM")
+QDEF(MP_QSTR_SOL_SOCKET, 57103, 10, "SOL_SOCKET")
+QDEF(MP_QSTR_SO_KEEPALIVE, 41770, 12, "SO_KEEPALIVE")
+QDEF(MP_QSTR_SO_RCVTIMEO, 10459, 11, "SO_RCVTIMEO")
+QDEF(MP_QSTR_SO_REUSEADDR, 21281, 12, "SO_REUSEADDR")
+QDEF(MP_QSTR_SO_SNDTIMEO, 65317, 11, "SO_SNDTIMEO")
+QDEF(MP_QSTR_SPI, 4591, 3, "SPI")
+QDEF(MP_QSTR_STA_IF, 7091, 6, "STA_IF")
+QDEF(MP_QSTR_Signal, 58523, 6, "Signal")
+QDEF(MP_QSTR_SoftI2C, 61971, 7, "SoftI2C")
+QDEF(MP_QSTR_SoftSPI, 22561, 7, "SoftSPI")
+QDEF(MP_QSTR_StopAsyncIteration, 61676, 18, "StopAsyncIteration")
+QDEF(MP_QSTR_StringIO, 30326, 8, "StringIO")
+QDEF(MP_QSTR_Task, 16904, 4, "Task")
+QDEF(MP_QSTR_TaskQueue, 23705, 9, "TaskQueue")
+QDEF(MP_QSTR_TextIOWrapper, 36269, 13, "TextIOWrapper")
+QDEF(MP_QSTR_Timer, 8098, 5, "Timer")
+QDEF(MP_QSTR_UART, 6583, 4, "UART")
+QDEF(MP_QSTR_UINT, 15651, 4, "UINT")
+QDEF(MP_QSTR_UINT16, 6084, 6, "UINT16")
+QDEF(MP_QSTR_UINT32, 6018, 6, "UINT32")
+QDEF(MP_QSTR_UINT64, 6241, 6, "UINT64")
+QDEF(MP_QSTR_UINT8, 57787, 5, "UINT8")
+QDEF(MP_QSTR_ULONG, 36218, 5, "ULONG")
+QDEF(MP_QSTR_ULONGLONG, 50800, 9, "ULONGLONG")
+QDEF(MP_QSTR_USHORT, 62626, 6, "USHORT")
+QDEF(MP_QSTR_UnicodeError, 53538, 12, "UnicodeError")
+QDEF(MP_QSTR_VOID, 62001, 4, "VOID")
+QDEF(MP_QSTR_VfsTos, 55502, 6, "VfsTos")
+QDEF(MP_QSTR__machine, 19391, 8, "_machine")
+QDEF(MP_QSTR__task_queue, 50649, 11, "_task_queue")
+QDEF(MP_QSTR__thread, 724, 7, "_thread")
+QDEF(MP_QSTR__uasyncio, 24527, 9, "_uasyncio")
+QDEF(MP_QSTR_a2b_base64, 2876, 10, "a2b_base64")
+QDEF(MP_QSTR_abs_tol, 28029, 7, "abs_tol")
+QDEF(MP_QSTR_accept, 35205, 6, "accept")
+QDEF(MP_QSTR_acos, 40987, 4, "acos")
+QDEF(MP_QSTR_acquire, 54045, 7, "acquire")
+QDEF(MP_QSTR_add, 12868, 3, "add")
+QDEF(MP_QSTR_addr, 31414, 4, "addr")
+QDEF(MP_QSTR_addressof, 63834, 9, "addressof")
+QDEF(MP_QSTR_addrsize, 37267, 8, "addrsize")
+QDEF(MP_QSTR_alloc_emergency_exception_buf, 10872, 29, "alloc_emergency_exception_buf")
+QDEF(MP_QSTR_allocate_lock, 60908, 13, "allocate_lock")
+QDEF(MP_QSTR_arg, 13457, 3, "arg")
+QDEF(MP_QSTR_argv, 50887, 4, "argv")
+QDEF(MP_QSTR_array, 29308, 5, "array")
+QDEF(MP_QSTR_asin, 58704, 4, "asin")
+QDEF(MP_QSTR_atan, 48671, 4, "atan")
+QDEF(MP_QSTR_atan2, 33229, 5, "atan2")
+QDEF(MP_QSTR_b2a_base64, 36668, 10, "b2a_base64")
+QDEF(MP_QSTR_baudrate, 55541, 8, "baudrate")
+QDEF(MP_QSTR_bin, 18656, 3, "bin")
+QDEF(MP_QSTR_bind, 25732, 4, "bind")
+QDEF(MP_QSTR_bits, 26697, 4, "bits")
+QDEF(MP_QSTR_blit, 20726, 4, "blit")
+QDEF(MP_QSTR_bound_method, 41623, 12, "bound_method")
+QDEF(MP_QSTR_buffer, 41189, 6, "buffer")
+QDEF(MP_QSTR_buffering, 56101, 9, "buffering")
+QDEF(MP_QSTR_bytearray_at, 23708, 12, "bytearray_at")
+QDEF(MP_QSTR_byteorder, 39265, 9, "byteorder")
+QDEF(MP_QSTR_bytes_at, 23990, 8, "bytes_at")
+QDEF(MP_QSTR_calcsize, 14413, 8, "calcsize")
+QDEF(MP_QSTR_callback, 61516, 8, "callback")
+QDEF(MP_QSTR_cancel, 34563, 6, "cancel")
+QDEF(MP_QSTR_ceil, 45062, 4, "ceil")
+QDEF(MP_QSTR_center, 48974, 6, "center")
+QDEF(MP_QSTR_chdir, 45745, 5, "chdir")
+QDEF(MP_QSTR_choice, 13102, 6, "choice")
+QDEF(MP_QSTR_closure, 51828, 7, "closure")
+QDEF(MP_QSTR_cmath, 62646, 5, "cmath")
+QDEF(MP_QSTR_code, 55912, 4, "code")
+QDEF(MP_QSTR_collect, 26011, 7, "collect")
+QDEF(MP_QSTR_compile, 51700, 7, "compile")
+QDEF(MP_QSTR_complex, 40389, 7, "complex")
+QDEF(MP_QSTR_connect, 15835, 7, "connect")
+QDEF(MP_QSTR_copysign, 5171, 8, "copysign")
+QDEF(MP_QSTR_coro, 56244, 4, "coro")
+QDEF(MP_QSTR_cos, 19578, 3, "cos")
+QDEF(MP_QSTR_crc32, 59510, 5, "crc32")
+QDEF(MP_QSTR_cur_task, 11763, 8, "cur_task")
+QDEF(MP_QSTR_data, 56341, 4, "data")
+QDEF(MP_QSTR_decode, 22953, 6, "decode")
+QDEF(MP_QSTR_decompress, 64354, 10, "decompress")
+QDEF(MP_QSTR_default, 32206, 7, "default")
+QDEF(MP_QSTR_degrees, 16642, 7, "degrees")
+QDEF(MP_QSTR_deinit, 36254, 6, "deinit")
+QDEF(MP_QSTR_delattr, 51419, 7, "delattr")
+QDEF(MP_QSTR_deleter, 56174, 7, "deleter")
+QDEF(MP_QSTR_deque, 39173, 5, "deque")
+QDEF(MP_QSTR_dict_view, 43309, 9, "dict_view")
+QDEF(MP_QSTR_difference, 9330, 10, "difference")
+QDEF(MP_QSTR_difference_update, 64156, 17, "difference_update")
+QDEF(MP_QSTR_digest, 50381, 6, "digest")
+QDEF(MP_QSTR_disable, 30353, 7, "disable")
+QDEF(MP_QSTR_discard, 28943, 7, "discard")
+QDEF(MP_QSTR_doc, 7981, 3, "doc")
+QDEF(MP_QSTR_done, 837, 4, "done")
+QDEF(MP_QSTR_dump, 12265, 4, "dump")
+QDEF(MP_QSTR_dumps, 11642, 5, "dumps")
+QDEF(MP_QSTR_e, 46528, 1, "e")
+QDEF(MP_QSTR_enable, 56836, 6, "enable")
+QDEF(MP_QSTR_encode, 51779, 6, "encode")
+QDEF(MP_QSTR_encoding, 39942, 8, "encoding")
+QDEF(MP_QSTR_enumerate, 47729, 9, "enumerate")
+QDEF(MP_QSTR_errno, 4545, 5, "errno")
+QDEF(MP_QSTR_errorcode, 56592, 9, "errorcode")
+QDEF(MP_QSTR_execfile, 10328, 8, "execfile")
+QDEF(MP_QSTR_exit, 48773, 4, "exit")
+QDEF(MP_QSTR_exp, 9416, 3, "exp")
+QDEF(MP_QSTR_fabs, 4755, 4, "fabs")
+QDEF(MP_QSTR_factorial, 13004, 9, "factorial")
+QDEF(MP_QSTR_file, 13507, 4, "file")
+QDEF(MP_QSTR_fileno, 30338, 6, "fileno")
+QDEF(MP_QSTR_fill, 13514, 4, "fill")
+QDEF(MP_QSTR_fill_rect, 60725, 9, "fill_rect")
+QDEF(MP_QSTR_filter, 48677, 6, "filter")
+QDEF(MP_QSTR_firstbit, 14624, 8, "firstbit")
+QDEF(MP_QSTR_float, 17461, 5, "float")
+QDEF(MP_QSTR_floor, 18045, 5, "floor")
+QDEF(MP_QSTR_flush, 49505, 5, "flush")
+QDEF(MP_QSTR_fmod, 17637, 4, "fmod")
+QDEF(MP_QSTR_framebuf, 33385, 8, "framebuf")
+QDEF(MP_QSTR_freq, 15077, 4, "freq")
+QDEF(MP_QSTR_frexp, 38940, 5, "frexp")
+QDEF(MP_QSTR_fromkeys, 48439, 8, "fromkeys")
+QDEF(MP_QSTR_frozenset, 40173, 9, "frozenset")
+QDEF(MP_QSTR_function, 551, 8, "function")
+QDEF(MP_QSTR_gc, 28257, 2, "gc")
+QDEF(MP_QSTR_generator, 50070, 9, "generator")
+QDEF(MP_QSTR_get_ident, 45566, 9, "get_ident")
+QDEF(MP_QSTR_getaddrinfo, 6254, 11, "getaddrinfo")
+QDEF(MP_QSTR_getcwd, 53251, 6, "getcwd")
+QDEF(MP_QSTR_getrandbits, 32102, 11, "getrandbits")
+QDEF(MP_QSTR_getter, 45712, 6, "getter")
+QDEF(MP_QSTR_getvalue, 44152, 8, "getvalue")
+QDEF(MP_QSTR_group, 45242, 5, "group")
+QDEF(MP_QSTR_handler, 24029, 7, "handler")
+QDEF(MP_QSTR_heap_lock, 36013, 9, "heap_lock")
+QDEF(MP_QSTR_heap_unlock, 11606, 11, "heap_unlock")
+QDEF(MP_QSTR_heapify, 11695, 7, "heapify")
+QDEF(MP_QSTR_heappop, 10198, 7, "heappop")
+QDEF(MP_QSTR_heappush, 27527, 8, "heappush")
+QDEF(MP_QSTR_help, 23700, 4, "help")
+QDEF(MP_QSTR_hex, 20592, 3, "hex")
+QDEF(MP_QSTR_hexlify, 32554, 7, "hexlify")
+QDEF(MP_QSTR_hline, 15491, 5, "hline")
+QDEF(MP_QSTR_ilistdir, 27249, 8, "ilistdir")
+QDEF(MP_QSTR_imag, 46919, 4, "imag")
+QDEF(MP_QSTR_implementation, 11543, 14, "implementation")
+QDEF(MP_QSTR_indices, 18522, 7, "indices")
+QDEF(MP_QSTR_inf, 21252, 3, "inf")
+QDEF(MP_QSTR_init, 46111, 4, "init")
+QDEF(MP_QSTR_input, 23155, 5, "input")
+QDEF(MP_QSTR_intersection, 10792, 12, "intersection")
+QDEF(MP_QSTR_intersection_update, 56582, 19, "intersection_update")
+QDEF(MP_QSTR_invert, 183, 6, "invert")
+QDEF(MP_QSTR_ioctl, 49784, 5, "ioctl")
+QDEF(MP_QSTR_ipoll, 23891, 5, "ipoll")
+QDEF(MP_QSTR_irq, 22159, 3, "irq")
+QDEF(MP_QSTR_isclose, 20041, 7, "isclose")
+QDEF(MP_QSTR_isdisjoint, 26871, 10, "isdisjoint")
+QDEF(MP_QSTR_isenabled, 58778, 9, "isenabled")
+QDEF(MP_QSTR_isfinite, 43942, 8, "isfinite")
+QDEF(MP_QSTR_isinf, 4414, 5, "isinf")
+QDEF(MP_QSTR_isnan, 926, 5, "isnan")
+QDEF(MP_QSTR_issubset, 49593, 8, "issubset")
+QDEF(MP_QSTR_issuperset, 60668, 10, "issuperset")
+QDEF(MP_QSTR_iterable, 37413, 8, "iterable")
+QDEF(MP_QSTR_iterator, 48711, 8, "iterator")
+QDEF(MP_QSTR_kbd_intr, 5110, 8, "kbd_intr")
+QDEF(MP_QSTR_keepends, 35682, 8, "keepends")
+QDEF(MP_QSTR_ldexp, 28480, 5, "ldexp")
+QDEF(MP_QSTR_line, 7371, 4, "line")
+QDEF(MP_QSTR_listdir, 58264, 7, "listdir")
+QDEF(MP_QSTR_listen, 3788, 6, "listen")
+QDEF(MP_QSTR_load, 9315, 4, "load")
+QDEF(MP_QSTR_loads, 45232, 5, "loads")
+QDEF(MP_QSTR_lock, 9134, 4, "lock")
+QDEF(MP_QSTR_locked, 47631, 6, "locked")
+QDEF(MP_QSTR_log, 16161, 3, "log")
+QDEF(MP_QSTR_machine, 43872, 7, "machine")
+QDEF(MP_QSTR_makefile, 54721, 8, "makefile")
+QDEF(MP_QSTR_match, 8854, 5, "match")
+QDEF(MP_QSTR_math, 47925, 4, "math")
+QDEF(MP_QSTR_max, 17329, 3, "max")
+QDEF(MP_QSTR_maxsize, 28884, 7, "maxsize")
+QDEF(MP_QSTR_mem, 17440, 3, "mem")
+QDEF(MP_QSTR_mem16, 51719, 5, "mem16")
+QDEF(MP_QSTR_mem32, 51777, 5, "mem32")
+QDEF(MP_QSTR_mem8, 51224, 4, "mem8")
+QDEF(MP_QSTR_mem_alloc, 11090, 9, "mem_alloc")
+QDEF(MP_QSTR_mem_free, 25291, 8, "mem_free")
+QDEF(MP_QSTR_mem_info, 61905, 8, "mem_info")
+QDEF(MP_QSTR_memaddr, 59539, 7, "memaddr")
+QDEF(MP_QSTR_memoryview, 17513, 10, "memoryview")
+QDEF(MP_QSTR_min, 17071, 3, "min")
+QDEF(MP_QSTR_miso, 39069, 4, "miso")
+QDEF(MP_QSTR_mkdir, 46492, 5, "mkdir")
+QDEF(MP_QSTR_mkfs, 45174, 4, "mkfs")
+QDEF(MP_QSTR_mode, 49190, 4, "mode")
+QDEF(MP_QSTR_modf, 49189, 4, "modf")
+QDEF(MP_QSTR_modify, 26357, 6, "modify")
+QDEF(MP_QSTR_module, 39359, 6, "module")
+QDEF(MP_QSTR_modules, 53740, 7, "modules")
+QDEF(MP_QSTR_mosi, 49693, 4, "mosi")
+QDEF(MP_QSTR_mount, 3496, 5, "mount")
+QDEF(MP_QSTR_name, 30114, 4, "name")
+QDEF(MP_QSTR_namedtuple, 5662, 10, "namedtuple")
+QDEF(MP_QSTR_nan, 22756, 3, "nan")
+QDEF(MP_QSTR_network, 10331, 7, "network")
+QDEF(MP_QSTR_newline, 35127, 7, "newline")
+QDEF(MP_QSTR_nodename, 43874, 8, "nodename")
+QDEF(MP_QSTR_oct, 23805, 3, "oct")
+QDEF(MP_QSTR_off, 23690, 3, "off")
+QDEF(MP_QSTR_on, 28516, 2, "on")
+QDEF(MP_QSTR_opt_level, 26503, 9, "opt_level")
+QDEF(MP_QSTR_pack, 53692, 4, "pack")
+QDEF(MP_QSTR_pack_into, 43295, 9, "pack_into")
+QDEF(MP_QSTR_partition, 58759, 9, "partition")
+QDEF(MP_QSTR_path, 52872, 4, "path")
+QDEF(MP_QSTR_peek, 49534, 4, "peek")
+QDEF(MP_QSTR_pend_throw, 29939, 10, "pend_throw")
+QDEF(MP_QSTR_period, 41120, 6, "period")
+QDEF(MP_QSTR_ph_key, 6901, 6, "ph_key")
+QDEF(MP_QSTR_phase, 54634, 5, "phase")
+QDEF(MP_QSTR_pi, 28700, 2, "pi")
+QDEF(MP_QSTR_pixel, 61517, 5, "pixel")
+QDEF(MP_QSTR_platform, 6458, 8, "platform")
+QDEF(MP_QSTR_polar, 3077, 5, "polar")
+QDEF(MP_QSTR_polarity, 60737, 8, "polarity")
+QDEF(MP_QSTR_poll, 55706, 4, "poll")
+QDEF(MP_QSTR_popleft, 39537, 7, "popleft")
+QDEF(MP_QSTR_print_exception, 8732, 15, "print_exception")
+QDEF(MP_QSTR_property, 10690, 8, "property")
+QDEF(MP_QSTR_ps1, 28919, 3, "ps1")
+QDEF(MP_QSTR_ps2, 28916, 3, "ps2")
+QDEF(MP_QSTR_push, 32443, 4, "push")
+QDEF(MP_QSTR_pwd, 28710, 3, "pwd")
+QDEF(MP_QSTR_qstr_info, 33200, 9, "qstr_info")
+QDEF(MP_QSTR_r, 46551, 1, "r")
+QDEF(MP_QSTR_radians, 16263, 7, "radians")
+QDEF(MP_QSTR_randint, 56495, 7, "randint")
+QDEF(MP_QSTR_random, 11454, 6, "random")
+QDEF(MP_QSTR_randrange, 16035, 9, "randrange")
+QDEF(MP_QSTR_rb, 28885, 2, "rb")
+QDEF(MP_QSTR_readblocks, 7213, 10, "readblocks")
+QDEF(MP_QSTR_readfrom, 45377, 8, "readfrom")
+QDEF(MP_QSTR_readfrom_into, 16258, 13, "readfrom_into")
+QDEF(MP_QSTR_readfrom_mem, 25915, 12, "readfrom_mem")
+QDEF(MP_QSTR_readfrom_mem_into, 36408, 17, "readfrom_mem_into")
+QDEF(MP_QSTR_readlines, 22890, 9, "readlines")
+QDEF(MP_QSTR_readonly, 35075, 8, "readonly")
+QDEF(MP_QSTR_real, 63935, 4, "real")
+QDEF(MP_QSTR_rect, 63973, 4, "rect")
+QDEF(MP_QSTR_recv, 63975, 4, "recv")
+QDEF(MP_QSTR_recvfrom, 37009, 8, "recvfrom")
+QDEF(MP_QSTR_register, 41388, 8, "register")
+QDEF(MP_QSTR_rel_tol, 18006, 7, "rel_tol")
+QDEF(MP_QSTR_release, 36844, 7, "release")
+QDEF(MP_QSTR_rename, 6197, 6, "rename")
+QDEF(MP_QSTR_reversed, 28321, 8, "reversed")
+QDEF(MP_QSTR_rmdir, 42821, 5, "rmdir")
+QDEF(MP_QSTR_route, 10300, 5, "route")
+QDEF(MP_QSTR_rpartition, 53269, 10, "rpartition")
+QDEF(MP_QSTR_rxbuf, 26494, 5, "rxbuf")
+QDEF(MP_QSTR_scan, 36378, 4, "scan")
+QDEF(MP_QSTR_schedule, 44256, 8, "schedule")
+QDEF(MP_QSTR_sck, 36862, 3, "sck")
+QDEF(MP_QSTR_scl, 36857, 3, "scl")
+QDEF(MP_QSTR_scroll, 23080, 6, "scroll")
+QDEF(MP_QSTR_sda, 36691, 3, "sda")
+QDEF(MP_QSTR_search, 49579, 6, "search")
+QDEF(MP_QSTR_seed, 30098, 4, "seed")
+QDEF(MP_QSTR_seek, 30109, 4, "seek")
+QDEF(MP_QSTR_select, 16781, 6, "select")
+QDEF(MP_QSTR_sendall, 40760, 7, "sendall")
+QDEF(MP_QSTR_sendto, 802, 6, "sendto")
+QDEF(MP_QSTR_separators, 3307, 10, "separators")
+QDEF(MP_QSTR_setblocking, 6254, 11, "setblocking")
+QDEF(MP_QSTR_setsockopt, 59448, 10, "setsockopt")
+QDEF(MP_QSTR_setter, 22788, 6, "setter")
+QDEF(MP_QSTR_settimeout, 35548, 10, "settimeout")
+QDEF(MP_QSTR_sha256, 302, 6, "sha256")
+QDEF(MP_QSTR_sin, 37041, 3, "sin")
+QDEF(MP_QSTR_single, 8255, 6, "single")
+QDEF(MP_QSTR_sizeof, 29513, 6, "sizeof")
+QDEF(MP_QSTR_sleep, 10218, 5, "sleep")
+QDEF(MP_QSTR_sleep_ms, 25355, 8, "sleep_ms")
+QDEF(MP_QSTR_slice, 62645, 5, "slice")
+QDEF(MP_QSTR_socket, 52320, 6, "socket")
+QDEF(MP_QSTR_soft_reset, 26081, 10, "soft_reset")
+QDEF(MP_QSTR_splitlines, 54122, 10, "splitlines")
+QDEF(MP_QSTR_sqrt, 17441, 4, "sqrt")
+QDEF(MP_QSTR_ssid, 19208, 4, "ssid")
+QDEF(MP_QSTR_stack_size, 15153, 10, "stack_size")
+QDEF(MP_QSTR_stack_use, 63383, 9, "stack_use")
+QDEF(MP_QSTR_start_new_thread, 9687, 16, "start_new_thread")
+QDEF(MP_QSTR_stat, 13783, 4, "stat")
+QDEF(MP_QSTR_state, 61650, 5, "state")
+QDEF(MP_QSTR_statvfs, 6420, 7, "statvfs")
+QDEF(MP_QSTR_stderr, 22691, 6, "stderr")
+QDEF(MP_QSTR_stdin, 1057, 5, "stdin")
+QDEF(MP_QSTR_stdout, 33544, 6, "stdout")
+QDEF(MP_QSTR_struct, 36882, 6, "struct")
+QDEF(MP_QSTR_sub, 36129, 3, "sub")
+QDEF(MP_QSTR_symmetric_difference, 26574, 20, "symmetric_difference")
+QDEF(MP_QSTR_symmetric_difference_update, 63584, 27, "symmetric_difference_update")
+QDEF(MP_QSTR_sync, 25250, 4, "sync")
+QDEF(MP_QSTR_sys, 36540, 3, "sys")
+QDEF(MP_QSTR_sysname, 13979, 7, "sysname")
+QDEF(MP_QSTR_tan, 25086, 3, "tan")
+QDEF(MP_QSTR_tau, 25061, 3, "tau")
+QDEF(MP_QSTR_tell, 45332, 4, "tell")
+QDEF(MP_QSTR_text, 44952, 4, "text")
+QDEF(MP_QSTR_threshold, 12274, 9, "threshold")
+QDEF(MP_QSTR_tick_hz, 56189, 7, "tick_hz")
+QDEF(MP_QSTR_ticks_add, 44701, 9, "ticks_add")
+QDEF(MP_QSTR_ticks_cpu, 42266, 9, "ticks_cpu")
+QDEF(MP_QSTR_ticks_diff, 57521, 10, "ticks_diff")
+QDEF(MP_QSTR_ticks_ms, 12866, 8, "ticks_ms")
+QDEF(MP_QSTR_timeout, 21566, 7, "timeout")
+QDEF(MP_QSTR_timeout_char, 19065, 12, "timeout_char")
+QDEF(MP_QSTR_trigger, 35997, 7, "trigger")
+QDEF(MP_QSTR_trunc, 39259, 5, "trunc")
+QDEF(MP_QSTR_uarray, 34441, 6, "uarray")
+QDEF(MP_QSTR_ubinascii, 35012, 9, "ubinascii")
+QDEF(MP_QSTR_ucollections, 39445, 12, "ucollections")
+QDEF(MP_QSTR_uctypes, 29176, 7, "uctypes")
+QDEF(MP_QSTR_uerrno, 59828, 6, "uerrno")
+QDEF(MP_QSTR_uhashlib, 40293, 8, "uhashlib")
+QDEF(MP_QSTR_uheapq, 17181, 6, "uheapq")
+QDEF(MP_QSTR_uio, 26294, 3, "uio")
+QDEF(MP_QSTR_ujson, 12520, 5, "ujson")
+QDEF(MP_QSTR_umachine, 32661, 8, "umachine")
+QDEF(MP_QSTR_umount, 40669, 6, "umount")
+QDEF(MP_QSTR_uname, 40119, 5, "uname")
+QDEF(MP_QSTR_unhexlify, 47537, 9, "unhexlify")
+QDEF(MP_QSTR_uniform, 62721, 7, "uniform")
+QDEF(MP_QSTR_union, 31990, 5, "union")
+QDEF(MP_QSTR_unlink, 36862, 6, "unlink")
+QDEF(MP_QSTR_unpack, 15367, 6, "unpack")
+QDEF(MP_QSTR_unpack_from, 27918, 11, "unpack_from")
+QDEF(MP_QSTR_unregister, 54295, 10, "unregister")
+QDEF(MP_QSTR_uos, 26604, 3, "uos")
+QDEF(MP_QSTR_urandom, 44715, 7, "urandom")
+QDEF(MP_QSTR_ure, 25479, 3, "ure")
+QDEF(MP_QSTR_uselect, 36440, 7, "uselect")
+QDEF(MP_QSTR_usocket, 117, 7, "usocket")
+QDEF(MP_QSTR_ustruct, 2119, 7, "ustruct")
+QDEF(MP_QSTR_usys, 62409, 4, "usys")
+QDEF(MP_QSTR_utime, 40421, 5, "utime")
+QDEF(MP_QSTR_uzlib, 39789, 5, "uzlib")
+QDEF(MP_QSTR_version, 54207, 7, "version")
+QDEF(MP_QSTR_version_info, 2670, 12, "version_info")
+QDEF(MP_QSTR_vline, 63005, 5, "vline")
+QDEF(MP_QSTR_write_readinto, 33929, 14, "write_readinto")
+QDEF(MP_QSTR_writeblocks, 57090, 11, "writeblocks")
+QDEF(MP_QSTR_writeto, 14595, 7, "writeto")
+QDEF(MP_QSTR_writeto_mem, 60793, 11, "writeto_mem")
+QDEF(MP_QSTR_writevto, 30069, 8, "writevto")
diff --git a/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/startup_stm32l431xx.s b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/startup_stm32l431xx.s
new file mode 100644
index 00000000..6a5c15a5
--- /dev/null
+++ b/board/BearPi_STM32L431RC/KEIL/micropython_extra_demo/startup_stm32l431xx.s
@@ -0,0 +1,404 @@
+;********************** COPYRIGHT(c) 2017 STMicroelectronics ******************
+;* File Name : startup_stm32l431xx.s
+;* Author : MCD Application Team
+;* Description : STM32L431xx Ultra Low Power devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;*******************************************************************************
+;*
+;* Redistribution and use in source and binary forms, with or without modification,
+;* are permitted provided that the following conditions are met:
+;* 1. Redistributions of source code must retain the above copyright notice,
+;* this list of conditions and the following disclaimer.
+;* 2. Redistributions in binary form must reproduce the above copyright notice,
+;* this list of conditions and the following disclaimer in the documentation
+;* and/or other materials provided with the distribution.
+;* 3. Neither the name of STMicroelectronics nor the names of its contributors
+;* may be used to endorse or promote products derived from this software
+;* without specific prior written permission.
+;*
+;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;*
+;*******************************************************************************
+;
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x100
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x100
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection
+ DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
+ DCD FLASH_IRQHandler ; FLASH
+ DCD RCC_IRQHandler ; RCC
+ DCD EXTI0_IRQHandler ; EXTI Line0
+ DCD EXTI1_IRQHandler ; EXTI Line1
+ DCD EXTI2_IRQHandler ; EXTI Line2
+ DCD EXTI3_IRQHandler ; EXTI Line3
+ DCD EXTI4_IRQHandler ; EXTI Line4
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
+ DCD ADC1_IRQHandler ; ADC1
+ DCD CAN1_TX_IRQHandler ; CAN1 TX
+ DCD CAN1_RX0_IRQHandler ; CAN1 RX0
+ DCD CAN1_RX1_IRQHandler ; CAN1 RX1
+ DCD CAN1_SCE_IRQHandler ; CAN1 SCE
+ DCD EXTI9_5_IRQHandler ; External Line[9:5]s
+ DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break and TIM15
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16
+ DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
+ DCD TIM2_IRQHandler ; TIM2
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD I2C1_EV_IRQHandler ; I2C1 Event
+ DCD I2C1_ER_IRQHandler ; I2C1 Error
+ DCD I2C2_EV_IRQHandler ; I2C2 Event
+ DCD I2C2_ER_IRQHandler ; I2C2 Error
+ DCD SPI1_IRQHandler ; SPI1
+ DCD SPI2_IRQHandler ; SPI2
+ DCD USART1_IRQHandler ; USART1
+ DCD USART2_IRQHandler ; USART2
+ DCD USART3_IRQHandler ; USART3
+ DCD EXTI15_10_IRQHandler ; External Line[15:10]
+ DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SDMMC1_IRQHandler ; SDMMC1
+ DCD 0 ; Reserved
+ DCD SPI3_IRQHandler ; SPI3
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
+ DCD TIM7_IRQHandler ; TIM7
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD COMP_IRQHandler ; COMP Interrupt
+ DCD LPTIM1_IRQHandler ; LP TIM1 interrupt
+ DCD LPTIM2_IRQHandler ; LP TIM2 interrupt
+ DCD 0 ; Reserved
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7
+ DCD LPUART1_IRQHandler ; LP UART1 interrupt
+ DCD QUADSPI_IRQHandler ; Quad SPI global interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 event
+ DCD I2C3_ER_IRQHandler ; I2C3 error
+ DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt
+ DCD 0 ; Reserved
+ DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
+ DCD TSC_IRQHandler ; Touch Sense Controller global interrupt
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD RNG_IRQHandler ; RNG global interrupt
+ DCD FPU_IRQHandler ; FPU
+ DCD CRS_IRQHandler ; CRS interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT CAN1_TX_IRQHandler [WEAK]
+ EXPORT CAN1_RX0_IRQHandler [WEAK]
+ EXPORT CAN1_RX1_IRQHandler [WEAK]
+ EXPORT CAN1_SCE_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_TIM15_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C2_EV_IRQHandler [WEAK]
+ EXPORT I2C2_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT USART2_IRQHandler [WEAK]
+ EXPORT USART3_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT SDMMC1_IRQHandler [WEAK]
+ EXPORT SPI3_IRQHandler [WEAK]
+ EXPORT TIM6_DAC_IRQHandler [WEAK]
+ EXPORT TIM7_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT SWPMI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+CAN1_TX_IRQHandler
+CAN1_RX0_IRQHandler
+CAN1_RX1_IRQHandler
+CAN1_SCE_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_TIM15_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+SDMMC1_IRQHandler
+SPI3_IRQHandler
+TIM6_DAC_IRQHandler
+TIM7_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+COMP_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+LPUART1_IRQHandler
+QUADSPI_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SAI1_IRQHandler
+SWPMI1_IRQHandler
+TSC_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+CRS_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/examples/micropython_demo/micropython_demo.c b/examples/micropython_demo/micropython_demo.c
new file mode 100644
index 00000000..ccc034f1
--- /dev/null
+++ b/examples/micropython_demo/micropython_demo.c
@@ -0,0 +1,53 @@
+#include "tos_k.h"
+#include "mpmain.h"
+#include "mpconfigboard.h"
+
+#ifdef MP_USING_VFS
+#include "tos_vfs.h"
+#include "ff.h"
+#endif /* MP_USING_VFS */
+
+#ifdef MP_USING_QSPI_FLASH
+#include "w25qxx.h"
+#endif /* MP_USING_QSPI_FLASH */
+
+#define MP_TASK_PRIO (3)
+#ifndef MP_TASK_STACK_SIZE
+#define MP_TASK_STACK_SIZE (4 * 1024)
+#endif
+
+// MicroPython task stack
+__STATIC__ k_stack_t mp_task_stack[MP_TASK_STACK_SIZE];
+__STATIC__ k_task_t mp_task;
+
+void mp_entry(void *arg) {
+
+ #ifdef MP_USING_VFS
+ extern vfs_blkdev_ops_t sd_dev;
+ extern vfs_fs_ops_t fatfs_ops;
+
+ tos_vfs_block_device_register("/dev/sd", &sd_dev);
+ tos_vfs_fs_register("fatfs_sd", &fatfs_ops);
+
+ if (tos_vfs_fs_mount("/dev/sd", "/fs", "fatfs_sd") != 0) {
+ printf("mount failed!\n");
+ }
+ #endif /* MP_USING_VFS */
+
+ for (;;) {
+ mp_main();
+ tos_task_delay(100);
+ }
+}
+
+void application_entry(void *arg) {
+
+ #ifdef MP_USING_QSPI_FLASH
+ w25qxx_init();
+ w25qxx_memory_mapped();
+ #endif /* MP_USING_QSPI_FLASH */
+
+ tos_task_create(&mp_task, "micropython", mp_entry,
+ K_NULL, MP_TASK_PRIO, mp_task_stack,
+ MP_TASK_STACK_SIZE, 0);
+}