freereos.zip
大小:4.41KB
价格:13积分
下载量:0
评分:
5.0
上传者:weixin_46283092
更新日期:2025-09-22

freereos.zip

资源文件列表(大概)

文件名
大小
freereos/Encoder.c
6.46KB
freereos/Encoder.h
199B
freereos/freertos_demo.c
6.94KB
freereos/freertos_demo.h
465B

资源内容介绍

freereos.zip
#include "freertos_demo.h"#include "stm32f10x.h" /*FreeRTOS*********************************************************************************************///#include "FreeRTOS.h"//#include "task.h"//#include "timers.h"#include "OLED.h"#include "Encoder.h"#include "event_groups.h" #include "task.h"unsigned char okay,flg;unsigned char flag=1;int16_t Num;//定义待被旋转编码器调节的变量unsigned char hour,min,second;unsigned char tim_arv=0;EventBits_t bits1;EventGroupHandle_t eventGroup;BaseType_t xHigherPriorityTaskWoken=pdFALSE;#define START_TASK_PRIO 1#define START_TASK_STACK_SIZE 128TaskHandle_t start_task_handler;void start_task( void * pvParameters );#define TASK1_PRIO 1#define TASK1_STACK_SIZE 800TaskHandle_t task1_handler;void task1( void * pvParameters );#define TASK2_PRIO 2#define TASK2_STACK_SIZE 128TaskHandle_t task2_handler;void task2( void * pvParameters );#define TASK3_PRIO 1#define TASK3_STACK_SIZE 800TaskHandle_t task3_handler;void task3( void * pvParameters );#define TASK4_PRIO 2#define TASK4_STACK_SIZE 800TaskHandle_t task4_handler;//void task4( void * pvParameters );#define TaskTimer_PRIO 2#define TaskTimer_STACK_SIZE 128TaskHandle_t TaskTimer_handler;//#define a_handler TaskTimer_handlervoid TaskTimer( void * pvParameters );TimerHandle_t xTimer;void vTimerCallback(TimerHandle_t xTimer);void freertos_demo(void){ xTaskCreate((TaskFunction_t ) start_task, (char * ) "start_task", (configSTACK_DEPTH_TYPE ) START_TASK_STACK_SIZE, (void * ) NULL, (UBaseType_t ) START_TASK_PRIO, (TaskHandle_t * ) &start_task_handler ); vTaskStartScheduler();}void start_task( void * pvParameters ){ taskENTER_CRITICAL(); //TimerHandle_t xTimer;//if(xTimer!=NULL){////if(xTimerStart(xTimer,0)!=pdPASS){print("Failed to start timer\n");}//else{print("Failed to create timer\n");}////}eventGroup=xEventGroupCreate(); xTaskCreate((TaskFunction_t ) TaskTimer, (char * ) "TaskTimer", (configSTACK_DEPTH_TYPE ) TaskTimer_STACK_SIZE, (void * ) NULL, (UBaseType_t ) TaskTimer_PRIO, (TaskHandle_t * ) &TaskTimer_handler ); xTaskCreate((TaskFunction_t ) task1, (char * ) "task1", (configSTACK_DEPTH_TYPE ) TASK1_STACK_SIZE, (void * ) NULL, (UBaseType_t ) TASK1_PRIO, (TaskHandle_t * ) &task1_handler ); xTaskCreate((TaskFunction_t ) task2, (char * ) "task2", (configSTACK_DEPTH_TYPE ) TASK2_STACK_SIZE, (void * ) NULL, (UBaseType_t ) TASK2_PRIO, (TaskHandle_t * ) &task2_handler ); xTaskCreate((TaskFunction_t ) task3, (char * ) "task3", (configSTACK_DEPTH_TYPE ) TASK3_STACK_SIZE, (void * ) NULL, (UBaseType_t ) TASK3_PRIO, (TaskHandle_t * ) &task3_handler ); xTaskCreate((TaskFunction_t ) task4, (char * ) "task4", (configSTACK_DEPTH_TYPE ) TASK4_STACK_SIZE, (void * ) NULL, (UBaseType_t ) TASK4_PRIO, (TaskHandle_t * ) &task4_handler ); vTaskDelete(NULL); taskEXIT_CRITICAL(); }void TaskTimer( void * pvParameters ){while(1){//EventBits_t bits1;bits1=xEventGroupWaitBits(eventGroup,BIT1,pdTRUE,pdTRUE,portMAX_DELAY);if(bits1)OLED_ShowString(4,7, "YE");OLED_ShowString(4,11, "ok");break;}}void vTimerCallback(TimerHandle_t xTimer){tim_arv=1;//vTaskDelay(pdMS_TO_TICKS(1000));//vTaskDelete(NULL);//Num += Encoder_Get();//获取自上此调用此函数后,旋转编码器的增量值,并将增量值加到Num上//okay=ok1();TaskHandle_t xTask3Handle=(TaskHandle_t)pvTimerGetTimerID(xTimer);xTaskNotifyGive(xTask3Handle);}void task1( void * pvParameters ){ uint32_t task1_num = 0;//unsigned char ok_task2=0;//OLED_ShowString(2, 1, "V:");//OLED_ShowString(3, 1, "R:");//OLED_ShowString(4, 1, "H:");////Num += Encoder_Get();//获取自上此调用此函数后,旋转编码器的增量值,并将增量值加到Num上//okay=ok1();OLED_ShowSignedNum(1, 5, Num, 2);//显示NumOLED_ShowString(2, 1, "V:");OLED_ShowString(3, 1, "R:");OLED_ShowString(4, 1, "H:");//if(Num==1&&okay==1)task1(task1);//if(Num==2&&okay==1)task2(task2);//if(Num==3&&okay==1)task3(task3);task1_num=1; vTaskDelay(5000);OLED_ShowString( 2, 11, "put");vTaskDelay(2000);//while(1)//{//ok_task2=ok1();//if(ok_task2==1)break;//}OLED_ShowString(2, 10, "c");task1_num=0;vTaskDelay(3000);OLED_ShowString(2, 10, "ok ");vTaskDelete(NULL);}void task2( void * pvParameters ){ uint32_t task2_num = 0;task2_num=1; vTaskDelay(10000);OLED_ShowString(3, 10, "ok");vTaskDelete(NULL);}void task3( void * pvParameters ){//vTaskDelay(pdMS_TO_TICKS(2000));xTimer=xTimerCreate("Timer",pdMS_TO_TICKS(1000),pdTRUE,(void*)xTaskGetCurrentTaskHandle(),vTimerCallback);if(xTimer!=NULL){xTimerStart(xTimer,0);}flg=1;while(1){ulTaskNotifyTake(pdTRUE,portMAX_DELAY);if(tim_arv==1){tim_arv=0;second++;if(second>60){min++;second=0;}if(min>60){hour++;min=0;}if(hour>24){hour=0;}OLED_ShowString(1, 9, "TIM: ");OLED_ShowSignedNum(1, 14,second, 2);//显示Num//vTaskDelay(pdMS_TO_TICKS(10));}}}void task4( void * pvParameters ){EventBits_t bits;//BaseType_t xHigherPriorityTaskWoken=pdFALSE;while(1){bits=xEventGroupWaitBits(eventGroup,BIT0|BIT2,pdTRUE,pdFALSE,portMAX_DELAY);if(bits&&flag){Num += Encoder_Get();//获取自上此调用此函数后,旋转编码器的增量值,并将增量值加到Num上okay=ok1();OLED_ShowSignedNum(1, 5, Num, 2);//显示Numflag=0;}//portYIELD_FROM_ISR(xHigherPriorityTaskWoken);}//portYIELD_FROM_ISR(xHigherPriorityTaskWoken);//xEventGroupSetBitsFromISR(eventGroup,BIT1,NULL);}

