记录一次做任务完成统计的小项目

本文介绍了一个系统中负责人如何提交其管理团队的任务完成情况,以及管理员如何控制提交、取消和设置当前任务的过程。系统使用Java+MySQL作为后端,前端采用HTML+jsp+ajax实现。设计中存在未充分规划开发步骤和数据库关系的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面首页
在这里插入图片描述
选择提交页面
在这里插入图片描述
管理页面
在这里插入图片描述
由负责人提交自己管理的人员完成情况,Sid为负责人对应id,负责人只能提交不能取消。管理员可以控制提交和取消,并设置当前任务,和查看选择任务得到完成情况,如果管理员没有设置任务,则负责人不能进入提交页面。
后台使用的java+mysql,页面是HTML+jsp+ajax.
本次设计不足:没有计划好开发步骤,数据库关系建立没有考虑清楚。

### 实现任务统计功能 为了在 STM32 CubeMX 中使用 FreeRTOS 统计任务相关信息,配置过程涉及多个方面。具体来说,在项目初始化阶段需确保启用了必要的选项来支持这些特性。 #### 启用运行时统计数据收集 当希望获取关于各个任务执行情况的数据时,应该激活 `configGENERATE_RUN_TIME_STATS` 参数设置[^1]。这一步骤允许系统记录各线程占用 CPU 的比例等重要指标。一旦此参数被启用,则意味着应用程序能够调用特定 API 函数如 `vTaskGetRunTimeStats()` 来检索上述提到的信息并将其打印出来供进一步分析之用。 ```c // 配置FreeRTOSConfig.h文件中的宏定义以开启运行时统计 #define configGENERATE_RUN_TIME_STATS 1 ``` #### 设置定时器用于周期性更新 为了让运行时统计有效工作,还需要有一个定期触发事件源——通常是一个硬件定时器中断服务程序(ISR),它会每隔固定的时间间隔唤醒一次调度器来进行数据采集操作。这里推荐选用 TIM6 定时器作为例子,并通过 HAL 库函数启动其 IT (Interrupt Timing) 功能;需要注意的是该定时器产生的中断频率不宜过高,建议最小周期不低于 100 微秒(μs)[^2]。 ```c /* 初始化TIM6定时器 */ static void MX_TIM6_Init(void) { __HAL_RCC_TIM6_CLK_ENABLE(); htim6.Instance = TIM6; htim6.Init.Period = SystemCoreClock / 10000 - 1; /* 设定自动重装载寄存器ARR,对应于1ms*/ htim6.Init.Prescaler = 79; /* 分频系数80-1=79,即APB1分频后的时钟/80得到实际输入到定时器的时钟*/ if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } } /* 开启TIM6定时器中断 */ void StartFreertosSysTickTimer(void) { HAL_TIM_Base_Start_IT(&htim6); } ``` #### 获取与展示任务列表及其状态 最后就是利用 FreeRTOS 提供给开发者的一系列工具方法去查询当前正在运行的任务们的状态以及它们各自消耗了多少处理器资源百分比等内容了。比如可以借助 `vTaskList()` 和 `vTaskGetRunTimeStats()` 这两个实用接口完成这项工作: ```c char taskBuffer[1024]; // 打印任务列表至指定缓冲区 vTaskList(taskBuffer); // 或者更详细的性能度量信息 vTaskGetRunTimeStats(taskBuffer); // 将结果发送给串口或其他输出设备 UART_Transmit((uint8_t*)taskBuffer,strlen(taskBuffer)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值