全てを折りたたみ
AG903ライブラリリファレンス
AG903_TIMRMgrSetIntHandler 関数
timrmgr.c
TIMR Manager
Body Source
割込みハンドラの登録
@param handle [in] TIMRハンドル
@param func [in] 割込みハンドラの起動番地
@param param [in] パラメータ
@return 割り込みハンドラ登録結果
@retval
AG903_ENONE
正常終了
@retval -
AG903_EINVAL
引数異常
@retval -
AG903_EFAULT
処理失敗 (ハンドラが登録出来ない).
@description 割り込みハンドラを登録します。
paramはコールバック関数に引数として渡されます。void (*func)(void* param)
ひとつのタイマに登録可能な割込みハンドラ数は
AG903_TIMR_INTHDR_NUM
で定義します。
@note 同一チャンネルに設定できる割り込みハンドラの最大数はAG903_OSWprCreIsrAutoでの
実装の最大数とAG903_TIMR_INTHDR_NUMでの定義値の小さいほうになります。
(T-Kernelでは通常1つまでです)
@note 同一のハンドラを複数回登録した場合はその登録数だけコールバックされます。
またその場合登録したハンドラを削除する場合は
AG903_TIMRMgrDeleteIntHandler
を
登録数と同じだけ実行して下さい。一部のハンドラだけ削除した場合は正常に動作しなくなることがあります。
@note AG903_TIMR_INTHDR_NUMは必要に応じて変更可能です(現在は2で動作を確認しています)
@note TIMRMgrが内部的に割り込みを制御しているため動作中はアプリから
AG903_INTMgrDisableInt
等でタイマ割り込みに関する設定を変更しないで下さい。
@note この関数は割り込みハンドラの中から呼び出すことはできません。
Syntax
C++
int32_t
AG903_TIMRMgrSetIntHandler
(
AG903_TIMRMgrHandle
*
handle
,
void
*
func
,
void
*
param
);
ファイル
timrmgr.c
本文ソース
コピコード
1: int32_t AG903_TIMRMgrSetIntHandler(
AG903_TIMRMgrHandle
* handle,
void
* func,
void
* param) 2: { 3:
AG903_INTMgrHdrPrm
inthdr; 4: int32_t retval =
AG903_ENONE
; 5: int32_t result; 6: int32_t hdrid; 7: uint32_t loop; 8: uint8_t ch; 9: 10: result = TIMRMgr_CheckHandle(handle, &ch); 11:
if
(
AG903_ENONE
!= result) { 12:
return
-
AG903_EINVAL
; 13: } 14:
if
(NULL == func) { 15:
return
-
AG903_EINVAL
; 16: } 17:
for
(loop=0; loop<
AG903_TIMR_INTHDR_NUM
; loop++) { 18:
if
(NULL == TimrChStat[ch].inthdr[loop].func) { 19:
break
; 20: } 21: } 22:
if
(
AG903_TIMR_INTHDR_NUM
<= loop) { 23:
return
-
AG903_EFAULT
; 24: } 25: 26: inthdr.atr =
AG903_INT_HLNG
; 27: inthdr.intno =
AG903_IRQ0_TIM0
+ch; 28: inthdr.func = func; 29: inthdr.exinf = param; 30: hdrid =
AG903_INTMgrSetHandler
(&inthdr); 31:
if
(0 >= hdrid) { 32:
return
-
AG903_EFAULT
; 33: } 34:
AG903_INTMgrEnableInt
(
AG903_IRQ0_TIM0
+ch); 35: TimrChStat[ch].inthdr[loop].hdrid = hdrid; 36: TimrChStat[ch].inthdr[loop].func = func; 37: 38:
return
retval; 39: }
グループ
TIMR Manager
リンク
timrmgr.c
,
TIMR Manager
,
Body Source
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.
内容
|
インデックス
|
ホーム