找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3266|回复: 4
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:96313 发表于 2019-4-9 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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. //任务优先级
  14. #define START_TASK_PRIO                1
  15. //任务堆栈大小        
  16. #define START_STK_SIZE                 128  
  17. //任务句柄
  18. TaskHandle_t StartTask_Handler;
  19. //任务函数
  20. void start_task(void *pvParameters);

  21. //任务优先级
  22. #define LED0_TASK_PRIO                2
  23. //任务堆栈大小        
  24. #define LED0_STK_SIZE                 50  
  25. //任务句柄
  26. TaskHandle_t LED0Task_Handler;
  27. //任务函数
  28. void led0_task(void *pvParameters);

  29. //任务优先级
  30. #define LED1_TASK_PRIO                3
  31. //任务堆栈大小        
  32. #define LED1_STK_SIZE                 50  
  33. //任务句柄
  34. TaskHandle_t LED1Task_Handler;
  35. //任务函数
  36. void led1_task(void *pvParameters);

  37. int main(void)
  38. {
  39.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4         
  40.         delay_init();                                            //延时函数初始化         
  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.           //创建开始任务
  60.     xTaskCreate((TaskFunction_t )start_task,            //任务函数
  61.                 (const char*    )"start_task",          //任务名称
  62.                 (uint16_t       )START_STK_SIZE,        //任务堆栈大小
  63.                 (void*          )NULL,                  //传递给任务函数的参数
  64.                 (UBaseType_t    )START_TASK_PRIO,       //任务优先级
  65.                 (TaskHandle_t*  )&StartTask_Handler);   //任务句柄              
  66.     vTaskStartScheduler();          //开启任务调度
  67. }

  68. //开始任务任务函数
  69. void start_task(void *pvParameters)
  70. {
  71.     taskENTER_CRITICAL();           //进入临界区
  72.     //创建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.     //创建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();            //退出临界区
  88. }

  89. int times=0;
  90. //LED0任务函数
  91. /*
  92. 修改之后保存,再读;如果修改之后直接读会覆盖掉修改的内容。
  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任务函数
  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, 下载次数: 156)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:377615 发表于 2020-7-18 15:59 | 只看该作者
我想问一下,确定这个是R8T6么?
回复

使用道具 举报

板凳
ID:377615 发表于 2020-7-18 16:01 | 只看该作者
我想问一下确定这个是r8t6么?正点原子103的板子没有用这个芯片的啊
回复

使用道具 举报

地板
ID:700459 发表于 2021-5-22 03:09 | 只看该作者
thank u very much, it's so good
回复

使用道具 举报

5#
ID:256945 发表于 2021-5-22 09:51 | 只看该作者
bouna 发表于 2021-5-22 03:09
thank u very much, it's so good

还有老外?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表