找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4196|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STM32F103R8t6 FreeRTOS工程adc+flash模擬EEPROM源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:96313 發(fā)表于 2019-4-9 14:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32單片機(jī)源程序如下:
  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. //任務(wù)優(yōu)先級
  14. #define START_TASK_PRIO                1
  15. //任務(wù)堆棧大小        
  16. #define START_STK_SIZE                 128  
  17. //任務(wù)句柄
  18. TaskHandle_t StartTask_Handler;
  19. //任務(wù)函數(shù)
  20. void start_task(void *pvParameters);

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

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

  37. int main(void)
  38. {
  39.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設(shè)置系統(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)建開始任務(wù)
  60.     xTaskCreate((TaskFunction_t )start_task,            //任務(wù)函數(shù)
  61.                 (const char*    )"start_task",          //任務(wù)名稱
  62.                 (uint16_t       )START_STK_SIZE,        //任務(wù)堆棧大小
  63.                 (void*          )NULL,                  //傳遞給任務(wù)函數(shù)的參數(shù)
  64.                 (UBaseType_t    )START_TASK_PRIO,       //任務(wù)優(yōu)先級
  65.                 (TaskHandle_t*  )&StartTask_Handler);   //任務(wù)句柄              
  66.     vTaskStartScheduler();          //開啟任務(wù)調(diào)度
  67. }

  68. //開始任務(wù)任務(wù)函數(shù)
  69. void start_task(void *pvParameters)
  70. {
  71.     taskENTER_CRITICAL();           //進(jìn)入臨界區(qū)
  72.     //創(chuàng)建LED0任務(wù)
  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任務(wù)
  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); //刪除開始任務(wù)
  87.     taskEXIT_CRITICAL();            //退出臨界區(qū)
  88. }

  89. int times=0;
  90. //LED0任務(wù)函數(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任務(wù)函數(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. }
復(fù)制代碼

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


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:377615 發(fā)表于 2020-7-18 15:59 | 只看該作者
我想問一下,確定這個是R8T6么?
回復(fù)

使用道具 舉報

板凳
ID:377615 發(fā)表于 2020-7-18 16:01 | 只看該作者
我想問一下確定這個是r8t6么?正點原子103的板子沒有用這個芯片的啊
回復(fù)

使用道具 舉報

地板
ID:700459 發(fā)表于 2021-5-22 03:09 | 只看該作者
thank u very much, it's so good
回復(fù)

使用道具 舉報

5#
ID:256945 發(fā)表于 2021-5-22 09:51 | 只看該作者
bouna 發(fā)表于 2021-5-22 03:09
thank u very much, it's so good

還有老外?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表