chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

定時器中斷程序怎么寫

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-09-01 10:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

定時器中斷程序怎么寫

嵌入式系統(tǒng)中,定時器被廣泛應(yīng)用于各種任務(wù)。它們在實時系統(tǒng)中可用于輪詢,計時等任務(wù)。定時器可以被配置為周期性定時器,非周期性定時器或單次定時器,以執(zhí)行不同類型的任務(wù)。當(dāng)定時器達到預(yù)定的定時時間時,它會產(chǎn)生一個中斷信號,稱為定時器中斷。在本文中,我們將詳細了解如何編寫定時器中斷程序。

#1. 硬件配置

在開始編寫定時器中斷程序之前,正確配置定時器是至關(guān)重要的。硬件包含CPU,定時器模塊和中斷控制器。

a) CPU配置

CPU設(shè)計語言應(yīng)該支持中斷。因為中斷機制是通過修改CPU的狀態(tài)寄存器來實現(xiàn)的,因此CPU必須支持狀態(tài)寄存器。在大多數(shù)嵌入式系統(tǒng)中,常用的語言是C和匯編語言。

b) 定時器模塊配置

定時器模塊負責(zé)計時任務(wù)。設(shè)置定時器的速度(例如,多快一個計時器令牌)取決于處理器的主頻和定時器模塊的特性。需要確定用于定時器模塊的時鐘源和分頻器。

c) 中斷控制器配置

嵌入式系統(tǒng)中,通常使用中斷控制器來管理和路由中斷。中斷控制器允許您對響應(yīng)中斷的程序進行配置,并將中斷路由到恰當(dāng)?shù)奶幚沓绦颉?br />
#2. 編寫定時器中斷程序

在定時器中斷程序中,我們必須遵循一定的方法和規(guī)則。流程如下:

a) 定義中斷向量

在編寫定時器中斷程序之前,必須為定時器中斷定義中斷向量。中斷向量是中斷服務(wù)程序的入口點。為了定義中斷向量,我們需要使用特殊的注釋格式,并使用定義中斷向量的操作碼。

注釋格式如下:

/*中斷服務(wù)程序*/

#pragma vector=中斷向量地址

__interrupt void 中斷服務(wù)程序名稱(void)

{

// 中斷服務(wù)程序的操作

}

在上述代碼中,“#pragma vector”是指令,用于定義中斷向量地址。中斷向量地址通??梢詮脑O(shè)備的數(shù)據(jù)手冊中獲取。在此之后,我們定義了一個函數(shù)來執(zhí)行中斷服務(wù)。

__interrupt表示該函數(shù)是一個中斷服務(wù)程序。真正的中斷號可以在配置定時器時確定,這里用“中斷向量地址”來代替它。中斷服務(wù)程序名稱是引用中斷服務(wù)程序的函數(shù)名稱。

b) 初始化定時器

在編寫定時器中斷程序之前,首先需要初始化定時器。需要確定定時器的定時時間和計時單位等重要參數(shù)。

我們可以使用以下代碼初始化定時器:

TACCR0 = 定時時間 - 1; // 設(shè)置定時器計數(shù)器上限

TACTL = TASSEL_2 + ID_x + MC_1 + TACLR; // 設(shè)置時鐘源、分頻器、模式和

// 定時器清零

在上述代碼中,TACCR0表示定時器計時器上限,以實現(xiàn)計時器時間的設(shè)置。TASSEL_2是時鐘源選擇(選擇器允許您選擇使用內(nèi)部時鐘還是外部時鐘)。ID_x是計數(shù)器分頻器,以確定定時器時鐘速率(內(nèi)部時鐘或外部時鐘),和MC_1是定時器模式。

c) 編寫中斷服務(wù)程序

在定義了中斷向量和初始化定時器之后,我們現(xiàn)在可以編寫定時器中斷服務(wù)程序。在定時器達到預(yù)定定時時間時,它會產(chǎn)生一個中斷。中斷隨后會打斷CPU的正常執(zhí)行并轉(zhuǎn)到中斷服務(wù)程序,即上面我們定義的中斷向量。

