標題: STM32F103R8t6 FreeRTOS工程adc+flash模擬EEPROM源程序 [打印本頁]

作者: 過往云煙    時間: 2019-4-9 14:03
標題: STM32F103R8t6 FreeRTOS工程adc+flash模擬EEPROM源程序
STM32單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "FreeRTOS.h"
  6. #include "task.h"
  7. #include "ADC.h"
  8. #include "74HC595.h"
  9. #include "key.h"
  10. #include "stmflash.h"



  11. //const
  12. u8 TEXT_Buffer[]={"0123456789"};




  13. //任務優(yōu)先級
  14. #define START_TASK_PRIO                1
  15. //任務堆棧大小        
  16. #define START_STK_SIZE                 128  
  17. //任務句柄
  18. TaskHandle_t StartTask_Handler;
  19. //任務函數(shù)
  20. void start_task(void *pvParameters);

  21. //任務優(yōu)先級
  22. #define LED0_TASK_PRIO                2
  23. //任務堆棧大小        
  24. #define LED0_STK_SIZE                 50  
  25. //任務句柄
  26. TaskHandle_t LED0Task_Handler;
  27. //任務函數(shù)
  28. void led0_task(void *pvParameters);

  29. //任務優(yōu)先級
  30. #define LED1_TASK_PRIO                3
  31. //任務堆棧大小        
  32. #define LED1_STK_SIZE                 50  
  33. //任務句柄
  34. TaskHandle_t LED1Task_Handler;
  35. //任務函數(shù)
  36. void led1_task(void *pvParameters);

  37. int main(void)
  38. {
  39.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設置系統(tǒng)中斷優(yōu)先級分組4         
  40.         delay_init();                                            //延時函數(shù)初始化         
  41.         uart_init(115200);                                        //初始化串口
  42.         LED_Init();                                                          //初始化LED
  43.         My_ADC_Init();
  44.         Display_74HC595_Init();
  45.         KEY_Init();
  46.         
  47.         if(EEPROM_dat1.MASK != 0x50)
  48.         {
  49.                 EEPROM_dat1.F_1=0;
  50.                 EEPROM_dat1.F_2=0;
  51.                 EEPROM_dat1.GL=0;
  52.                 EEPROM_dat1.P_offset=0;
  53.                 EEPROM_dat1.P_1=0;
  54.                 EEPROM_dat1.P_2=0;
  55.                 EEPROM_dat1.SL=0;
  56.                 EEPROM_dat1.MASK = 0x50;
  57.                 save_eeprom();
  58.         }
  59.           //創(chuàng)建開始任務
  60.     xTaskCreate((TaskFunction_t )start_task,            //任務函數(shù)
  61.                 (const char*    )"start_task",          //任務名稱
  62.                 (uint16_t       )START_STK_SIZE,        //任務堆棧大小
  63.                 (void*          )NULL,                  //傳遞給任務函數(shù)的參數(shù)
  64.                 (UBaseType_t    )START_TASK_PRIO,       //任務優(yōu)先級
  65.                 (TaskHandle_t*  )&StartTask_Handler);   //任務句柄              
  66.     vTaskStartScheduler();          //開啟任務調(diào)度
  67. }

  68. //開始任務任務函數(shù)
  69. void start_task(void *pvParameters)
  70. {
  71.     taskENTER_CRITICAL();           //進入臨界區(qū)
  72.     //創(chuàng)建LED0任務
  73.     xTaskCreate((TaskFunction_t )led0_task,            
  74.                 (const char*    )"led0_task",           
  75.                 (uint16_t       )LED0_STK_SIZE,
  76.                 (void*          )NULL,                                
  77.                 (UBaseType_t    )LED0_TASK_PRIO,        
  78.                 (TaskHandle_t*  )&LED0Task_Handler);   
  79.     //創(chuàng)建LED1任務
  80.     xTaskCreate((TaskFunction_t )led1_task,   
  81.                 (const char*    )"led1_task",   
  82.                 (uint16_t       )LED1_STK_SIZE,
  83.                 (void*          )NULL,
  84.                 (UBaseType_t    )LED1_TASK_PRIO,
  85.                 (TaskHandle_t*  )&LED1Task_Handler);         
  86.     vTaskDelete(StartTask_Handler); //刪除開始任務
  87.     taskEXIT_CRITICAL();            //退出臨界區(qū)
  88. }

  89. int times=0;
  90. //LED0任務函數(shù)
  91. /*
  92. 修改之后保存,再讀;如果修改之后直接讀會覆蓋掉修改的內(nèi)容。
  93. */
  94. void led0_task(void *pvParameters)
  95. {
  96. //        u8 datatemp[SIZE];
  97.         int i;
  98.     while(1)
  99.     {
  100. // LED0=~LED0;
  101.                            
  102.           vTaskDelay(300);

  103.                                     if(KEY3==0)
  104.                                   {        
  105.                                          EEPROM_dat1.F_1++;
  106.                                          vTaskDelay(100);
  107.                                   }
  108. //                                        times--;
  109. //                        
  110. //                                        //Half_show(times);
  111. //                                        printf("KEY_times:%d\r\n",times);
  112.                                        
  113.                                         if(KEY1==0)//KEY1??,??STM32 FLASH
  114.                                         {
  115.                                                  save_eeprom();
  116.                                                  printf("\r\nsave.............\r\n");
  117.                                         }
  118.                                          if(KEY2==0)        //KEY0??,????????
  119.                                         {
  120.                                                  read_eeprom();
  121.                                                 printf("F_1:%x ",EEPROM_dat1.F_1);//????????
  122.                                          
  123.                                         }
  124.                         
  125.     }
  126. }

  127. //LED1任務函數(shù)
  128. void led1_task(void *pvParameters)
  129. {
  130.         uint16_t i=0;
  131.          double   k=0.02;
  132.     while(1)
  133.     {
  134.         LED1=0;
  135.         vTaskDelay(100);
  136.         LED1=1;
  137.         vTaskDelay(100);
  138.                         
  139.                    i = ADC_Value();
  140.                    i =  i * (33000/4095);
  141.     //  printf("ADC_Vaule:%d\r\n",i);
  142.                   display_number(i/100,2);
  143.           //  printf("%lf\r\n",k);
  144.     }
  145. }
復制代碼

所有資料51hei提供下載:
FreeRTOS_DEMO 20190109V1.0.7z (319.74 KB, 下載次數(shù): 159)



作者: 淚眸    時間: 2020-7-18 15:59
我想問一下,確定這個是R8T6么?
作者: 淚眸    時間: 2020-7-18 16:01
我想問一下確定這個是r8t6么?正點原子103的板子沒有用這個芯片的啊
作者: bouna    時間: 2021-5-22 03:09
thank u very much, it's so good
作者: 夜空之巔    時間: 2021-5-22 09:51
bouna 發(fā)表于 2021-5-22 03:09
thank u very much, it's so good

還有老外?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1