Browse Source

Merge branch 'master' of https://gitee.com/openLuat/luatos-soc-air105

Wendal Chen 4 năm trước cách đây
mục cha
commit
0614889bce

+ 10 - 3
application/src/luat_base_air105.c

@@ -252,15 +252,22 @@ void luat_ota_reboot(int timeout_ms) {
 #define LVGL_TICK_PERIOD	10
 unsigned int gLVFlashTime;
 static timer_t *lv_timer;
+static uint32_t lvgl_tick_cnt;
 static int luat_lvg_handler(lua_State* L, void* ptr) {
 //	DBG("%u", lv_tick_get());
+	if (lvgl_tick_cnt) lvgl_tick_cnt--;
     lv_task_handler();
     return 0;
 }
 static int32_t _lvgl_handler(void *pData, void *pParam) {
-    rtos_msg_t msg = {0};
-    msg.handler = luat_lvg_handler;
-    luat_msgbus_put(&msg, 0);
+	if (lvgl_tick_cnt < 10)
+	{
+		lvgl_tick_cnt++;
+	    rtos_msg_t msg = {0};
+	    msg.handler = luat_lvg_handler;
+	    luat_msgbus_put(&msg, 0);
+	}
+	return 0;
 }
 void luat_lvgl_tick_sleep(uint8_t OnOff)
 {

+ 6 - 2
application/src/luat_uart_air105.c

@@ -55,12 +55,16 @@ static serials_info serials[MAX_DEVICE_COUNT+1] ={0};
 
 static int32_t luat_uart_wait_timer_cb(void *pData, void *pParam)
 {
-	rtos_msg_t msg;
+    uint32_t uartid = (uint32_t)pParam;
+    rtos_msg_t msg;
     msg.handler = l_uart_handler;
-    msg.arg1 = pParam;
+    msg.arg1 = uartid;
     msg.arg2 = 0;
     msg.ptr = NULL;
     luat_msgbus_put(&msg, 1);
+    if (serials[uartid].rs485_param_bit.is_485used) {
+    	GPIO_Output(serials[uartid].rs485_pin, serials[uartid].rs485_param_bit.rx_level);
+    }
 }
 
 int luat_uart_exist(int uartid){

+ 9 - 3
bsp/common/src/bsp_common.c

@@ -362,6 +362,8 @@ void OS_MutexDelete(HANDLE Sem)
 }
 #endif
 static uint8_t prvOSRunFlag;
+extern const uint32_t __os_heap_start;
+extern const uint32_t __ram_end;
 __attribute__((weak)) void OS_SetStartFlag(void)
 {
 	prvOSRunFlag = 1;
@@ -437,9 +439,13 @@ __attribute__((weak)) void *OS_Calloc(uint32_t count, uint32_t eltsize)
 
 __attribute__((weak)) void OS_Free(void *p)
 {
-	uint32_t Critical = OS_EnterCritical();
-	brel(p);
-	OS_ExitCritical(Critical);
+	if (((uint32_t)p >= (uint32_t)(&__os_heap_start)) && ((uint32_t)p <= (uint32_t)(&__ram_end)))
+	{
+		uint32_t Critical = OS_EnterCritical();
+		brel(p);
+		OS_ExitCritical(Critical);
+	}
+
 }
 
 __attribute__((weak)) void *OS_Realloc(void *buf, uint32_t size)