當(dāng)中斷發(fā)生時,中斷服務(wù)程序?qū)⒈徽{(diào)用,并執(zhí)行預(yù)設(shè)的操作。在本例中,我們實現(xiàn)了一個簡單的定時器計數(shù)器應(yīng)用程序,用于檢測定時器是否工作。

下面是一個示例程序:

volatile unsigned int count = 0;

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer_A (void)

{

count++;

}

在上述代碼中,我們定義了一個變量count,在中斷服務(wù)程序中實現(xiàn)了它的自增操作。

#3. 測試定時器中斷程序

編寫定時器中斷程序后,需要將其上傳到嵌入式系統(tǒng)并進行測試。我們可以使用適當(dāng)?shù)恼{(diào)試工具,如示波器,以確保定時器中斷程序可以正常工作。在上述示例程序中,計數(shù)器將在每個定時器中斷期間遞增,該計數(shù)器值可以用于測試。

總結(jié)

在本文中,我們詳細討論了如何編寫定時器中斷程序。我們需要正確配置硬件,定義中斷向量,初始化定時器,并編寫適當(dāng)?shù)闹袛喾?wù)程序。最終,我們需要使用調(diào)試工具測試定時器中斷程序以確保它們可以正常工作。定時器中斷程序在實時系統(tǒng)中非常有用。在開始編寫定時器中斷程序之前,要仔細考慮各個方面。

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

    關(guān)注

    41

    文章

    3716

    瀏覽量

    133046
  • 分頻器
    +關(guān)注

    關(guān)注

    43

    文章

    536

    瀏覽量

    52240
  • 中斷控制器
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    9771
  • 狀態(tài)寄存器
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    7373
  • 定時器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11676
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CW32定時器中斷介紹

    ,否則將觸發(fā)系統(tǒng)復(fù)位。WWDT 通常被用來監(jiān)測有嚴(yán)格時間要求的程序執(zhí)行流程,防止由外部干擾或未知條件造成應(yīng)用程序的執(zhí)行異常, 導(dǎo)致發(fā)生系統(tǒng)故障。 01 CW32定時器中斷
    發(fā)表于 12-01 07:08

    單片機定時器中斷

    和T1的工作方式 ②計算初值,并將初值寫入TH0、TL0或TH1、TL1中。 ③中斷方式時,則對IE賦值,開放中斷。 ④使TR0或TR1置位,啟動定時器/計數(shù)
    發(fā)表于 11-24 06:22

    PWM、定時器、SysTick 區(qū)別及應(yīng)用場景

    。下面我們來梳理清楚。一、基本概念定時器(Timer)MCU內(nèi)最基礎(chǔ)的計數(shù)外設(shè),通過計數(shù)時鐘周期實現(xiàn)定時、計數(shù)功能。多數(shù)MCU內(nèi)部有多個通用定時器,可配置為定時中斷
    的頭像 發(fā)表于 11-17 10:53 ?195次閱讀
    PWM、<b class='flag-5'>定時器</b>、SysTick 區(qū)別及應(yīng)用場景

    看門狗定時器、復(fù)位源、異常處理機制科普

    的作用、原理與應(yīng)用。一、看門狗定時器(WatchdogTimer)1.原理看門狗定時器本質(zhì)上是一個獨立定時器,持續(xù)倒計時:軟件在規(guī)定時間內(nèi)“喂狗”(重置看門狗計數(shù)
    的頭像 發(fā)表于 11-17 10:53 ?647次閱讀
    看門狗<b class='flag-5'>定時器</b>、復(fù)位源、異常處理機制科普

    cs32a010定時器的問題

    按照例程寫了定時器的初始化,還是無法進入中斷 比較奇怪我使用定時器為什么要用輸入捕獲? 還有周期是否該設(shè)為x-1?
    發(fā)表于 11-06 10:49

    SysTick系統(tǒng)滴答定時器簡介

    SysTick—系統(tǒng)定時器是屬于CM33內(nèi)核中的一個外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時器是一個24bit的向下遞減的計數(shù),計數(shù)每計數(shù)一次的時間為 1/SYSCLK,一般我們設(shè)置系統(tǒng)時
    的頭像 發(fā)表于 09-23 09:50 ?1295次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時器</b>簡介

    大彩講堂:VisualHMI-LUA教程-定時器的使用指南

    定時器的使用
    的頭像 發(fā)表于 08-31 16:59 ?827次閱讀
    大彩講堂:VisualHMI-LUA教程-<b class='flag-5'>定時器</b>的使用指南

    【中科昊芯Core_DSC280025C開發(fā)板試用體驗】---定時器中斷方式的LED流水燈

    不算什么,但對于初學(xué)者來說卻不是那么簡單的事了,筆者經(jīng)過一番研究終于用定時器中斷點亮流水燈了。 官方文件中 代碼GPIO_setPinConfig(GPIO_5_GPIO5);是配置GPIO5引腳,參數(shù)
    發(fā)表于 08-07 22:14

    【沁恒CH585開發(fā)板免費試用體驗】定時器操作

    獨立的,可以一起同步操作。 2 定時器代碼實現(xiàn) 接下來我們以通用定時器 TMR0為實例,來說明要經(jīng)過哪些步驟,才能達到這個要求,并產(chǎn)生中斷。 2.1 定時器配置步驟 這里我們就對每個步
    發(fā)表于 07-05 23:06

    stm32H743定時器溢出的原因?怎么解決?

    我利用定時器更新中斷實現(xiàn)軟件計時,定時時間是固定的按照{(diào)10ms, 20ms,650ms, 50ms,50ms}周期性進行的。由于下一次的計時時間是需要在定時器
    發(fā)表于 06-23 08:26

    第十二章 SysTick——系統(tǒng)定時器

    本章介紹了W55MH32的SysTick系統(tǒng)定時器,它是24位遞減計數(shù),含4個寄存,可配置定時、中斷,用于產(chǎn)生時基 等。
    的頭像 發(fā)表于 05-22 17:16 ?813次閱讀
    第十二章 SysTick——系統(tǒng)<b class='flag-5'>定時器</b>

    MCU定時器/計數(shù)

    RISC-V核低功耗MCU通過靈活的定時器架構(gòu)、低功耗模式適配及硬件級中斷優(yōu)化,在工業(yè)控制、智能家居等場景中實現(xiàn)高精度計時與能耗控制的協(xié)同設(shè)計,滿足復(fù)雜任務(wù)調(diào)度與實時響應(yīng)的雙重需求?。 一、?硬件
    的頭像 發(fā)表于 04-27 13:54 ?580次閱讀

    STM32G474HRTIM使用HRTIM配置了主定時器中斷,為啥調(diào)試的跳轉(zhuǎn)到硬件中斷,進不去定時器中斷,為什么?

    各位大佬,我使用HRTIM配置了主定時器中斷,為啥調(diào)試的跳轉(zhuǎn)到硬件中斷,進不去定時器中斷 下面是我的初始化代碼
    發(fā)表于 03-13 08:17

    stm32f103定時器2配置中斷程序一直死循環(huán),無法進入中斷,怎么解決?

    目前定時器2配置中斷,程序一直死循環(huán),無法進入中斷,有無大佬請教或者看一下個參考歷程
    發(fā)表于 03-12 08:18