<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 1個(gè)定時(shí)器多處復用的問(wèn)題

1個(gè)定時(shí)器多處復用的問(wèn)題

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏

問(wèn)題: 在一個(gè)工程中往往需要用到多個(gè)定時(shí),然而我們采用的CPU一般也只有2,3個(gè)定時(shí)器。顯然是不夠用的,那么應該怎么辦呢?

我想如果使用過(guò)系統的人都會(huì )知道,在系統中有個(gè)時(shí)鐘節拍,而多個(gè)任務(wù)都是共同使用這個(gè)時(shí)鐘節拍進(jìn)行延時(shí)或任務(wù)切換。那么我們是否可以借鑒一下呢?

本文引用地址:http://dyxdggzs.com/article/201611/317373.htm

下面我們LPC2131舉例說(shuō)明:

①.宏定義:

#define T0_CLOCK_TICK (100)// 1S中計數次數

#define T0_TASK_NUM (3) // 3個(gè)定時(shí)

②. 進(jìn)行定義一個(gè)定時(shí)數組:

uint32 T0_Counter[T0_TASK_NUM] ={0};// NUM 為需要使用的定時(shí)個(gè)數

③. 在相應的定義一個(gè)數組來(lái)存儲標志位:

uint8 T0_Mark[T0_TASK_NUM]= {0};// 標志位為1表示定時(shí)時(shí)間到

④. 編寫(xiě)定時(shí)器初始化函數:

/**************************************************************************************
* FunctionName : Timer0Init()
* Description : 初始化定時(shí)器0
* EntryParameter : NO
* ReturnValue : NO
**************************************************************************************/
void Timer0Init(void)
{
/*Fcclk = Fosc x 4 = 11.0592MHz x 4 = 44.2368MHz
Fpclk = Fcclk / 4 = 44.2368MHz / 4 = 11.0592MHz*/

T0TC = 0; // 定時(shí)器設置為0
T0PR = 0; // 設置定時(shí)器0分頻為1分頻
T0MCR = 0x03;// 匹配通道0匹配中斷并復位T0TC
T0MR0 = Fpclk/T0_CLOCK_TICK;// 比較值(1/T0_CLOCK_TICK s定時(shí)值)
T0TCR = 0x00;// 關(guān)閉定時(shí)器0
T0Open();// 開(kāi)定時(shí)器

/* 設置定時(shí)器0中斷IRQ*/
VICIntSelect = 0x00; // 所有中斷通道設置為IRQ中斷
VICVectCntl4 = 0x20|0x04;// 定時(shí)器0中斷通道分配最高優(yōu)先級
VICVectAddr4 = (uint32)IRQ_Time0;// 設置中斷服務(wù)程序地址向量
VICIntEnable = 1 << 0x04;// 使能定時(shí)器0中斷
}

⑤. 編寫(xiě)中斷服務(wù)函數:

/**************************************************************************************
* FunctionName : IRQ_Time0()
* Description : 定時(shí)器0中斷服務(wù)
* EntryParameter : NO
* ReturnValue : NO
**************************************************************************************/

void __irq IRQ_Time0(void) // 中斷服務(wù)函數

{

uint8 i;

for (i=0; i {
if (T0_Counter[i] != 0)
{
T0_Counter[i]--;// 計數值減1
if (T0_Counter[i] == 0)
{
T0_SetMark(i);// 相應標志位置1
}
}
}

T0IR = 0x01;// 清除中斷標志
VICVectAddr = 0x00;// 通知VIC中斷處理結束

}

⑥. 編寫(xiě)標志位置位函數:

/**************************************************************************************
* FunctionName : T0_SetMark()
* Description : 設置相應標準位
* EntryParameter : NO
* ReturnValue : NO
**************************************************************************************/
void T0_SetMark(uint8 num)
{
switch (num)
{
case 0: T0_Mark[0] = 1; break;// 標志位置位
case 1: T0_Mark[1] = 1; break;//
case 2: T0_Mark[2] = 1; break;//

default: break;
}
}

⑦. 編寫(xiě)相應的函數,在需要使用的函數中設定計數時(shí)間:

voidFunction1(void)

{

T0_Mark[0] = 0; // 清除標志位

T0_Counter[0] = 100;// 1s計數器100次

while (1)

{

if (T0_Mark[0] == 1)// 判斷時(shí)間是否到

{

T0_Mark[0] = 0;// 清除標志

...

}

}

}

⑧. 編寫(xiě)其他函數,按照以上方法。

注意事項:

①. 可以根據具體需要更改計數個(gè)數。

②. 定時(shí)器計數1S的此時(shí)可以根據具體需要設定,如果設定計數此時(shí)太多,CPU的效率會(huì )降低,但是精確度會(huì )高一下;反正精確度低,但是CUP效率會(huì )高一些。



關(guān)鍵詞: 定時(shí)器多處復

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>