TIME4:● 8位向上計(jì)數(shù)的自動(dòng)重載計(jì)數(shù)器;
● 3位可編程的預(yù)分配器(可在 運(yùn)行中修改),提供1, 2, 4, 8, 16, 32, 64 和128 這8種分頻比例。
●中斷產(chǎn)生
– 在計(jì)數(shù)器更新時(shí):計(jì)數(shù)器溢出。
本文引用地址:http://m.butianyuan.cn/article/201611/322083.htm
幾個(gè)相關(guān)的寄存器;
控制寄存器1 (TIMx_CR1)
控制寄存器2 (TIMx_CR2)[注意:TIM4沒(méi)有該寄存器]
事件產(chǎn)生寄存器(TIMx_EGR)
狀態(tài)寄存器1 (TIMx_SR1)
中斷使能寄存器(TIMx_IER)
自動(dòng)重裝載寄存器(TIMx_ARR)
預(yù)分頻寄存器(TIMx_PSCR)計(jì)數(shù)器時(shí)鐘頻率fCK_CNT=fCK_PSC/ 2(PSC[2:0])
計(jì)數(shù)器(TIMx_CNTR){TIMx_CNTRL TIMx_CNTRH}
詳細(xì)內(nèi)容見(jiàn):STM8S數(shù)據(jù)手冊(cè)
8位定時(shí)器
main()
{
//首先初始化GPIO
PD_DDR=0x08;
PD_CR1=0x08;//將PD3設(shè)置成推挽輸出
PD_CR2=0x00;
//然后初始化定時(shí)器4
TIM4_IER=0x00;//禁止中斷
TIM4_EGR=0x01;//允許產(chǎn)生更新事件
TIM4_PSCR=0x07;//計(jì)數(shù)器時(shí)鐘=主時(shí)鐘/128=2MHZ/128
//相當(dāng)于計(jì)數(shù)器周期為64uS
TIM4_ARR=255;//設(shè)定重裝載時(shí)的寄存器值,255是最大值
TIM4_CNTR=255;//設(shè)定計(jì)數(shù)器的初值
//定時(shí)周期=(ARR+1)*64=16320uS
TIM4_CR1=0x01;//b0=1,允許計(jì)數(shù)器工作
//b1=0,允許更新
//設(shè)置控制器,啟動(dòng)定時(shí)器
TIM4_IER=0x01;//允許更新中斷
_asm("rim");//允許CPU全局中斷
while(1)//進(jìn)入無(wú)限循環(huán)
{
}
}
@far@interruptvoidTIM4_UPD_OVF_IRQHandler(void)
{
TIM4_SR1=0x00;//清除更新標(biāo)志
PD_ODR=PD_ODR^0x08;//LED驅(qū)動(dòng)信號(hào)取反
//LED閃爍頻率=2MHZ/128/255/2=30.63
}
0
16位定時(shí)器:
main()
{
//首先初始化GPIO
PD_DDR=0x08;
PD_CR1=0x08;//將PD3設(shè)置成推挽輸出
PD_CR2=0x00;
//然后初始化定時(shí)器4
TIM2_IER=0x00;//禁止中斷
TIM2_EGR=0x01;//允許產(chǎn)生更新事件
TIM2_PSCR=0x01;//計(jì)數(shù)器時(shí)鐘=主時(shí)鐘/128=2MHZ/2
//相當(dāng)于計(jì)數(shù)器周期為1uS
//設(shè)定重裝時(shí)的寄存器值
//注意必須保證先寫(xiě)入高8位,再寫(xiě)入低8位
TIM2_ARRH=0xEA;//設(shè)定重裝載時(shí)的寄存器的高8位
TIM2_ARRL=0x60;
TIM2_CNTRH=0xEA;//設(shè)定計(jì)數(shù)器的初值
TIM2_CNTRL=0x60;
//定時(shí)周期=1*60000=60000uS=60ms
TIM2_CR1=0x01;//b0=1,允許計(jì)數(shù)器工作
//b1=0,允許更新
//設(shè)置控制器,啟動(dòng)定時(shí)器
TIM2_IER=0x01;//允許更新中斷
_asm("rim");//允許CPU全局中斷
while(1)//進(jìn)入無(wú)限循環(huán)
{
}
}
//函數(shù)功能:定時(shí)器4的更新中斷服務(wù)程序
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//返回值:無(wú)
@far@interruptvoidTIM2_UPD_IRQHandler(void)
{
TIM2_SR1=0x00;//清除更新標(biāo)志
PD_ODR=PD_ODR^0x08;//LED驅(qū)動(dòng)信號(hào)取反
//LED閃爍頻率=2MHZ/2/60000/2=8.3
}
評(píng)論