ARM S3C2410 看門狗設定原理及原始碼

2021-06-04 13:27:04 字數 1398 閱讀 1677

s3c2410 看門狗只要有兩個功能

1、作為常規時鐘,並且可以產生中斷

2、作為看門狗定時器使用,當時鐘減到0時(超時),它將產生乙個128個時鐘(plck)的時鐘訊號。

看門狗的設定:

1、 看門狗的外部時鐘源是有plck提供的, plck 通過預分頻 和 與比例因子 產生適合看門狗的時鐘。

t_watchdog = 1/[plck/(prescale value +1)/division_factor]

上面就是它的計算公式。

2、相關暫存器的介紹

wtcon watchdog控制暫存器

看門狗控制暫存器能夠禁止或者允許看門狗時鐘,從四個不同的時鐘源中挑選時鐘訊號,允許或禁止中斷,並且能允許或禁止看門狗時鐘輸出。如果使用者想要使用看門狗作為普通時鐘,應該中斷使能,禁止看門狗定時器復位。

wtdat――看門狗定時器資料暫存器

wtdat 用於設定看門狗定時器的超時時間值,在初始化看門狗過程中,wtdat 的值不會自動載入到定時計數器中,首次使用定時器超時值為其初始值即0x8000,以後該暫存器的值會被自動載入到wtcnt 暫存器中。

wtcnt――看門狗定時器計數暫存器

wtcnt 為看門狗定時器工作的時間計數器的當前計數值,注意在初始化看門狗操作後,看門狗資料暫存器(wtdat)的值不能自動裝到看門狗計數暫存器(wtcnt)中,所以看門狗被允許之前應該初始化看門狗計數暫存器的值。

實驗程式

由於看門狗是對系統的復位或者中斷的操作,所以不需要外圍的硬體電路。要實現看門狗的功能,只需要對看門狗的暫存器組進行操作。即對看門狗的控制暫存器(wtcon)、看門狗資料暫存器(wtdat)、看門狗計數暫存器(wtcnt)的操作。

設計流程如下:

1.設定看門狗中斷操作,包括全域性中斷和看門狗中斷的使能,看門狗中斷向量的定義。頻值、中斷使能和復位使能等。

2.對看門狗資料暫存器(wtdat)和看門狗計數暫存器(wtcnt)的設定。

3.啟動看門狗定時器。

主功能函式

[cpp]view plain

copy

intmain(

void

)    

看門狗復位功能程式實現  

void

watchdog_test(

void

)     

看門狗定時器功能程式實現

[cpp]view plain

copy

void

watchdog_test(

void

)    

/**** watchdog_int ****/

void

__irq watchdog_int(

void

)    

C 製作簡單的看門狗程式

這個類實現了程式退出能重啟,但是程式停止執行彈出對話方塊,程序並沒有退出卻無法重啟。希望有好建議處理這個bug的朋友提出你們的寶貴意見。原始碼如下 using system using system.collections.generic using system.linq using system...

S3C2440看門狗定時器

看門狗定時器的主要作用是在程式因為干擾而跑飛後,能夠使系統復位,不至於使系統永遠的死下去。它的原理與一般的定時器沒有多大區別,就是先要設定好一段時間,當超過這段時間後,就從當前執行的程式中跳出進入中斷處理程式中。但兩者的主要差別是,一般的定時器中斷是我們希望它發生的,因此我們不會在定時器中斷發生前的...

s3c2410 ARM 時鐘與設定

osc是用無源晶振,ext是用有源晶振或外部時鐘2440的12m是oscillator 是有源的呀!2440的12m是oscillator crystal 無源晶體 oscillator 有源晶體 裡面有有源器件 無源晶振內只有一片按一定軸向切割的石英晶體薄片,供接入運放 或微處理器的xtal端 以...