查看: 1180|回复: 0

[项目提交] 《2023 DigiKey 汽车应用创意挑战赛》CAN通信显示控制器

[复制链接]
  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1077 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2024-1-19 10:42:06 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 TLLED 于 2024-1-19 10:40 编辑

    一、项目名称:

    CAN通信显示控制器

    二、项目概述:

           本系统是基于M7内核的STM32H7B3主芯片,主频可达280MHz,内部有两路FDCAN,使用FDCAN1与外部CAN设备进行通信,接收CAN设备数据在显示屏上显示。系统移植了freeRTOS系统和LVGL图形库,采集了汽车的左右转向信号、刹车信号、车速、测距传感器的距离信号。

          2.1、系统框图

          控制去采集车辆的信号、速度信息及一些控制执行机构等,开发板显示屏显示要获取的信号和数据,通过显示屏可设置设备的参数和控制命令信息等,实现人机交互。
           004.png

           2.2、创建任务

           freeRTOS系统创建3个任务
           001.png
      
        2.3、freeRTOS部分代码
    1. void task_create(void)
    2. {
    3.         init_usart(115200);
    4.         lv_init();
    5.         tft_init();
    6.         init_touch();
    7.         
    8.         //start_task
    9.         xTaskCreate((TaskFunction_t )start_task,                  
    10.                                                         (const char*    )"start_task",               
    11.                                                         (uint16_t       )START_STK_SIZE,         
    12.                                                         (void*          )NULL,                  
    13.                                                         (UBaseType_t    )START_TASK_PRO,            
    14.                                                         (TaskHandle_t*  )&StartTask_Handler);   

    15.         vTaskStartScheduler();
    16. }

    17. void start_task(void *pvParameters)
    18. {
    19.         taskENTER_CRITICAL();
    20.         
    21.         BinarySemaphore = xSemaphoreCreateBinary();
    22.         if(BinarySemaphore == NULL)
    23.         {
    24.                         printf("Binary Sem Create Failed!\r\n");
    25.         }
    26.         //gui
    27.         xTaskCreate((TaskFunction_t )gui_task,                  
    28.                                                         (const char*    )"gui_task",               
    29.                                                         (uint16_t       )GUI_STK_SIZE,         
    30.                                                         (void*          )NULL,                  
    31.                                                         (UBaseType_t    )GUI_TASK_PRIO,            
    32.                                                         (TaskHandle_t*  )&GuiTask_Handler);  
    33.         //task1
    34.         xTaskCreate((TaskFunction_t )task1,                  
    35.                                                         (const char*    )"task1",               
    36.                                                         (uint16_t       )TASK1_STK_SIZE,         
    37.                                                         (void*          )NULL,                  
    38.                                                         (UBaseType_t    )TASK1_PRIO,            
    39.                                                         (TaskHandle_t*  )&Task1Task_Handler);   
    40.         //task2
    41.         xTaskCreate((TaskFunction_t )task2,                  
    42.                                                         (const char*    )"task2",               
    43.                                                         (uint16_t       )TASK2_STK_SIZE,        
    44.                                                         (void*          )NULL,                  
    45.                                                         (UBaseType_t    )TASK2_PRIO,            
    46.                                                         (TaskHandle_t*  )&Task2Task_Handler);
    47.         taskEXIT_CRITICAL();
    48.         vTaskDelete(StartTask_Handler);                                                
    49. }

    50. //gui
    51. void gui_task(void *pvParameters)
    52. {
    53.         setup_ui(&guider_ui);
    54.         events_init(&guider_ui);
    55.         while (1)
    56.         {
    57.                 lv_timer_handler();
    58.                 vTaskDelay(5);
    59.         }
    60. }

    61. //task1
    62. void task1(void *pvParameters)
    63. {
    64.         uint8_t d=0;
    65.         char buf[4];
    66.         while (1)
    67.         {
    68.                         printf("task1 run ...\r\n");
    69.                         led2_tog();
    70.                         d++;
    71.                         run_flag=1;
    72.                         vTaskDelay(100);
    73.         }
    74. }

    75. uint8_t fdcan_txdat[20];
    76. uint8_t fdcan_rxbuf[20];
    77. //task2
    78. void task2(void *pvParameters)
    79. {
    80.                 uint8_t jj=0;
    81.                 init_fdcan();
    82.     while (1)
    83.     {        
    84.                         jj++;
    85.                         fdcan_txdat[0]=jj;
    86.                         fdcan_txdat[1]=0x01;
    87.                         //fdcan_send_msg(fdcan_txdat, FDCAN_DLC_BYTES_8);
    88.                         if(fdcan_receive_msg(fdcan_rxbuf) !=0 )
    89.                         {
    90.                                 printf("canrx\r\n");
    91.                                 xSemaphoreGive( BinarySemaphore );        
    92.                         }
    93.                         led3_tog();
    94.                         //printf("task2 run ...\r\n");
    95.                         vTaskDelay(20);
    96.     }
    97. }
    复制代码
      

    三、作品实物图

      设备运行的界面1
        002.jpg

       设备运行的界面2
        003.jpg


    四、演示视频

        视频:https://www.bilibili.com/video/BV1WK411e7u4/?share_source=copy_web&vd_source=5c43653ace8c8d4fcf66f8c04f6574a4

    五、项目文档

        程序文档: stm32h7b3i_freertos_lvgl8_3_prj_20210119-1.7z (16.19 MB, 下载次数: 11)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-24 08:26 , Processed in 0.111050 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.