久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2718|回復: 1
打印 上一主題 下一主題
收起左側

STM32 FREERTOS移植教程與源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:379138 發表于 2018-7-25 20:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
原子FREERTOS移植教程,包括例程源碼

全部資料51hei下載地址:
STM32F103 FreeRTOS開發手冊V1.1.pdf (10.79 MB, 下載次數: 35)
FreeRTOS任務掛起和恢復.rar (1.23 MB, 下載次數: 31)


單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "sdram.h"
  7. #include "key.h"
  8. #include "FreeRTOS.h"
  9. #include "task.h"

  10. //任務優先級
  11. #define START_TASK_PRIO                1
  12. //任務堆棧大小       
  13. #define START_STK_SIZE                 128  
  14. //任務句柄
  15. TaskHandle_t StartTask_Handler;
  16. //任務函數
  17. void start_task(void *pvParameters);

  18. //任務優先級
  19. #define TASK1_TASK_PRIO                2
  20. //任務堆棧大小       
  21. #define TASK1_STK_SIZE                 128  
  22. //任務句柄
  23. TaskHandle_t Task1Task_Handler;
  24. //任務函數
  25. void task1_task(void *pvParameters);

  26. //任務優先級
  27. #define TASK2_TASK_PRIO                3
  28. //任務堆棧大小       
  29. #define TASK2_STK_SIZE                 128  
  30. //任務句柄
  31. TaskHandle_t Task2Task_Handler;
  32. //任務函數
  33. void task2_task(void *pvParameters);

  34. //任務優先級
  35. #define KEY_TASK_PRIO                4
  36. //任務堆棧大小       
  37. #define KEY_STK_SIZE                 128  
  38. //任務句柄
  39. TaskHandle_t KeyTask_Handler;
  40. //任務函數
  41. void key_task(void *pvParameters);

  42. int main(void)
  43. {
  44.     HAL_Init();                     //初始化HAL庫   
  45.     Stm32_Clock_Init(360,25,2,8);   //設置時鐘,180Mhz
  46.         delay_init(180);                //初始化延時函數
  47.         uart_init(115200);              //初始化串口
  48.     LED_Init();                     //初始化LED
  49.         KEY_Init();                                                //初始化按鍵
  50.        
  51.     //創建開始任務
  52.     xTaskCreate((TaskFunction_t )start_task,            //任務函數
  53.                 (const char*    )"start_task",          //任務名稱
  54.                 (uint16_t       )START_STK_SIZE,        //任務堆棧大小
  55.                 (void*          )NULL,                  //傳遞給任務函數的參數
  56.                 (UBaseType_t    )START_TASK_PRIO,       //任務優先級
  57.                 (TaskHandle_t*  )&StartTask_Handler);   //任務句柄               
  58.     vTaskStartScheduler();          //開啟任務調度
  59. }

  60. //開始任務任務函數
  61. void start_task(void *pvParameters)
  62. {
  63.     taskENTER_CRITICAL();           //進入臨界區
  64.         //創建KEY TASK任務
  65.     xTaskCreate((TaskFunction_t )key_task,            
  66.                 (const char*    )"key_task",           
  67.                 (uint16_t       )KEY_STK_SIZE,        
  68.                 (void*          )NULL,                  
  69.                 (UBaseType_t    )KEY_TASK_PRIO,        
  70.                 (TaskHandle_t*  )&KeyTask_Handler);
  71.                                
  72.     //創建TASK1任務
  73.     xTaskCreate((TaskFunction_t )task1_task,            
  74.                 (const char*    )"task1_task",           
  75.                 (uint16_t       )TASK1_STK_SIZE,        
  76.                 (void*          )NULL,                  
  77.                 (UBaseType_t    )TASK1_TASK_PRIO,        
  78.                 (TaskHandle_t*  )&Task1Task_Handler);   
  79.     //創建TASK2任務
  80.     xTaskCreate((TaskFunction_t )task2_task,     
  81.                 (const char*    )"task2_task",   
  82.                 (uint16_t       )TASK2_STK_SIZE,
  83.                 (void*          )NULL,
  84.                 (UBaseType_t    )TASK2_TASK_PRIO,
  85.                 (TaskHandle_t*  )&Task2Task_Handler);
  86.     vTaskDelete(StartTask_Handler); //刪除開始任務
  87.     taskEXIT_CRITICAL();            //退出臨界區
  88. }

  89. //key任務函數
  90. void key_task(void *pvParameters)
  91. {
  92.         u8 key;
  93.        
  94.         while(1)
  95.         {
  96.                 key=KEY_Scan(0);
  97.                 switch(key)
  98.                 {
  99.                         case WKUP_PRES:
  100.                                 vTaskSuspend(Task1Task_Handler);
  101.                                 printf("Task1 Suspend!!!\r\n");
  102.                                 break;
  103.                         case KEY1_PRES:
  104.                                 vTaskResume(Task1Task_Handler);
  105.                                 printf("Task1 Resume!!!\r\n");
  106.                                
  107.                 }
  108.                        
  109.                 vTaskDelay(10);
  110.         }
  111. }

  112. //task1任務函數
  113. void task1_task(void *pvParameters)
  114. {
  115.         u8 task1_num=0;
  116.        
  117.         while(1)
  118.         {
  119.                 task1_num++;        //任務執1行次數加1 注意task1_num1加到255的時候會清零!
  120.                 LED0=!LED0;
  121.                 printf("任務1已經執行:%d次\r\n",task1_num);

  122.         vTaskDelay(1000);                           //延時1s,也就是1000個時鐘節拍       
  123.         }
  124. }

  125. //task2任務函數
  126. void task2_task(void *pvParameters)
  127. {
  128.         u8 task2_num=0;
  129.        
  130.         while(1)
  131.         {
  132.                 task2_num++;        //任務2執行次數加1 注意task1_num2加到255的時候會清零!!
  133.         LED1=!LED1;
  134.                 printf("任務2已經執行:%d次\r\n",task2_num);
  135.         vTaskDelay(1000);                           //延時1s,也就是1000個時鐘節拍       
  136.         }
  137. }

復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:20672 發表于 2018-9-22 11:27 | 只看該作者
謝謝分享~~~~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕a√ | 中文字幕日韩专区 | 国产一区二区三区精品久久久 | 国产视频福利在线观看 | av在线成人 | 综合伊人 | 日本一区二区不卡 | 国产精品欧美一区二区三区不卡 | 精品人伦一区二区三区蜜桃网站 | 91中文字幕在线观看 | 欧美日韩高清免费 | 99久久婷婷国产综合精品 | 国产成人精品视频在线观看 | 黄色在线观看网站 | 黄a免费网络 | 91久久精品一区二区三区 | 欧美日韩1区2区 | 中文字幕视频在线观看 | 亚洲精品一区国语对白 | 国产精品污www一区二区三区 | 日本视频免费 | 91麻豆产精品久久久久久夏晴子 | 极品在线| 老司机成人在线 | 成人国产精品免费观看视频 | 亚洲一区av在线 | 国产区免费视频 | 精品免费视频一区二区 | 亚洲日韩中文字幕一区 | 日本视频在线播放 | 夜夜av | 成人毛片一区二区三区 | 亚洲一区二区三区视频在线 | 99精品视频网 | 国产精品国产三级国产aⅴ浪潮 | 欧美精品一区二区在线观看 | 久久久久久亚洲欧洲 | 欧美一级片中文字幕 | 日本久久久久久久久 | 91电影在线 | 国产91亚洲精品 |