| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | #include <rtthread.h>#include "flash.h"#include "ad.h"#include "buffer.h"#include "usart.h"#include "plan.h"#include "weight.h"#include "display.h"rt_sem_t thread_init_sem = RT_NULL;void init_usart(void){			__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); //使能IDLE中断		HAL_UART_Receive_DMA(&huart1, rx_buffer1, BUFFER_SIZE);		__HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //使能IDLE中断		HAL_UART_Receive_DMA(&huart2, rx_buffer2, BUFFER_SIZE);		__HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE); //使能IDLE中断		HAL_UART_Receive_DMA(&huart3, rx_buffer3, BUFFER_SIZE);		__HAL_UART_ENABLE_IT(&huart4, UART_IT_IDLE); //使能IDLE中断		HAL_UART_Receive_DMA(&huart4, rx_buffer4, BUFFER_SIZE);}static void init_entry(void *parameter){		  RB_init();					  init_usart();				  //if (WeightConst_TQ==14)  			ArgRead();		rt_sem_release(thread_init_sem);}#define THREAD_PRIORITY         3#define THREAD_STACK_SIZE       800#define THREAD_TIMESLICE        5static  rt_thread_t tid1 = RT_NULL;void thread_init(void){    thread_init_sem = rt_sem_create("thread_init_sem", 0, RT_IPC_FLAG_FIFO);	  pop_product_sem = rt_sem_create("pop_product_sem", 0, RT_IPC_FLAG_FIFO);	  	delay_key_sem = rt_sem_create("delay_key_sem", 0, RT_IPC_FLAG_FIFO);			weight_lock = rt_sem_create("weight_lock", 1, RT_IPC_FLAG_FIFO);	  display_lock = rt_sem_create("display_lock", 1, RT_IPC_FLAG_FIFO); 	  rt_event_init(&display_event, "display_event", RT_IPC_FLAG_FIFO);		      uart1_lock = rt_sem_create("uart1_lock", 1, RT_IPC_FLAG_FIFO);    uart2_lock = rt_sem_create("uart2_lock", 1, RT_IPC_FLAG_FIFO);    uart3_lock = rt_sem_create("uart3_lock", 1, RT_IPC_FLAG_FIFO);    uart4_lock = rt_sem_create("uart4_lock", 1, RT_IPC_FLAG_FIFO);    uart5_lock = rt_sem_create("uart5_lock", 1, RT_IPC_FLAG_FIFO);	    setTIME_lock = rt_sem_create("setTIME_lock", 1, RT_IPC_FLAG_FIFO);		  thread_EmptyBuffer_sem = rt_sem_create("thread_EmptyBuffer_sem", 0, RT_IPC_FLAG_FIFO);	     tid1 = rt_thread_create("init_entry",                            init_entry, RT_NULL,                            THREAD_STACK_SIZE,                            THREAD_PRIORITY, THREAD_TIMESLICE);    /* 如果获得线程控制块,启动这个线程 */    if (tid1 != RT_NULL)        rt_thread_startup(tid1);}
 |