【功能開發】DSP F2837x 檢測中斷所有函數運行一次的時間

要查看 DSP F28377 的 CPU 在 50 微秒一次的中斷內所有程序運行完總共占用了中斷多長時間,可以采用硬件定時器測量和軟件計時兩種常見方法。

方法一:使用硬件定時器測量

原理

利用 DSP 內部的高精度硬件定時器,在中斷開始時記錄定時器的值,在中斷結束時再次記錄定時器的值,通過兩次記錄值的差值來計算中斷程序的執行時間。

步驟

1.初始化硬件定時器
選擇一個合適的硬件定時器(如 CPU 定時器),并對其進行初始化,配置定時器的時鐘源、計數模式和計數周期等參數,使其能夠精確計時。

#include "F28x_Project.h"void InitCpuTimer(void);void main(void)
{// 初始化系統InitSysCtrl();// 初始化 CPU 定時器InitCpuTimer();// 其他初始化操作// 啟用全局中斷EINT;ERTM;while(1){// 主循環}
}void InitCpuTimer(void)
{// 初始化 CPU 定時器 0CpuTimer0Regs.TCR.all = 0x00000000;CpuTimer0Regs.PRD.all = 0xFFFFFFFF;CpuTimer0Regs.TPR.all = 0;CpuTimer0Regs.TPRH.all = 0;CpuTimer0Regs.TCR.bit.TSS = 1; // 停止定時器CpuTimer0Regs.TCR.bit.TRB = 1; // 重載定時器
}

2.在中斷服務函數中記錄時間
在中斷服務函數的入口處啟動定時器,在中斷服務函數的出口處停止定時器,并讀取定時器的計數值,計算兩次計數值的差值。

