AG903ライブラリリファレンス
Body Source
AG903_TIMRMgrSetEventCountMode 関数
本文ソース
コピコード
1: int32_t AG903_TIMRMgrSetEventCountMode(
AG903_TIMRMgrHandle
* handle,
AG903_TIMRMgrEventCntParam
* param) 2: { 3:
AG903_TIMRPrmInModeParam
inprm = {0}; 4:
AG903_TIMRPrmOutModeParam
outprm = {0}; 5:
AG903_TIMRPrmResetTriggerParam
rstprm = {0}; 6: int32_t retval =
AG903_ENONE
; 7: int32_t result; 8: uint8_t ch; 9: uint8_t idle; 10: 11: result = TIMRMgr_CheckHandle(handle, &ch); 12:
if
(
AG903_ENONE
!= result) { 13:
return
-
AG903_EINVAL
; 14: } 15:
if
(NULL == param) { 16:
return
-
AG903_EINVAL
; 17: } 18:
if
(
AG903_TIMR_EVENT_NUM
<= param->event) { 19:
return
-
AG903_EINVAL
; 20: } 21:
if
(NULL != param->output) { 22:
if
( (
AG903_TIMR_EXTOUT_NUM
<= param->output->portch) || 23: (AG903_TIMR_POL_TYPENUM <= param->output->polarity) || 24: (AG903_TIMR_OUT_PWM <= param->output->mode) || 25: ((AG903_TIMR_OUT_PLUSE == param->output->mode)&&(
AG903_TIMR_PLUSEWIDTH_MAX
< param->output->plusewidth)) ) { 26:
return
-
AG903_EINVAL
; 27: } 28: } 29: idle = TIMRMgr_CheckIdle(ch); 30:
if
(
true
!= idle) { 31:
return
-
AG903_EBUSY
; 32: } 33: 34: inprm.eve = param->event; 35:
AG903_TIMRPrmSetInMode
(ch, &inprm); 36:
AG903_TIMRPrmSetPeriod
(ch, param->period); 37:
AG903_TIMRPrmSetMatch
(ch, param->match); 38:
if
(
true
== param->oneshot) { 39:
AG903_TIMRPrmEnableOneshot
(ch); 40: } 41:
else
{ 42:
AG903_TIMRPrmDisableOneshot
(ch); 43: } 44: 45:
if
(NULL == param->output) { 46: outprm.mod = AG903_TIMR_OUTMOD_DISABLE; 47: } 48:
else
{ 49:
if
(
AG903_TIMR_COMPARE_BIT
& param->output->mask) { 50: outprm.cm = 1; 51: } 52:
if
(
AG903_TIMR_OVERFLOW_BIT
& param->output->mask) { 53: outprm.ovf = 1; 54: } 55: outprm.ch = param->output->portch; 56: outprm.pol = param->output->polarity; 57: outprm.mod = TimrOutModeTbl[param->output->mode]; 58: } 59:
AG903_TIMRPrmSetOutMode
(ch, &outprm); 60:
if
(AG903_TIMR_OUTMOD_PLUSE == outprm.mod) { 61:
AG903_TIMRPrmSetPluseWidth
(ch, param->output->plusewidth); 62: } 63: 64: rstprm.en = AG903_TIMR_RSTEN_DISABLE; 65: rstprm.boot = AG903_TIMR_RSTBOOT_EVENTCNT; 66:
AG903_TIMRPrmSetResetTrigger
(ch, &rstprm); 67: 68: TimrChStat[ch].outmode = outprm.mod; 69: TimrChStat[ch].mode = AG903_TIMR_CTRLMOD_EVENTCNT; 70: 71:
return
retval; 72: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.
内容
|
インデックス
|
ホーム