娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年07月12日(星期六)

2020年07月12日 | STM8S_003_ TIM定時中斷

發(fā)布者:雅致書香 來源: 51hei關鍵字:STM8S  TIM  定時中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

上一篇文章講述了TIM精確延時(阻塞式),它主要的特點是延時精確,而阻塞式延時在這一延時過程中不能做其它事情,只能等待延時結束。


在某些場合下,我們需要在延時的過程中也要進行其它操作,如在延時過程中需要檢測某一個IO口的電平狀態(tài)、檢測某一按鍵是否處于按下狀態(tài)等。這個時候我們簡單的處理方法就是使用定時中斷,一旦這個延時時間到就進行下一個操作。


本文將簡單講述如何實現(xiàn)TIM定時和中斷,提供簡單的例程源代碼。


為方便大家閱讀,本文內容已經(jīng)整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

TIM基礎知識 Ⅱ

在上一篇文章中講述了一些關于TIM的知識,本文說一下TIM中斷相關知識。

TIM框圖:

TIM4屬于基本定時器,是8位計數(shù)的定時器,也就是說UP-COUNTER和Auto-reload register是8位的寄存器,最大值只能為255。


主系統(tǒng)時鐘fMASTER進來,通過分頻Prescaler給計數(shù)器UP-COUNTER計數(shù),當計數(shù)器和Auto-reload register相等時,有一個事件更新(這就是上文的延時時間到),如果使能了事件更新中斷,則會響應中斷(UIF)。


這里再次強調一下,基本定時器的8位的定時器,最大值為255,如果不滿足要求,可以使用16位的通用定時器。


軟件工程源代碼 Ⅲ

1、關于工程

本文提供的工程代碼是基于前面軟件工程“STM8S_Demo”增加TIM定時器修改而來。初學的朋友可以參看我前面對應的基礎文章,那些文章講的比較詳細。


工程以簡單、易理解為主,方便更多初學者快速理解,工程的大部分配置都是使用默認配置,具體配置可參看我的文章:IAR for STM8系列教程(一)_新建軟件工程詳細過程。


2.軟件概要說明

堅持簡單、基礎、方便初學者理解為原則,本文提供軟件工程中的源代碼只添加了最簡單的內容:

系統(tǒng)初始化:System_Initializes

v BSP_Initializes:時鐘初始化CLK_Configuration和GPIO_Configuration初始化;

v TIMER_Initializes:定時器初始化,本文重點內容;

功能實現(xiàn):while(1)

v TIMTiming_Nms和TIMTiming_Off:開啟定時和關閉定時;

v TIM4_UPD_OVF_IRQHandler:定時器中斷


3.代碼分析說明

關于BSP_Initializes中的內容這里不再詳細說明,請見前面相關的文章:STM8S_001_GPIO基礎知識

本文重點講述關于TIM相關的內容:

A.TIMER_Initializes定時器初始化

void TIMER_Initializes(void)

{

TIM4_TimeBaseInit(TIM4_PRESCALER_128, 125-1); 

TIM4_ClearFlag(TIM4_FLAG_UPDATE); 

TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);  

enableInterrupts(); 

}


我們提供的軟件工程是實現(xiàn)1ms的延時,實現(xiàn)的公式為:16MHz /128 / 125 = 1KHz(1ms)。


第一個參數(shù)TIM4_PRESCALER_128:即128分頻,這個參數(shù)為枚舉類型,具體為如下:

typedef enum

{

TIM4_PRESCALER_1    = ((uint8_t)0x00),

TIM4_PRESCALER_2    = ((uint8_t)0x01),

TIM4_PRESCALER_4    = ((uint8_t)0x02),

TIM4_PRESCALER_8    = ((uint8_t)0x03),

TIM4_PRESCALER_16   = ((uint8_t)0x04),

TIM4_PRESCALER_32   = ((uint8_t)0x05),

TIM4_PRESCALER_64   = ((uint8_t)0x06),

TIM4_PRESCALER_128  = ((uint8_t)0x07)

} TIM4_Prescaler_TypeDef;


第二個參數(shù)125-1:這個參數(shù)的值,實際上的自動重載寄存器(Auto-reload register)的值,也是定時的周期值。從公式中可以看出,它是得出1ms延時的來源。


很多人不理解為什么125-1,而不是125呢?

原因很簡單:計數(shù)是從0開始的,0至124就是計數(shù)125個,因此這里是124。

語句TIM4_ClearFlag(TIM4_FLAG_UPDATE):

這條語句的意思很簡單,清除UPDATE更新標志位。

TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);

enableInterrupts();

如果我們需要在定時的時間到了之后響應中斷,只需要配置這兩條語句即可。(在中斷函數(shù)里面添加需要的內容)

B.啟動和關閉定時:TIMTiming_Nms / TIMTiming_Off

void TIMTiming_Nms(uint16_t Times)

{

gTIMTiming_Num = Times;  

gTIMTiming_Flag = 0;  

TIM4_SetCounter(0); 

TIM4_Cmd(ENABLE);  

}

void TIMTiming_Off(void)

{

gTIMTiming_Flag = 0;

TIM4_Cmd(DISABLE); 

}


本文提供代碼中定義了兩個全局變量:

gTIMTiming_Num:定時計數(shù)(定時多少ms)

gTIMTiming_Flag:定時標志(0-無效 1-有效),也就是我們定時的時間到,有效的標志。

TIM4_SetCounter(0);

每次啟動定時器之前,將計數(shù)值歸零,這樣才能保證第一次計數(shù)(延時)準確。

C.定時中斷

INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)

{

TIM4_ClearITPendingBit(TIM4_IT_UPDATE);

gTIMTiming_Num--;

if(0 == gTIMTiming_Num)

{

TIM4_Cmd(DISABLE);

gTIMTiming_Flag = 1;

}

}


中斷的入口INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23),位于stm8s_it.c文件下面,由系統(tǒng)決定,我們不用去修改。


每次進入中斷,需要添加語句TIM4_ClearITPendingBit(TIM4_IT_UPDATE);清除中斷標志位。后面的由我們自己添加,我這里為了方便測試,使用gTIMTiming_Num變量,這樣可以使定時時間為1ms的倍數(shù)。


D.具體實現(xiàn)功能

TIMTiming_Nms(500);

while(1)

{

if(1 == gTIMTiming_Flag)

{

gTIMTiming_Flag = 0;

LED_REVERSE;

TIMTiming_Nms(500);

}

//添加處理語句

}


這里實現(xiàn)的功能比較簡單,定時500ms改變LED的狀態(tài)。在這里可以添加自己的處理語句(如檢測某一IO狀態(tài)···)。


下載 Ⅳ

STM8S資料:

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程(STM8S-A03_TIM定時中斷):

http://pan.baidu.com/s/1c2EcRo0

關鍵字:STM8S  TIM  定時中斷 引用地址:STM8S_003_ TIM定時中斷

上一篇:STM8S_002_TIM精確延時 (阻塞式)
下一篇:STM8S_ 004_UART基本收發(fā)數(shù)據(jù)

推薦閱讀

這是我的第一篇有關51單片機的博客,主要記錄我的學習歷程與中間遇到的問題,如有錯漏請指出。在我理解里面中斷與定時計數(shù)器是這樣的:中斷是通過檢查P3.2(INT0)與P3.3(INT1)兩個引腳來觸發(fā)的計數(shù)器是通過檢查P3.4(T0)與P3.5(T1)兩個引腳的狀態(tài),要達到一定的次數(shù)(一般是記脈沖數(shù))才觸發(fā)定時器不需要檢測引腳,直接計數(shù)先說中斷的代碼#include<reg51.h>#in...
7月10日,上海沃迪智能裝備股份有限公司機器人制造基地項目簽約,落戶鄂州葛店經(jīng)濟技術開發(fā)區(qū)。湖北日報報道顯示,該項目總投資15億元,占地200畝,主要建設華中地區(qū)智能物流裝備制造旗艦基地和智能制造中央研究院,為客戶提供方案設計、系統(tǒng)仿真、軟件開發(fā)、生產(chǎn)制造、安裝調試、售后服務等一站式智能物流系統(tǒng)整體解決方案。同時,旗艦基地將重點投入農業(yè)...
仿真圖單片機源碼:#include <p18F452.h> //調用頭文件#include<string.h>#define RB0 PORTBbits.RB0 #define RB1 PORTBbits.RB1 #define RB2 PORTBbits.RB2 #define RB3 PORTBbits.RB3 #define RB4 PORTBbits.RB4 #define RB5 PORTBbits.RB5 #define RB6 PORTBbits.RB6 #define RB7 PORTBbits.RB7 ...
7月10日,北斗星通發(fā)布半年度業(yè)績預告稱,公司預計2021年上半年實現(xiàn)歸屬于上市公司股東的凈利潤分別為1億元-1.2億元,同比增長55.7%-86.8%,上年同期盈利為0.64億元。而其扣除非經(jīng)常性損益后的凈利潤為0.8億元-1億元,同比增長85.3%-131.6%,上年同期盈利為0.43億元。對于公司歸母凈利潤和扣非凈利潤大幅增長的主要原因,北斗星通稱主要是受益于行業(yè)用戶、...