__interrupt void myInterrupt(void)
{Uint32 startTime, endTime;// 啟動定時器CpuTimer0Regs.TCR.bit.TSS = 0;// 記錄開始時間startTime = CpuTimer0Regs.TIM.all;// 中斷服務程序代碼// ...// 記錄結束時間endTime = CpuTimer0Regs.TIM.all;// 停止定時器CpuTimer0Regs.TCR.bit.TSS = 1;// 計算中斷執行時間Uint32 executionTime = startTime - endTime;// 處理執行時間,例如打印輸出// ...// 清除中斷標志PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

3.換算時間
根據定時器的時鐘頻率,將計數值的差值換算成實際的時間(微秒)。例如,如果定時器的時鐘頻率為 100MHz(周期為 10ns),則計數值的差值乘以 10 就是實際的時間(ns),再除以 1000 就可以得到微秒數。

方法二:軟件計時

原理

利用一個全局變量在中斷開始時記錄系統時鐘的計數值,在中斷結束時再次記錄系統時鐘的計數值,通過兩次計數值的差值來計算中斷程序的執行時間。

步驟

1.定義全局變量
在全局作用域定義一個用于記錄系統時鐘計數值的變量。

#include "F28x_Project.h"volatile Uint32 systemClockCount;void main(void)
{// 初始化系統InitSysCtrl();// 其他初始化操作// 啟用全局中斷EINT;ERTM;while(1){// 主循環}
}

2.在中斷服務函數中記錄時間
在中斷服務函數的入口處記錄系統時鐘的計數值,在中斷服務函數的出口處再次記錄系統時鐘的計數值,計算兩次計數值的差值。

?

__interrupt void myInterrupt(void)
{Uint32 startTime, endTime;// 記錄開始時間startTime = systemClockCount;// 中斷服務程序代碼// ...// 記錄結束時間endTime = systemClockCount;// 計算中斷執行時間Uint32 executionTime = endTime - startTime;// 處理執行時間,例如打印輸出// ...// 清除中斷標志PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

3.更新系統時鐘計數值
在一個定時中斷(如 CPU 定時器中斷)中更新系統時鐘計數值。

?

__interrupt void cpuTimer0ISR(void)
{// 更新系統時鐘計數值systemClockCount++;// 清除中斷標志CpuTimer0Regs.TCR.bit.TIF = 1;PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

4.換算時間
根據定時中斷的周期,將計數值的差值換算成實際的時間(微秒)。例如,如果定時中斷的周期為 1 微秒,則計數值的差值就是實際的時間(微秒)。

通過以上兩種方法,可以準確地測量中斷內所有程序運行完總共占用的時間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/74224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/74224.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/74224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MAC環境給docker換源

2025-03-28 MAC環境給docker換源 在官網下載docker ,dmg 文件 參考: https://blog.csdn.net/qq_73162098/article/details/145014490 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},&q…

Vulnhub-zico2靶機打靶記錄

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文,讀者將能夠對滲透Vulnhub系列zico2靶機有一定的了解 一、信息收集階段 靶機下載地址:https://download.vulnhub.com/zico/zico2.ova 因為靶機為本地部署虛擬機網段,查看dhcp地址池設…

【LeetCode 熱題100】347:前 K 個高頻元素(詳細解析)(Go語言版)

🚀 力扣熱題 347:前 K 個高頻元素(詳細解析) 📌 題目描述 力扣 347. 前 K 個高頻元素 給你一個整數數組 nums 和一個整數 k,請你返回其中出現頻率 前 k 高的元素。你可以按 任意順序 返回答案。 &#x1f…

Java 大視界 -- Java 大數據機器學習模型在金融衍生品定價中的創新方法與實踐(166)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

深度學習入門:從神經網絡基礎到簡單實現

深度學習作為人工智能領域最令人興奮的技術之一,已經在圖像識別、自然語言處理、語音識別等多個領域取得了突破性進展。本文將深入淺出地介紹深度學習的基本概念,并通過Python代碼實現一個簡單的神經網絡模型,幫助讀者建立直觀理解并邁出實踐第一步。 神經網絡的基本原理 …

第2.6節 iOS生成全量和增量報告

2.6.1 簡介 在采集了覆蓋率數據后,就需要生成對應需求的全量和增量覆蓋率報告,以便對測試進行查漏補缺。IOS系統有兩種開發語言,所以生成報告的方式也不相同,下面就分別介紹一下Object C和Swift語言如何生成覆蓋率報告。 2.6.2 O…

STM32技能綜合鞏固

一、深入理解ARMCPU架構及其指令格式、ARM匯編語言編程方法 1.匯編語言編程,實現LED燈 新建keil項目,選擇芯片 選擇運行環境以及配置 添加.s文件 匯編程序: AREAMYDATA,DATA AREAMYCODE,CODE ENTRY EXPORT__main __main MOVR0,#10 M…

P2Rank網頁端:預測蛋白結合口袋+vina分子對接

P2Rank 是一種基于機器學習的蛋白質口袋預測工具,用于識別蛋白質結構中的潛在配體結合位點。它采用了一種基于物理特征的打分方法,結合隨機森林(Random Forest)機器學習模型,以提高口袋預測的精確度。 該程序有在線工具…

安裝windows server 2016沒有可選硬盤,設備安裝過ubuntu系統

如果在安裝 Windows Server 2016 時無法識別已安裝過 Ubuntu 的硬盤,可能是由于硬盤分區格式(如 ext4)與 Windows 不兼容,或缺少必要的驅動程序。以下是詳細的解決方案: 1. 檢查 BIOS/UEFI 設置 確認硬盤模式 ? 重啟電…

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN 一、重新配置網口 1、查看當前網口的狀態 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改網絡配置文件 sudo vi /etc/network/interfaces 注意WAN口的網關地址如果是192.168.3.1的話,L…

springboot整合Thymeleaf web開發出現Whitelabel Error Page

背景 在做java端上應用開發的時候,從資源和部署操作成本兩方面考慮,一般會將前端的靜態資源直接與后端應用一起打包,通過springboot內嵌的Tomcat提供web服務。進入web首頁登錄一直到后續業務流程正向操作,頁面都能正常加載靜態資…

JavaScript元素尺寸與位置

目錄 client 家族與 offset 家族 一、client 家族:內容區域 內邊距 示例代碼 應用場景 二、offset 家族:內容區域 內邊距 邊框 滾動條 示例代碼 應用場景 三、綜合應用場景 1. 動態調整元素高度 2. 拖拽元素 3. 判斷元素是否在視口內 四…

GZ073網絡系統管理賽項賽題第1套模塊A:網絡構建解題筆記

2. 設備 接口或VLAN VLAN名稱 二層或三層規劃 說明 S1 VLAN10 CAIWU Gi0/1至Gi0/4 財務部 VLAN20 XIAOSHOU Gi0/5至Gi0/8 銷售部 VLAN30 YANFA Gi0/9至Gi0/12 研發部 VLAN40 SHICHANG Gi0/13至Gi0/16 市場部 VLAN50 AP Gi0/20至Gi0/21 無線AP管理 VL…

jmeter web壓力測試 壓測

下載地址 Apache JMeter - Download Apache JMeter 1. 設置線程組 2. 設置http請求頭 3. 設置http請求體 4. 設置結果條目 常用函數 ${__RandomString(8, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)}${__javaScript( ${__Random(1000, 10000)} /…

大語言模型(LLM)應用開篇 | RAG方法論概述 | 構建知識庫探索

大型語言模型應用開篇 | RAG技術 | 構建知識庫探索 1、大語言模型(LLM)應用開篇2、RAG技術2.1 基于RAG實現知識庫問答系統的基本步驟2.2 RAG與其他技術的關系與區別 1、大語言模型(LLM)應用開篇 現在是2025年,DeepSeek…

fbx bip互轉 測試OK

目錄 fbx bip互轉 3dmax插件fbx轉bip: 測試可以轉: MotionBuilder fbx轉bip fbx bip互轉 3dmax插件fbx轉bip: 測試可以轉: 不用插件!!無腦把Mxiamo轉bip骨骼動畫 - CG軟件插件腳本交流 - Powered by Discuz!

8個實用銷售工具

CRM系統(客戶關系管理系統) 特點:能集中管理客戶信息,如聯系方式、交易記錄、偏好等,還可對銷售流程進行自動化管理。 用途:幫助銷售團隊跟蹤客戶,分析客戶行為,預測銷售趨勢&am…

【家政平臺開發(6)】筑牢家政平臺安全防線:全方位隱私與安全需求解析

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析,剖析家政行業現狀、挖掘用戶需求與梳理功能要點,到系統設計階段的架構選型、數據庫構建,再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化…

IP 地址規劃中的子網劃分:/18 網絡容納 64 個 C 段(/24)的原理與應用解析

整體表格說明 這是某市教育城域網中某縣教育相關機構的IP地址規劃表,明確了某縣一中和某縣教育局的IP地址范圍,包括終端使用地址段、業務互訪地址段。 概念解析 64個C段終端及互聯地址 C段地址:一個C段是IP地址中的一個/24網絡(…

python生成并繪制各種類型聲音噪聲

python生成并繪制各種類型聲音噪聲 1、效果 白噪聲: 工業設備振動噪聲: 2、噪聲類型 主要噪聲類型有: 白噪聲:全頻段能量均勻分布 直接生成高斯分布隨機數粉紅噪聲:能量隨頻率增加按1/f衰減(適合聲學測試) 使用IIR濾波器對白噪聲進行濾波處理布朗噪聲:能量隨頻率增加…