色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

定時器使用小技巧

CHANBAEK ? 來源:硬件工程師技術(shù)干貨 ? 作者:硬件工程師技術(shù)干 ? 2023-05-25 17:19 ? 次閱讀

介紹一個定時器的使用小技巧,今天寫代碼需要用到一個功能,實時測量程序運行時間,要求測量時間精度要高。

精度高就想到了硬件定時器,但是整個系統(tǒng)比較復(fù)雜,硬件定時器都被占用了,想了想只能和某項功能共用一個定時器了。系統(tǒng)中使用了一個systick定時器,systick定時器是一個自動裝載遞減定時器,即,計數(shù)器從設(shè)定值開始遞減,減到零時觸發(fā)systick中斷,然后計數(shù)器自動裝載初值開始下一個計數(shù)周期。這里配置為1ms產(chǎn)生一次中斷,中斷內(nèi)有一個全局變量加1,如果直接用這個變量計算時間,精度±1ms,太差了。于是乎又寫了倆函數(shù),可以實現(xiàn)us級別測量,后面一一介紹。

void SysTick_Handler(void)
{
    g_dwSysTickCnt++;//ms中斷,精度只有±1ms
}

函數(shù)1:測量開始函數(shù):

//測量開始函數(shù)
void drvMeasureUsStart(void)
{
    SysTick->CTRL  &= ~SysTick_CTRL_ENABLE_Msk;     //關(guān)閉定時器
    g_dwOldTime = SysTick->VAL;                     //記錄當(dāng)前計數(shù)值
    g_dwStartTimeMs = g_dwSysTickCnt;               //獲取當(dāng)前ms數(shù)
    SysTick->CTRL  |= SysTick_CTRL_ENABLE_Msk;      //使能定時器
    g_dwReload = SysTick->LOAD;                     //獲取重載值
}

函數(shù)2:測量結(jié)束函數(shù):

DWORD drvMeasureUsStop(void)
{
    DWORD dwNowTime,dwpRunTimeUs;

    SysTick->CTRL  &= ~SysTick_CTRL_ENABLE_Msk;         //關(guān)閉定時器
    dwNowTime = SysTick->VAL;
    g_dwStartTimeMs = g_dwSysTickCnt - g_dwStartTimeMs; //獲取ms數(shù)差值
    SysTick->CTRL  |= SysTick_CTRL_ENABLE_Msk;          //使能定時器

    if(g_dwStartTimeMs > 0u)
    {
        g_dwStartTimeMs--;
        dwpRunTimeUs = g_dwReload - dwNowTime + g_dwOldTime;
    }
    else
    {
        dwpRunTimeUs = g_dwOldTime - dwNowTime;
    }
    g_dwStartTimeMs *= 1000u;                           //換算為us
    dwpRunTimeUs = dwpRunTimeUs/(g_dwSysTickClockMhz);  //換算為us

    dwpRunTimeUs += g_dwStartTimeMs;

    return dwpRunTimeUs;
}

使用方法:

