ST template WORD

Similar documents
STM32Cube_FW_F4?RTC??????BUG

STM32F3??ADC??????????ADC

ST template WORD

chap07.key

PowerPoint Presentation

外围器件-new.cdr

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

商 业 城 大 华 标 准 70 万 70 万 驰 宏 锌 锗 瑞 华 标 准 140 万 150 万 亚 星 锚 链 江 苏 公 证 天 业 标 准 80 万 80

辉 丰 股 份 重 大 事 项, 特 停 南 方 轴 承 临 时 停 牌 德 力 股 份 临 时 停 牌 瑞 丰 光 电 临 时 停 牌 联 建 光 电 临 时 停 牌 卡 奴 迪 路 临 时 停 牌

上市公司股东大会投票信息公告( )

股票代码: 股票简称:*ST新梅 编号:临

光 一 科 技 重 大 事 项, 特 停 茂 业 商 业 重 要 事 项 未 公 告, 连 续 停 牌 浙 富 控 股 重 大 事 项, 特 停 键 桥 通 讯 重 大 事 项, 特 停 黑 牛 食 品 重 大 事 项, 特 停

郑 州 煤 电 重 要 事 项 未 公 告, 连 续 停 牌 金 圆 股 份 重 大 事 项, 特 停 永 鼎 股 份 重 要 事 项 未 公 告, 连 续 停 牌 长 城 影 视 临 时 停 牌 天 兴 仪 表 临 时 停 牌

卧 龙 地 产 重 要 事 项 未 公 告, 连 续 停 牌 春 兴 精 工 临 时 停 牌 *ST 沧 大 重 要 事 项 未 公 告, 连 续 停 牌 天 地 源 重 要 事 项 未 公 告, 连 续 停 牌 汇 冠 股 份

欢迎辞

金 陵 饭 店 中 兴 华 已 报 备 按 照 国 资 委 要 求 定 期 轮 换 天 衡 已 报 备 按 照 国 资 委 要 求 定 期 轮 换 *ST 中 富 中 喜 已 报 备 业 务 约 定 书 到 期 普

日 涨 幅 偏 离 值 达 到 7% 的 前 五 只 证 券 : 温 氏 股 份 ( 代 码 ) 涨 幅 偏 离 值 :11.68% 成 交 量 :1752 万 股 成 交 金 额 : 万 元 机 构 专 用 机 构 专 用

东 华 能 源 江 苏 苏 亚 金 诚 已 报 备 因 地 域 及 审 计 时 间 安 排 等 原 因 中 兴 华 已 报 备 客 户 重 新 选 聘 会 计 师 事 务 所 亿 帆 鑫 富 立 信 已 报 备 客

昆 明 机 床 瑞 华 已 报 备 前 任 服 务 年 限 较 长 毕 马 威 华 振 已 报 备 未 与 客 户 未 就 2015 年 审 计 收 费 达 成 一 致 意 见 中 国 核 电 天 健 已 报 备 定

金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌 万 泽 股 份 临 时 停 牌 爱 康 科 技 重 大 事 项, 特 停

金 圆 股 份 重 大 事 项, 特 停 长 城 影 视 临 时 停 牌 天 兴 仪 表 临 时 停 牌 商 赢 环 球 重 要 事 项 未 公 告, 连 续 停 牌 荣 安 地 产 临 时 停 牌 中 南 文 化

Untitled Document

ST template WORD

江 西 : 失 信 被 执 行 人 曝 光 台 写 入 两 会 报 告 摘 要 1 月 27 日, 江 西 省 十 二 届 人 大 五 次 会 议 举 行 第 二 次 全 体 会 议, 江 西 省 高 级 人 民 法 院 院 长 张 忠 厚 向 大 会 作 江 西 省 高 级 人 民 法 院 工 作

形 式 审 查 不 通 过, 将 说 明 原 因 并 予 退 回, 不 予 重 新 修 改 提 交 ( 形 式 审 查 常 见 主 要 问 题 参 考 附 件 3) ( 三 ) 申 请 人 下 载 打 印 网 上 状 态 为 请 交 纸 质 材 料 至 窗 口 受 理 的 申 报 书, 报 送 项

撤 离 你 听 到 了 吗? 它 们 已 经 进 了 墙 里 边 了 那 些 金 属 的 撞 击 声 在 狂 风 之 中 很 难 听 清, 但 断 然 不 会 有 错 围 坐 在 桌 边 的 四 人 靠 得 更 紧 了 些, 并 不 是 因 为 害 怕, 而 是 为 了 取 暖 你 们 觉 得 呢?

江门甘蔗化工厂(集团)股份有限公司2013年第三季度报告全文

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

