全てを折りたたみ
AG903ライブラリリファレンス
wdtctl.c
関数
ファイル
凡例
Body Source
WDT
Controler
説明
WDT
Controler
注意
none
著者
AXELL CORPORATION
履歴
2017_02_22 初版
2017_10_26 Ver2.0
本文ソース
コピコード
1: 9: 10: 14: 15: 16:
#include
"AG903_errno.h" 17:
#include
"AG903_intno.h" 18:
#include
"wdt/wdtctl.h" 19:
#include
"wdt/wdtprm.h" 20:
#include
"int/intmgr.h" 21: 22:
typedef
struct
_AG903_WDTCtlInthdrStat { 23: int32_t hdrid; 24:
void
* func; 25: }AG903_WDTCtlInthdrStat; 26: 27:
static
AG903_WDTCtlInthdrStat WdtInthdrStat = {0, NULL}; 28: 29: 40: int32_t
AG903_WDTCtlInit
(
AG903_WDTCtlParam
* param) 41: { 42: _Bool rst =
false
; 43: _Bool intr =
false
; 44: _Bool ext =
false
; 45: 46:
if
(NULL == param) { 47:
return
-
AG903_EINVAL
; 48: } 49: 50:
AG903_WDTPrmDisableCount
(); 51:
AG903_WDTPrmClearStatus
(); 52:
AG903_WDTPrmSetIntrlen
(param->intrlen); 53:
AG903_WDTPrmSetCount
(param->count); 54:
AG903_WDTPrmRestartCount
(); 55:
if
(
AG903_WDT_SYSRESET_ENABLE
& param->enable) { 56: rst =
true
; 57: } 58:
if
(
AG903_WDT_SYSINTR_ENABLE
& param->enable) { 59: intr =
true
; 60: } 61:
if
(
AG903_WDT_EXTSIGNAL_ENABLE
& param->enable) { 62: ext =
true
; 63: } 64:
AG903_WDTPrmSetControl
(rst, intr, ext); 65: 66:
return
AG903_ENONE
; 67: } 68: 69: 81: int32_t
AG903_WDTCtlSetIntHandler
(
void
* func,
void
* param) 82: { 83:
AG903_INTMgrHdrPrm
inthdr; 84: int32_t hdrid; 85: 86:
if
(NULL == func) { 87:
return
-
AG903_EINVAL
; 88: } 89:
if
(NULL != WdtInthdrStat.func) { 90:
return
-
AG903_EPERM
; 91: } 92: inthdr.atr =
AG903_INT_HLNG
; 93: inthdr.intno =
AG903_IRQ25_WDT
; 94: inthdr.func = func; 95: inthdr.exinf = param; 96: hdrid =
AG903_INTMgrSetHandler
(&inthdr); 97:
if
(0 >= hdrid) { 98:
return
-
AG903_EFAULT
; 99: } 100:
AG903_INTMgrEnableInt
(
AG903_IRQ25_WDT
); 101: WdtInthdrStat.hdrid = hdrid; 102: WdtInthdrStat.func = func; 103: 104:
return
AG903_ENONE
; 105: } 106: 107: 115: int32_t
AG903_WDTCtlDeleteIntHandler
(
void
) 116: { 117: int32_t retval =
AG903_ENONE
; 118: 119:
if
(NULL != WdtInthdrStat.func) { 120: retval =
AG903_INTMgrDeleteHandler
(WdtInthdrStat.hdrid); 121:
if
(
AG903_ENONE
!= retval) { 122:
return
-
AG903_EFAULT
; 123: } 124: WdtInthdrStat.hdrid = 0; 125: WdtInthdrStat.func = NULL; 126: } 127: 128:
return
retval; 129: } 130: 131: 138:
void
AG903_WDTCtlEnable
(
void
) 139: { 140:
AG903_WDTPrmEnableCount
(); 141: } 142: 143: 150:
void
AG903_WDTCtlDisable
(
void
) 151: { 152:
AG903_WDTPrmDisableCount
(); 153: } 154: 155: 162:
void
AG903_WDTCtlRestart
(
void
) 163: { 164:
AG903_WDTPrmRestartCount
(); 165: } 166: 167: 176: int32_t
AG903_WDTCtlGetStatus
(uint32_t* status) 177: { 178:
if
(NULL == status) { 179:
return
-
AG903_EINVAL
; 180: } 181: 182:
AG903_WDTPrmGetStatus
(status); 183: 184:
return
AG903_ENONE
; 185: } 186: 187: 194: int32_t
AG903_WDTCtlClearStatus
(
void
) 195: { 196:
AG903_WDTPrmClearStatus
(); 197: 198:
return
AG903_ENONE
; 199: } 200: 201: 209: int32_t
AG903_WDTCtlGetCount
(uint32_t* count) 210: { 211:
if
(NULL == count) { 212:
return
-
AG903_EINVAL
; 213: } 214: 215:
AG903_WDTPrmGetCount
(count); 216: 217:
return
AG903_ENONE
; 218: } 219:
関数
名前
説明
AG903_WDTCtlClearStatus
ステータスクリア
AG903_WDTCtlDeleteIntHandler
割込みハンドラの削除
AG903_WDTCtlDisable
WDT
Disable
AG903_WDTCtlEnable
WDT
Enable
AG903_WDTCtlGetCount
カウンタ値取得
AG903_WDTCtlGetStatus
ステータス取得
AG903_WDTCtlInit
WDT初期化
AG903_WDTCtlRestart
WDT
Restart
AG903_WDTCtlSetIntHandler
割込みハンドラの登録
グループ
ファイル
リンク
関数
,
ファイル
,
凡例
,
Body Source
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.
内容
|
インデックス
|
ホーム