//測量usercode()函數(shù)運行時間
{
    DWORD dwTime;
    ...
    ...
    drvMeasureUsStart();
    usercode();
    dwTime = drvMeasureUsStop();
    ...
    ...
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41649
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3255

    瀏覽量

    115176
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4345

    瀏覽量

    62874
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68897
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    13126
收藏 人收藏

    評論

    相關(guān)推薦

    每一個定時器使用的中斷都不一樣嗎?還是

    每一個定時器使用的中斷都不一樣?還是每一個中斷使用的定時器不一樣?究竟該怎么理解?
    發(fā)表于 10-18 20:44

    【安富萊】【STemWin教程】第36章 窗口管理器之定時器使

    `第36章 窗口管理器之定時器使用 本期教程跟大家講一下STemWin自帶的定時器使用方法,這個定時器使用起來非常簡單,而且很實用。在需要定時更新的時候可以用這個
    發(fā)表于 04-25 11:09

    第36章 窗口管理器之定時器使

    轉(zhuǎn)stemwin教程本期教程跟大家講一下STemWin自帶的定時器使用方法,這個定時器使用起來非常簡單,而且很實用。在需要定時更新的時候可以用這個定時器。 36. 1
    發(fā)表于 10-16 10:51

    【emWin實戰(zhàn)教程V2.0】第39章 窗口管理器之定時器使

    轉(zhuǎn)最新版本教程本期教程為大家講解窗口管理器之定時器使用方法,這個定時器使用起來比較簡單,而且很實用,以后的項目工程中很多時候要用到,不過使用時有些小問題要特別注意,如果不注意的話,定時器將無法正確
    發(fā)表于 02-20 18:41

    TIMER2定時器使用異常

    定時器使用,參考stareware中的demo TIMER使用,具體實現(xiàn)代碼如下: // 配置 定時器 / 計數(shù)器 2 為 64 位模式 TimerConfigure(SOC_TMR_2_REGS
    發(fā)表于 09-27 08:32

    如何去配置STM32的定時器使數(shù)碼管循環(huán)顯示從0~9的數(shù)字呢

    怎樣在Keil for ARM V5中去編寫代碼呢?如何去配置STM32的定時器使數(shù)碼管循環(huán)顯示從0~9的數(shù)字呢?
    發(fā)表于 12-02 06:37

    如何利用定時器使L1每秒閃爍

    練習(xí):利用定時器使L1每秒閃爍(亮0.5秒滅0.5秒),L8亮五秒滅五秒。關(guān)閉蜂鳴器。#include "reg52.h"***it L1 = P0^0;***it L8
    發(fā)表于 01-12 07:22

    介紹一下AT32的定時器使

    **定時器入門指南——第1講**定時器基本上是所有嵌入式芯片都會具有的一個功能,不同的芯片在操作上也是大同小異,今天我們就來介紹一下AT32的定時器使用,以AT32403A為例。首先AT32403A
    發(fā)表于 01-17 08:56

    定時器、PWM、ICP范例(AVR 定時器使用范例)

    /***************************************************      AVR 定時器使用范例 
    發(fā)表于 11-01 01:23 ?77次下載

    如何利用單片機看門狗定時器使led閃爍

    看門狗是為了防止程序跑飛而設(shè)定的,但是由于看門狗是一個類似于定時器,因此可以把他當(dāng)作定時器來使用 示例代碼:用看門狗定時器使一個led閃爍 #include void main
    發(fā)表于 02-11 10:00 ?3999次閱讀
    如何利用單片機看門狗<b class='flag-5'>定時器使</b>led閃爍

    WinCC中定時器使用方法介紹

    WinCC中定時器使用方法介紹說明。
    發(fā)表于 04-22 14:50 ?8次下載

    ESP-32開發(fā)踩坑歷程(三)ESP-IDF 定時器使

    ESP-32開發(fā)踩坑歷程(三)ESP-IDF 定時器使用前言一、開發(fā)基礎(chǔ)二、定時器使用1.官方描述2.讀入數(shù)據(jù)總結(jié)ESP-32開發(fā)踩坑歷程(三)ESP-IDF 定時器使用)前言設(shè)計ESP32的樂鑫
    發(fā)表于 12-08 12:06 ?13次下載
    ESP-32開發(fā)踩坑歷程(三)ESP-IDF <b class='flag-5'>定時器使</b>用

    CKS32F4xx系列產(chǎn)品的定時器使用-基本特征和定時操作

    這一課我們將介紹CKS32F4XX系列產(chǎn)品的定時器使用,CKS32F4XX的定時器功能十分強大,包含2個高級控制定時器,8個普通定時器,2個基礎(chǔ)定時
    的頭像 發(fā)表于 05-19 09:18 ?953次閱讀
    CKS32F4xx系列產(chǎn)品的<b class='flag-5'>定時器使</b>用-基本特征和<b class='flag-5'>定時</b>操作

    Linux驅(qū)動定時器使用示例

    定時器使用示例 使用步驟: 1、調(diào)用 init_timer 初始化一個定時器,給 struct timer_list 各成員賦值。 2、調(diào)用 add_timer 將定時器添加到內(nèi)核定時器
    的頭像 發(fā)表于 10-04 15:47 ?713次閱讀

    GD32G5x3系列高分辨率定時器使用指南

    電子發(fā)燒友網(wǎng)站提供《GD32G5x3系列高分辨率定時器使用指南.pdf》資料免費下載
    發(fā)表于 01-22 17:32 ?0次下載
    GD32G5x3系列高分辨率<b class='flag-5'>定時器使</b>用指南
    主站蜘蛛池模板: 果冻传媒2021在线观看 | 校园纯肉H教室第一次 | 四虎视频最新视频在线观看 | 成熟YIN荡美妞A片视频麻豆 | 国产精品久久人妻互换毛片 | 日本久久不射 | 甜性涩爱在线看 | 乳女教师欲乱动漫无修版动画 | 欧美日本高清动作片www网站 | 伊人电院网 | 青青青手机视频 | 无人区日本电影在线观看高清 | 成人无码在线超碰视频 | 欧美精品乱码99久久蜜桃 | 午夜深情在线观看免费 | 俄罗斯黄色大片 | 国产精品麻豆AV | 欧美6O老妪与小伙交 | 成人高清网站 | 欧美xxxxxbb| 亚洲一在线 | 欧美亚洲高清国产 | 嘟嘟嘟在线视频免费观看高清中文 | 精品第一国产综合精品蜜芽 | 亚洲欧美日韩另类精品一区二区三区 | 男女久久久国产一区二区三区 | 一区二区三区毛AAAA片特级 | 国产亚洲精品久久久无码狼牙套 | 91涩涩视频 | 蜜桃传媒在线观看入口 | 成人在线视频在线观看 | 无码国产成人777爽死 | 深夜草逼逼 | 成 人 免费 黄 色 网站无毒下载 | 久久精品国产亚洲AV久五月天 | 囯产精品久久久久久久久免费蜜桃 | 99热久久精品国产一区二区 | 男人J进入女人P免费狂躁 | 成人啪啪色婷婷久色社区 | 欧美人成人亚洲专区中文字幕 | 美女xx00|