用户评论 (0)

发表评论

captcha

相关资源

软件开发+数据库+Navicat premium 12+压缩包安装工具

Navicat Premium 12是一款全面的数据库管理工具,支持多种数据库系统,包括MySQL、SQLite、Oracle等。它具备数据同步、导入导出、可视化编辑和安全访问等功能,适用于专业开发者和新手用户。该工具提供数据同步和传输功能,可在不同数据库之间快速迁移数据,并能从多种格式(如Excel、XML、TXT)导入导出数据,实现灵活的数据操作。通过网格和表单视图,用户可以直接编辑数据,无需编写复杂的SQL语句。安全性也是Navicat Premium 12的重点,它支持通过SSH创建安全连接,确保数据传输的安全。此外,它还提供云服务,让用户可以随时访问数据库信息。Navicat Premium 12还支持自动化批处理作业,如数据传输、数据同步等,能在指定时间自动执行,提升工作效率。用户还可以设计各种类型的报表,并将报表输出为PDF、Excel等格式,方便数据分享和分析。总之,Navicat Premium 12以其多数据库支持、强大的数据处理和安全功能,成为广受欢迎的数据库管理工具。

66.87MB12积分

ball-screwball-screwball-screw

ball-screwball-screwball-screw

1.91MB26积分

GD32H7xx系列CLion FreeRTOS工程模版

GD32H7xx系列CLion FreeRTOS工程模版

957.81KB10积分

Python 3.12.5

Python 是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的功能库而著称。它支持多种编程范式,包括面向对象、命令式和函数式编程。Python 的设计哲学强调代码的可读性和清晰的语法结构,这使得它成为初学者的理想选择,同时也深受专业开发者和数据科学家的喜爱。Python 的特点:易读性:Python 的代码设计得尽可能易于阅读,其语法清晰,结构简洁。可扩展性:Python 可以通过 C 或 C++(或其他语言)编写的扩展模块来扩展其功能。丰富的标准库:Python 自带了一个庞大的标准库,提供了许多常用的编程任务所需的功能。跨平台:Python 程序可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。强大的社区支持:Python 拥有一个活跃的开发者社区,提供了大量的第三方库和工具。Python 的应用领域:Web 开发:Python 可以用来开发服务器端的 Web 应用程序,如使用 Django 或 Flask 框架。数据分析与科学计算:Python 是数据分析和科学计算领域的重要工具。

25.01MB45积分