中 国 证 券 监 督 管 理 委 员 会 : 2016 年 3 月 24 日, 海 南 海 航 基 础 设 施 投 资 集 团 股 份 有 限 公 司 ( 以 下 简 称 海 航 基 础 公 司 本 公 司 或 上 市 公 司 ) 收 到 中 国 证 券 监 督 管 理 委 员 会 ( 以 下 简

< Essential LEDtube > | < Philips >

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

Chapter 9: Objects and Classes

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

CE UL LLHA5 / 7 ( LLGT22 ) ( LLHA9 ) ( LLGT22 ) ( LLHA9 ) 3 ( LLHA5 / 7 ) ( LLGT22 ) ( LLHA5 / 6 )

ebook

ST template WORD

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

CC213

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

内幕交易警示教育展

<4D F736F F D E4345C6BDCCA84323B1E0B3CCD2AAB5E3D6AED2BB2E646F63>

学习MSP430单片机推荐参考书

Leica IC90 E Leica IC90 E: USB 20 HDMI 22 SD () CLR ( ) 30 CLR ( ) 31 EXPSURE () 32 RESLUTIN ( ) 33 SETUP CAMER

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

证券期货市场之主要诚信规范

RTOS STM32Cube

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

低 估 值 蓝 筹 有 大 机 会 除 了 上 述 两 个 板 块 以 外, 低 估 值 蓝 筹 仍 然 被 一 些 基 金 团 队 青 睐 某 些 投 资 团 队 认 为, 目 前 市 场 震 荡 格 局 确 立 向 上 趋 势 没 有 改 变 某 基 金 公 司 认 为, 从 板 块 运 行 来

untitled

FY.DOC

25.( 0 在 進 行 水 溫 與 溶 解 量 的 實 驗 時, 每 一 匙 糖 都 要 刮 平 的 主 要 目 的 為 何? 1 避 免 一 次 溶 解 太 多 糖 2 可 以 增 加 溶 解 糖 的 次 數 3 控 制 加 入 的 每 一 匙 糖 都 一 樣 多 4 可 以 減 少 溶 解 量

川 仪 股 份 重 要 事 项 未 公 告, 连 续 停 牌 *ST 江 化 临 时 停 牌 珠 海 中 富 盘 中 停 牌 广 东 甘 化 重 大 事 项, 特 停 大 豪 科 技 拟 筹 划 重 大 资 产 重 组, 连 续

世 纪 游 轮 重 大 事 项, 特 停 全 信 股 份 临 时 停 牌 金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌

世 纪 游 轮 重 大 事 项, 特 停 全 信 股 份 临 时 停 牌 金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌

得 润 电 子 重 大 事 项, 特 停 三 垒 股 份 重 大 事 项, 特 停 天 源 迪 科 重 大 事 项, 特 停 全 通 教 育 临 时 停 牌 天 目 药 业 重 要 事 项 未 公 告, 连 续 停 牌 00215

EK-STM32F

項 別 檢 核 項 目 檢 核 標 準 備 註 活 動 計 畫 執 行 情 形 效 益 評 估 計 畫 擬 定 非 常 滿 意 滿 意 尚 可 待 改 進 不 適 用 行 前 準 備 非 常 滿 意 滿 意 尚 可 待 改 進 不 適 用 內 容 設 計 非 常 滿 意 滿 意 尚 可 待 改 進

第八章 社会事业发展与边疆和谐稳定

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

宁 波 联 合 天 健 标 准 无 诺 德 股 份 立 信 标 准 无 振 华 重 工 普 华 永 道 中 天 标 准 无 百 隆 东 方 201

着 力 推 进 提 高 项 目 总 包 能 力 ; 加 快 优 势 产 品 进 入 海 外 市 场 ; 努 力 盘 活 资 产, 提 高 经 营 收 现 能 力 ; 开 源 节 流, 做 好 资 金 收 支 平 衡, 确 保 资 金 链 安 全 但 由 于 当 前 重 机 行 业 形 势 仍 未 明

bingdian001.com

untitled

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2012年新闻出版产业分析报告

C 1

2012年报.xls

第 一 部 分 广 州 市 社 会 科 学 界 联 合 会 ( 部 门 ) 概 况 一 广 州 市 社 会 科 学 界 联 合 会 ( 部 门 ) 主 要 职 能 ( 一 ) 广 泛 团 结 和 组 织 广 州 地 区 社 会 科 学 理 论 研 究 和 实 际 工 作 者, 以 马 克 思 列 宁

目 录 第 一 部 分 2015 届 毕 业 生 就 业 基 本 情 况... 2 ( 一 ) 毕 业 生 数 量... 2 ( 二 ) 毕 业 生 结 构... 2 ( 三 ) 生 源 分 布 情 况... 2 ( 四 ) 就 业 情 况... 4 ( 五 ) 毕 业 生 择 业 观

Microsoft Word - 11.doc

中共宿迁市委办公室发电

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

ASP.NET实现下拉框二级联动组件

c_cpp

Microsoft Word - 广州开发区管委办公室2016年部门预算.doc

华 鑫 策 略 杆 杠 率 对 行 情 的 驱 动 性 在 弱 化 证 券 研 究 报 告 策 略 报 告 我 们 前 期 分 析 提 示,3000 点 上 沿 的 A 股 将 呈 大 涨 大 震, 小 涨 小 震 的 格 局, 在 1.19 巨 震 之 后 更 加 如 此 1.19 监 管 层 出

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

STM32 PDM

上市公司股东大会投票信息公告( )


untitled

股份有限公司

Using STM32 Software Library


, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

Microsoft Word - 連啟元.doc

广东省人民政府办公厅发文办理笺

1 重 要 提 示 基 金 管 理 人 的 董 事 会 及 董 事 保 证 本 报 告 所 载 资 料 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 内 容 的 真 实 性 准 确 性 和 完 整 性 承 担 个 别 及 连 带 责 任 基 金 托 管 人 招 商


378高雄市都市計畫說明書

nooog

Chapter12 Derived Classes

湖 南 蓝 皮 书 电 子 政 务 障 体 系 项 目 建 设 提 出 了 明 确 的 要 求, 制 订 了 具 体 的 实 施 方 案 目 前, 全 省 资 金 场 地 人 员 已 按 要 求 基 本 到 位, 省 局 正 在 全 力 组 织 督 促 和 实 施 2 完 成 全 省 统 计 联 网

<4D F736F F D20B8BDBCFE34A3BACCECBAEBD6DCC6DA C4EAB5DA34BCBEB6C8B1A8B8E62E646F63>

第3章.doc

謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及

提问袁小兵:

*ST , , ( )

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

手册 doc

Transcription:

一种计算 CPU 使用率的方法及其实现原理 1 前言 出于性能方面的考虑, 有的时候, 我们希望知道 CPU 的使用率为多少, 进而判断此 CPU 的负载情况和对于当前运行环境是 否足够 胜任 本文将介绍一种计算 CPU 占有率的方法以及其实现原理 2 移植算法 2.1 算法简介 此算法是基于操作系统的, 理论上不限于任何操作系统, 只要有任务调度就可以 本文将以 FreeRTOST 为例来介绍本算法的使用方法 本文所介绍的算法出处为随 Cube 库一起提供的, 它在 cube 库中的位置如下图所示 : 本文将以 STM32F4 为例, 测试环境为 STM3240G-EVAL 评估板 2.2 开始移植 本文以 CubeF4 内的示例代码工程 STM32Cube_FW_F4_V1.10.0\Projects\STM324xG_EVAL\Applications\FreeRTOS\FreeRTOS_ThreadCreation 为例,IDE 使用 IAR 第一步 : 使用 IAR 打开 FreeRTOS_ThreadCreation 工程, 将 cpu_utils.c 文件添加到工程, 并在工程中添加对应头文件目录 :

第二步 : 打开 FreeRTOST 的配置头文件 FreeRTOSConfig.h 修改宏 configuse_idle_hook 和 configuse_tick_hook 的值为 1: #define configuse_preemption 1 #define configuse_idle_hook 1 // 修改此宏的值为 1 #define configuse_tick_hook 1 // 修改此宏的值为 1 #define configcpu_clock_hz ( SystemCoreClock ) #define configtick_rate_hz ( ( TickType_t ) 1000 ) #define configmax_priorities ( 8 ) #define configminimal_stack_size ( ( uint16_t ) 128 ) 第三步 : 继续在 FreeRTOSConfig.h 头文件的末尾处添加 tracetask_switched_in 与 tracetask_switched_out 定义 : #define tracetask_switched_in() extern void StartIdleMonitor(void); \ StartIdleMonitor() #define tracetask_switched_out() extern void EndIdleMonitor(void); \ EndIdleMonitor() 第四步 : 在 main.h 头文件中 include cmsis_os.h Main.h : #include "stm32f4xx_hal.h" #include "stm324xg_eval.h" #include "cmsis_os.h" // // 添加包含此头文件 第五步 : 修改工程属性, 使编译过程不需要函数原型 :

第六步 : 在工程中任何用户代码处都可以调用 osgetcpuusage() 函数来获取当前 CPU 的使用率 : static void LED_Thread2(void const *argument) uint32_t count; uint16_t usage =0; (void) argument; for(;;) count = oskernelsystick() + 10000; /* Toggle LED2 every 500 ms for 10 s */ while (count >= oskernelsystick()) BSP_LED_Toggle(LED2); osdelay(500); usage =osgetcpuusage(); /* Turn off LED2 */ BSP_LED_Off(LED2); // 获取当前 CPU 的使用率 /* Resume Thread 1 */ osthreadresume(ledthread1handle); /* Suspend Thread 2 */ osthreadsuspend(null); 第七步 : 编译并运行测试 在调试状态下使用 Live Watch 窗口监控全部变量 oscpu_usage 的值 : oscpu_usage 是在 cpu_utils.c 文件中定义的全局变量, 表示当前 CPU 的使用率, 是个动态值, 由上图可以,CPU 使用率的 动态值为 20% 实际在代码中是按第六步中调用 osgetcpuusage() 函数来获取当前 CPU 的使用率的 至此, 算法使用方法介绍完毕

3 算法实现原理分析 操作系统运行时是不断在不同的任务间进行切换, 而驱动这一调度过程是通过系统 tick 来驱动的, 即每产生一次系统 tick 则检查一下当前正在运行的任务的环境判断是否需要切换任务, 即调度, 如果需要, 则触发 PendSV, 通过在 PendSV 中断调用 vtaskswitchcontext() 函数来实现任务的调度 而本文所要讲述的 CPU 使用率算法是通过在一定时间内 (1000 个时间片内 ), 计算空闲任务所占用的时间片总量,100 减去空闲任务所占百分比则为工作任务所占百分比, 即 CPU 使用率 void vapplicationidlehook(void) if( xidlehandle == NULL ) /* Store the handle to the idle task. */ xidlehandle = xtaskgetcurrenttaskhandle(); // 记录空闲任务的句柄 此函数为空闲任务钩子函数, 每次当切换到空闲任务时就会运行此钩子函数, 它的作用就是记录当前空闲任务的句柄并保存 到全局变量 xidlehandle void vapplicationtickhook (void) static int tick = 0; if(tick ++ > CALCULATION_PERIOD) // 每 1000 个 tick, 刷新一次 CPU 使用率 tick = 0; if(oscpu_totalidletime > 1000) oscpu_totalidletime = 1000; oscpu_usage = (100 - (oscpu_totalidletime * 100) / CALCULATION_PERIOD); // 这行代码就是 CPU 使用率的具体计算方法了 oscpu_totalidletime = 0; 此函数为操作系统的 tick 钩子函数, 即每次产生系统 tick 中断都会进入到此钩子函数 此钩子函数实际上就是具体计算 CPU 使用率的算法了 oscpu_totalidletime 是一个全局变量, 表示在 1000 个 tick 时间内空闲任务总共占用的时间片, CALCULATION_PERIOD 宏的值为 1000, 即每 1000 个 tick 时间内重新计算一次 CPU 的使用率 下面两个函数就是如何计算 oscpu_totalidletime 的 : void StartIdleMonitor (void) if( xtaskgetcurrenttaskhandle() == xidlehandle ) // 如果是切入到空闲任务 oscpu_idlestarttime = xtaskgettickcountfromisr();// 记录切入到空闲任务的时间点

void EndIdleMonitor (void) if( xtaskgetcurrenttaskhandle() == xidlehandle ) // 如果是从空闲任务切出 /* Store the handle to the idle task. */ oscpu_idlespenttime = xtaskgettickcountfromisr() - oscpu_idlestarttime; // 计算此次空闲 任务花费多长时间 oscpu_totalidletime += oscpu_idlespenttime; // 空闲任务所占时间进行累加 这两个函数是调度器钩子函数, 在调度器进行任务切进和切出时分别回调,StartIdleMonitor() 函数记录切换到空闲任务时的时 间点,EndIdleMonitor() 则在推出空闲任务时计算此次空闲任务花费多长时间, 并累加到 oscpu_totalidletime, 即空闲任务 总共占用的时间片 uint16_t osgetcpuusage (void) return (uint16_t)oscpu_usage; // 直接返回全局变量 oscpu_usage, 即 CPU 使用率 全局变量 oscpu_usage 保存的就是 CPU 的使用率, 它是在操作系统的 tick 钩子函数中每隔 1000 个 tick 就被重新计算一次 4 结论 通过此方法可以很好的用来评估 STM23 MCU 的运行性能

重要通知 - 请仔细阅读 意法半导体公司及其子公司 ( ST ) 保留随时对 ST 产品和 / 或本文档进行变更 更正 增强 修改和改进的权利, 恕不另行通知 买方在订货之前应获取关于 ST 产品的最新信息 ST 产品的销售依照订单确认时的相关 ST 销售条款 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任 ST 不对任何知识产权进行任何明示或默示的授权或许可 转售的 ST 产品如有不同于此处提供的信息的规定, 将导致 ST 针对该产品授予的任何保证失效 ST 和 ST 徽标是 ST 的商标 所有其他产品或服务名称均为其各自所有者的财产 本文档中的信息取代本文档所有早期版本中提供的信息 2015 STMicroelectronics - 保留所有权利