一、項(xiàng)目名稱:
二、項(xiàng)目概述:
本系統(tǒng)是基于M7內(nèi)核的STM32H7B3主芯片,主頻可達(dá)280MHz,內(nèi)部有兩路FDCAN,使用FDCAN1與外部CAN設(shè)備進(jìn)行通信,接收CAN設(shè)備數(shù)據(jù)在顯示屏上顯示。系統(tǒng)移植了freeRTOS系統(tǒng)和LVGL圖形庫,采集了汽車的左右轉(zhuǎn)向信號(hào)、剎車信號(hào)、車速、測(cè)距傳感器的距離信號(hào)。
2.1、系統(tǒng)框圖
控制去采集車輛的信號(hào)、速度信息及一些控制執(zhí)行機(jī)構(gòu)等,開發(fā)板顯示屏顯示要獲取的信號(hào)和數(shù)據(jù),通過顯示屏可設(shè)置設(shè)備的參數(shù)和控制命令信息等,實(shí)現(xiàn)人機(jī)交互。
2.2、創(chuàng)建任務(wù)
freeRTOS系統(tǒng)創(chuàng)建3個(gè)任務(wù)
2.3、freeRTOS部分代碼
void task_create(void)
{
init_usart(115200);
lv_init();
tft_init();
init_touch();
//start_task
xTaskCreate((TaskFunction_t )start_task,
(const char* )"start_task",
(uint16_t )START_STK_SIZE,
(void* )NULL,
(UBaseType_t )START_TASK_PRO,
(TaskHandle_t* )&StartTask_Handler);
vTaskStartScheduler();
}
void start_task(void *pvParameters)
{
taskENTER_CRITICAL();
BinarySemaphore = xSemaphoreCreateBinary();
if(BinarySemaphore == NULL)
{
printf("Binary Sem Create Failed!rn");
}
//gui
xTaskCreate((TaskFunction_t )gui_task,
(const char* )"gui_task",
(uint16_t )GUI_STK_SIZE,
(void* )NULL,
(UBaseType_t )GUI_TASK_PRIO,
(TaskHandle_t* )&GuiTask_Handler);
//task1
xTaskCreate((TaskFunction_t )task1,
(const char* )"task1",
(uint16_t )TASK1_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK1_PRIO,
(TaskHandle_t* )&Task1Task_Handler);
//task2
xTaskCreate((TaskFunction_t )task2,
(const char* )"task2",
(uint16_t )TASK2_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK2_PRIO,
(TaskHandle_t* )&Task2Task_Handler);
taskEXIT_CRITICAL();
vTaskDelete(StartTask_Handler);
}
//gui
void gui_task(void *pvParameters)
{
setup_ui(&guider_ui);
events_init(&guider_ui);
while (1)
{
lv_timer_handler();
vTaskDelay(5);
}
}
//task1
void task1(void *pvParameters)
{
uint8_t d=0;
char buf[4];
while (1)
{
printf("task1 run ...rn");
led2_tog();
d++;
run_flag=1;
vTaskDelay(100);
}
}
uint8_t fdcan_txdat[20];
uint8_t fdcan_rxbuf[20];
//task2
void task2(void *pvParameters)
{
uint8_t jj=0;
init_fdcan();
while (1)
{
jj++;
fdcan_txdat[0]=jj;
fdcan_txdat[1]=0x01;
//fdcan_send_msg(fdcan_txdat, FDCAN_DLC_BYTES_8);
if(fdcan_receive_msg(fdcan_rxbuf) !=0 )
{
printf("canrxrn");
xSemaphoreGive( BinarySemaphore );
}
led3_tog();
//printf("task2 run ...rn");
vTaskDelay(20);
}
}
復(fù)制代碼
三、作品實(shí)物圖
設(shè)備運(yùn)行的界面1
設(shè)備運(yùn)行的界面2
四、演示視頻
視頻:https://www.bilibili.com/video/BV1WK411e7u4/?share_source=copy_web&vd_source=5c43653ace8c8d4fcf66f8c04f6574a4
五、項(xiàng)目文檔
程序文檔: stm32h7b3i_freertos_lvgl8_3_prj_20210119-1.7z (16.19 MB, 下載次數(shù): 1)