史海拾趣

問答坊 | AI 解惑

發(fā)個“全國大學生電子設計競賽獲獎作品”

全國大學生電子設計競賽是個很好的比賽,鍛煉了電子信息工程及其它相關專業(yè)的學生,鍛煉了他們的實際動手能力。發(fā)出“全國大學生電子設計競賽獲獎作品”,不管是初學者還是老鳥,大家都看看,希望能給予大家一定的幫助。 全國大學生電子 ...…

查看全部問答∨

請教:WINCE5.0上已經(jīng)可以使用3G上網(wǎng)卡,原來WinMobile基于GPRS的程序如何移植過來?

怎樣才能讓原來基于GPRS的程序運行于3G上網(wǎng)卡上? 我正在WINCE 5.0上做一個3G無線上網(wǎng)卡的項目,已經(jīng)可以用IE上網(wǎng)了; 但是以前的程序是基于GPRS的,調用的網(wǎng)絡接口不一樣,原來調用的網(wǎng)絡接口有這些: ConnMgrApiReadyEvent、ConnMgrConnection ...…

查看全部問答∨

驅動程序如何調用驅動程序?

一定要創(chuàng)建一個設別來過濾被調用者嗎?還是可以直接構造IRP發(fā)送給被調用者?用App來調用驅動B的IOCTL能很快返回,但是我用另一個驅動A來發(fā)送同樣的IOCTL調用驅動B,驅動B就進入wait for single object掛起了,這是什么原因呢?…

查看全部問答∨

大家都是如何調試6410 裸板的?

在這里我看見唐勉MVP使用ADS調試6410的博客 http://blog.eeworld.net/nanjianhui/archive/2009/05/15/4189270.aspx 我以前用的2440 的jlink卻不行, 請問大家怎么使用jlink 調試6410的,有啥推薦,請回復,謝謝。 使用ADS+JLINK調試硬件比較方 ...…

查看全部問答∨

問有多少人是一個人在搞WINCE的?

一個人搞WINCE,資料又少,太痛苦了,不知道有多少人跟我一樣?…

查看全部問答∨

發(fā)一個自制的ISD語音芯片調試軟件

用VB寫的一個用來調試ISD系列語音芯片的小軟件,簡單易用,為您節(jié)省購買編程器/拷貝機的高昂費用。   配合錄音板可以實現(xiàn):隨心所欲錄制語音信息,方便記錄語音段地址,隨時試聽等,是調試和開發(fā)ISD語音芯片的好工具。 連接好電源線、串口 ...…

查看全部問答∨

我要STM8L

                                 哪里能夠敗到?…

查看全部問答∨

STM32上使用UC/gui的一些資料

  STM32上使用UC/gui的一些資料 詳情可以聯(lián)系 QQ 940436962…

查看全部問答∨

芯幣銀行,提供”貸款“

版版看到論壇上有壇友經(jīng)常下資料苦于沒有芯幣, 版版 突發(fā)奇想,開個芯幣銀行吧! 提供芯幣貸款,需要芯幣的,可以在本貼下方提出來,版版會給你以評分獎勵的方式發(fā)放相應數(shù)目的芯幣。 現(xiàn)在我先銀行注冊,注冊資本7614芯幣,版版的身家都在這兒了 ...…

查看全部問答∨

2013年國賽,您選擇哪類題目?投票拿JLink【活動結束】

本帖最后由 paulhyde 于 2014-9-15 03:27 編輯 2013年國賽,您選擇哪類題目?投票拿JLink,神器增有緣人 。 活動規(guī)則: 1、2013年國賽,您選擇哪類題目? 點擊連接:https://bbs.eeworld.com.cn/thread-376433-1-1.html投票; 2、在本貼后面回 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 隆化县| 封丘县| 杂多县| 盘锦市| 绥芬河市| 扬州市| 浑源县| 普格县| 海林市| 秭归县| 岑溪市| 修文县| 泾源县| 包头市| 四川省| 商洛市| 新闻| 萨迦县| 镇沅| 南乐县| 临安市| 河南省| 昌邑市| 保山市| 信丰县| 利津县| 余干县| 奉新县| 胶南市| 琼中| 板桥市| 酒泉市| 神木县| 陆良县| 重庆市| 思南县| 博白县| 孝义市| 乌什县| 雷山县| 安阳市|