日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

定時(shí)器中斷程序怎么寫

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

掃碼添加小助手

加入工程師交流群

定時(shí)器中斷程序怎么寫

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

#1. 硬件配置

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

a) CPU配置

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

b) 定時(shí)器模塊配置

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

c) 中斷控制器配置

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

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

a) 定義中斷向量

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

注釋格式如下:

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

#pragma vector=中斷向量地址

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

{

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

}

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

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

b) 初始化定時(shí)器

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

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

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

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

// 定時(shí)器清零

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

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

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

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

下面是一個(gè)示例程序:

volatile unsigned int count = 0;

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer_A (void)

{

count++;

}

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

#3. 測試定時(shí)器中斷程序

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

總結(jié)

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

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

    關(guān)注

    41

    文章

    3831

    瀏覽量

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

    關(guān)注

    43

    文章

    537

    瀏覽量

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

    關(guān)注

    0

    文章

    64

    瀏覽量

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

    關(guān)注

    0

    文章

    39

    瀏覽量

    7415
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    CW32定時(shí)器及其中斷介紹

    載計(jì)數(shù)并由一個(gè)可編程預(yù)分頻驅(qū)動。BTIM 支持定時(shí)器模式、計(jì)數(shù)模式、觸發(fā)啟動模式和門控模式 4 種工作模式,支持溢出事件觸發(fā)中斷請求
    發(fā)表于 01-14 06:42

    LAT1173高精度定時(shí)器的同步功能應(yīng)用筆記

    STM32G474 所含的高精度定時(shí)器(HRTIMER)其實(shí)包含了多個(gè)定時(shí)器,多個(gè)定時(shí)器之間可以單獨(dú)工作,也可以進(jìn)行同步,且高精度定時(shí)器還能與片上的其他
    發(fā)表于 01-11 17:32 ?0次下載

    定時(shí)器中斷什么時(shí)候自動清零TF溢出標(biāo)志位?

    1.是在進(jìn)入中斷的那一刻就自動清TF還是在中斷處理完后才清TF? 2.在處理中斷程序的過程中,計(jì)數(shù)還在做加1的
    發(fā)表于 01-06 06:06

    CW32通用定時(shí)器—輸出比較

    計(jì)數(shù)溢出,這個(gè)事情會觸發(fā)一個(gè)中斷,被叫做定時(shí)器溢出中斷,也就是說,定時(shí)器依靠對穩(wěn)定的時(shí)鐘源定次數(shù)計(jì)數(shù)來實(shí)現(xiàn)定時(shí),并且每一個(gè)
    發(fā)表于 12-11 06:45

    實(shí)現(xiàn)一個(gè)嵌入式的軟件定時(shí)器

    操作系統(tǒng)中,都帶有軟件定時(shí)器,原理大同小異。典型的實(shí)現(xiàn)方法是:通過一個(gè)硬件定時(shí)器產(chǎn)生固定的時(shí)鐘節(jié)拍,每次硬件定時(shí)器中斷到,就對一個(gè)全局的時(shí)間標(biāo)記加一,每個(gè)軟件
    發(fā)表于 12-10 08:29

    【乾芯QXS320F開發(fā)板試用】定時(shí)器中斷

    CPUTimer_enableInterrupt(CPUTIMER0_BASE);// 設(shè)置定時(shí)器中斷 CPUTimer_startTimer(CPUTIMER0_BASE); // 開啟定時(shí)器
    發(fā)表于 12-09 16:56

    CW32定時(shí)器中斷介紹

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

    單片機(jī)定時(shí)器中斷

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

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

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

    cs32a010定時(shí)器的問題

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

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

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

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

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

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

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

    stm32H743定時(shí)器溢出的原因?怎么解決?

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

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

    本章介紹了W55MH32的SysTick系統(tǒng)定時(shí)器,它是24位遞減計(jì)數(shù),含4個(gè)寄存,可配置定時(shí)、中斷,用于產(chǎn)生時(shí)基 等。
    的頭像 發(fā)表于 05-22 17:16 ?1266次閱讀
    第十二章 SysTick——系統(tǒng)<b class='flag-5'>定時(shí)器</b>
    长治县| 安阳市| 都匀市| 安岳县| 吴堡县| 温泉县| 宁陵县| 遂宁市| 罗平县| 隆安县| 酒泉市| 乐清市| 山东省| 东乌| 青岛市| 柳江县| 肃南| 卢湾区| 霍城县| 清新县| 靖边县| 东海县| 白银市| 邵阳市| 民丰县| 延寿县| 乐至县| 科技| 牡丹江市| 连云港市| 临桂县| 泸西县| 广元市| 淅川县| 微博| 澜沧| 周至县| 宁都县| 浦县| 商河县| 甘洛县|