📄 readme.txt
字号:
=============================================================================
wai_sem / twai_sem / preq_sem 僙儅僼僅帒尮偺妉摼
-----------------------------------------------------------------------------
亂娭悢亃ER wai_sem(ID semid)
ER twai_sem(ID semid, TMO tmout)
ER preq_sem(ID semid)
亂堷悢亃ID semid 帒尮傪妉摼偡傞僙儅僼僅偺ID(傾僪儗僗)
亂栠抣亃僄儔乕僐乕僪
亂婡擻亃
semid 偱巜掕偟偨僙儅僼僅偺帒尮傪1偮妉摼偟傑偡丅偡偖偵妉摼偱偒側偐偭偨応崌丄
偦傟偧傟偺僔僗僥儉僐乕儖偱埲壓偺傛偆側摦嶌傪偟傑偡丅
wai_sem 帒尮偑妉摼偱偒傞傑偱塱媣偵懸偪傑偡丅
preq_sem 懸偨偢偵懄僄儔乕僐乕僪 E_TMOUT 偱儕僞乕儞偡傞丅
twai_sem 帒尮偑妉摼偱偒傞偐丄僞僀儉傾僂僩帪娫偵側傞傑偱懸偪傑偡丅
tmout 偵 TMO_FEVR 傪巜掕偡傞偲塱媣偵懸偪傑偡(wai_sem偲摨偠)丄
tmout 偵 TMO_POL 傪巜掕偡傞偲懸偨偢偵儕僞乕儞偟傑偡丅
僞僀儉傾僂僩偺扨埵偼丄僞僀儅乕妱傝崬傒偺廃婜偱偡丅椺偊偽僞僀儅乕妱傝崬傒偑
10msec枅偵愝掕偟偰偄傞偲偒丄僞僀儉傾僂僩傪1昩偵愝掕偡傞偵偼丄100 偲巜掕偟
傑偡丅
幚嵺偼丄wai_sem丄preq_sem 偼僿僢僟僼傽僀儖 azrtos.h 偺拞偱儅僋儘掕媊偝傟偰
偄傞偩偗偱偁傝丄杮暔偺僔僗僥儉僐乕儖偱偼偁傝傑偣傫丅
亂椺亃 ApSemaphore sem1;
...
er = twai_sem(&sem1, 1000)
亂嶲徠亃sig_sem, ref_sem
=============================================================================
ref_sem / iref_sem 僙儅僼僅忬懺偺嶲徠
-----------------------------------------------------------------------------
亂娭悢亃ER ref_sem(T_RSEM* pk_rsem, ID semid)
亂堷悢亃T_RSEM* pk_rsem 僙儅僼僅忬懺傪庢摼偡傞僷働僢僩偺傾僪儗僗
ID semid 僙儅僼僅偺ID(傾僪儗僗)
亂栠抣亃僄儔乕僐乕僪
亂婡擻亃
semid 偱巜掕偡傞僙儅僼僅偺忬懺傪庢摼偟傑偡丅庢摼偱偒傞忬懺偼丄埲壓偺2偮偱偡丅
struct t_rsem
{
BOOL_ID wtsk; /* 懸偪僞僗僋偺桳柍 */
INT semcnt; /* 僙儅僼僅僇僂儞僩抣 */
};
亂椺亃 T_RSEM rsem;
extern ApSemaphore sem1;
er = ref_sem(&rsem, &sem1);
亂嶲徠亃sig_sem, wai_sem
=============================================================================
set_tim / iset_tim 僔僗僥儉僋儘僢僋偺愝掕
-----------------------------------------------------------------------------
亂娭悢亃ER set_tim(SYSTIME* pk_tim)
亂堷悢亃SYSTIME* pk_tim 愝掕偡傞僔僗僥儉帪娫傪擖傟偨僷働僢僩偺傾僪儗僗
亂栠抣亃僄儔乕僐乕僪
亂婡擻亃
僔僗僥儉僋儘僢僋傪 pk_tim 偱巜掕偡傞帪娫偵愝掕偡傞丅AzkiRTOS 偱偼丄僔僗僥儉
巒摦帪偐傜偺帪娫傪1儈儕昩扨埵丄48價僢僩偱娗棟偟偰偄傑偡丅偙偺僔僗僥儉僐乕儖
偼丄偦偺僋儘僢僋抣傪擟堄偺抣偵愝掕偡傞偨傔偺傕偺偱偡丅
struct t_systim
{
UH m_low; /* msec扨埵偺僔僗僥儉帪娫 壓16-bit */
UH m_mid; /* 乂 拞16-bit */
H m_high; /* 乂 忋16-bit */
};
扨埵偼1儈儕昩偱偡偑丄幚嵺偺暘夝擻偼僞僀儅乕妱傝崬傒偺廃婜偲側傝傑偡丅椺偊偽
10msec枅偵僞僀儅乕妱傝崬傒偑敪惗偡傞僔僗僥儉偱偼丄10埲壓偺抣偵偼堄枴偑偁傝
傑偣傫丅
亂椺亃 SYSTIME systim;
systim.m_low = 0;
systim.m_mid = 0;
systim.m_high = 0;
er = set_tim(&systim);
亂嶲徠亃get_tim
ER set_tim(SYSTIME* pk_tim)
=============================================================================
get_tim / iget_tim 僔僗僥儉僋儘僢僋偺嶲徠
-----------------------------------------------------------------------------
亂娭悢亃ER get_tim(SYSTIME* pk_tim)
亂堷悢亃SYSTIME* pk_tim 僔僗僥儉僋儘僢僋傪庢摼偡傞僷働僢僩偺傾僪儗僗
亂栠抣亃僄儔乕僐乕僪
亂婡擻亃
尰嵼偺僔僗僥儉僋儘僢僋傪 pk_tim 偵庢摼偟傑偡丅AzkiRTOS 偱偼丄僔僗僥儉巒摦帪
偐傜偺帪娫傪1儈儕昩扨埵丄48價僢僩偱娗棟偟偰偄傑偡丅偙偺僔僗僥儉僐乕儖偼丄
偦偺帪娫傪庢摼偟傑偡丅
struct t_systim
{
UH m_low; /* msec扨埵偺僔僗僥儉帪娫 壓16-bit */
UH m_mid; /* 乂 拞16-bit */
H m_high; /* 乂 忋16-bit */
};
扨埵偼1儈儕昩偱偡偑丄幚嵺偺暘夝擻偼僞僀儅乕妱傝崬傒偺廃婜偲側傝傑偡丅椺偊偽
10msec枅偵僞僀儅乕妱傝崬傒偑敪惗偡傞僔僗僥儉偱偼丄10埲壓偺抣偵偼堄枴偑偁傝
傑偣傫丅
亂椺亃 SYSTIME systim;
er = get_tim(&systim);
亂嶲徠亃set_tim
=============================================================================
dly_tsk 僞僗僋抶墑
-----------------------------------------------------------------------------
亂娭悢亃ER dly_tsk(DLYTIME dlytim)
亂堷悢亃DLYTIME dlytim 僞僗僋偺抶墑帪娫
亂栠抣亃僄儔乕僐乕僪
亂婡擻亃
帺僞僗僋偺幚峴傪 dlytim 偱巜掕偟偨堦掕帪娫掆巭偟傑偡丅dlytim 偺扨埵偼丄
僞僀儅乕妱傝崬傒偺廃婜偱偡丅椺偊偽丄10msec偺廃婜偱僞僀儅乕妱傝崬傒傪敪惗
偝偣偰偄傞僔僗僥儉偱僞僗僋偺幚峴傪1昩娫抶墑偝偣傞偵偼丄100 傪巜掕偟傑偡丅
dly_tsk 傕堦庬偺懸偪忬懺偱偁傝丄rel_wai 偵傛偭偰懠僞僗僋傗妱傝崬傒僴儞僪儔
偐傜嫮惂夝彍偡傞偙偲偑壜擻偱偡丅偦偺応崌偺栠傝抣偼丄E_RLWAI 偱偡丅
亂椺亃 /* 僞僗僋傪10昩娫掆巭偟傑偡 (僞僀儅妱傝崬傒10msec偺応崌) */
er = dly_tsk(1000);
亂嶲徠亃rel_wai
=============================================================================
ret_int 妱傝崬傒僴儞僪儔偐傜偺暅婣
-----------------------------------------------------------------------------
亂娭悢亃void ret_int(void)
亂堷悢亃void
亂栠抣亃void (栠偭偰偒傑偣傫)
亂婡擻亃
妱傝崬傒僴儞僪儔偐傜偺暅婣張棟傪峴偄傑偡丅偨偩偟丄NC30WA傪巊偄C偱妱傝崬傒
僴儞僪儔傪婰弎偡傞応崌偼丄偙偺僔僗僥儉僐乕儖傪屇傃弌偡昁梫偼偁傝傑偣傫(偄偗
傑偣傫)丅
#pragma INTHANDLER 柦椷偵傛傝娭悢傪妱傝崬傒僴儞僪儔偱偁傞偲愰尵偡傟偽丄
僐儞僷僀儔偑娭悢偺慜屻傊儗僕僗僞傪懸旔丒暅妶偝偣傞僐乕僪偲丄嵟屻偵僜僼僩
僂僃傾妱傝崬傒 INT #34 傪帺摦憓擖偟傑偡丅INT #34 偑偙偺 ret_int 偵憡摉偟傑偡丅
C娭悢偐傜ret_int傪屇傃弌偡偲丄偦偺帪揰偺僗僞僢僋偺忬懺偑晄柧偱偁傞偨傔丄
梊婜偣偸忬懺偵娮傝傑偡丅偙偺娭悢偼巊傢偢丄偐側傜偢 #pragma INTHANDLER 偵傛傝
妱傝崬傒僴儞僪儔傪愰尵偟偰偔偩偝偄丅
傾僙儞僽儕尵岅偱婰弎偟偨妱傝崬傒僴儞僪儔偐傜儕僞乕儞偡傞偵偼丄FLG傪彍偔偡傋偰
偺儗僕僗僞暅婣偟偨屻丄ret_int 傊僕儍儞僾偟偰偔偩偝偄丅
.glb ret_int
jmp ret_int
仧仧仧 僗僞乕僩傾僢僾儖乕僠儞 仧仧仧
NC30WA偱僐儞僷僀儖偟偨僐乕僪傪僔儈儏儗乕僞傗僞乕僎僢僩忋偱摦嶌偝偣傞偵偼丄
僗僞乕僩傾僢僾儖乕僠儞偑昁梫偱偡丅AzkiRTOS 偱偼丄NC30WA 偵晅懏偟偰偄傞
僒儞僾儖僾儘僌儔儉 smp30 偺拞偱巊傢傟偰偄傞僗僞乕僩傾僢僾僼傽僀儖 ncrt0.a30
偲 sect30.inc 傪僐僺乕偟丄彮偟廋惓偟偰巊偭偰偄傑偡丅埲壓偵偦傟傜僼傽僀儖偺
廋惓曽朄傪帵偟傑偡丅
ncrt0.a30 偺曄峏揰
(1) 儕僙僢僩僗僞乕僩(start:)偐傜5柦椷偱僗僞僢僋僗僞僢僋億僀儞僞傪 ISP 偐傜
USP 偵愗傝懼偊偰偄傞晹暘傪僐儊儞僩傾僂僩偡傞丅嵟弶偺僞僗僋偑婲摦偡傞傑偱
偼丄堦愗儐乕僓僗僞僢僋億僀儞僞偼巊梡偟傑偣傫丅
亂曄峏慜亃 ldc #0080h, flg
劆 ldc #stack_top, sp ;set stack pointer
伀
亂曄峏屻亃 ;;; ldc #0080h, flg
;;; ldc #stack_top, sp ;set stack pointer
(2) main 娭悢偺屇傃弌偟傪AzkiRTOS偺弶婜壔娭悢 vini_sys 偺屇傃弌偟偵抲偒姺偊傞丅
偦傟偲丄搑拞偺儊儌儕僋儕傾丄儊儌儕僐僺乕偺堷悢偲偟偰抣傪僾僢僔儏偟偭傁側偟
偱僗僞僢僋傪姫偒栠偟偰偄側偄偨傔丄_vini_sys 傪屇傃弌偡慜偵傕偆堦搙妱傝崬傒
僗僞僢僋億僀儞僞傪愝掕偟捈偟偨曽偑傛偄偱偟傚偆丅
亂曄峏慜亃 .glb _main
劆 jsr.a _main
伀
亂曄峏屻亃 ;;; .glb _main
;;; jsr.a _main
ldc #istack_top, isp ;set istack pointer
.glb _vini_sys
jsr.a _vini_sys
亂儊儌亃儊儌儕僐僺乕傗儊儌儕僋儕傾偺偨傔偵儅僋儘偺拞偐傜屇傃弌偟偰偄傞
_bcopy 傗 _bzero 偼丄NC30WA 偺儔儞僞僀儉儔僀僽儔儕偺娭悢偱偡丅
_init 傕儔儞僞僀儉儔僀僽儔儕娭楢偺弶婜壔張棟傪峴偭偰偄傞傛偆偱偡丅
偟偨偑偭偰 nc30lib.lib 傪儕儞僋偟側偗傟偽側傝傑偣傫丅
(3) 僼傽僀儖偺愭摢嬤偔偵偁傞僗僞僢僋僒僀僘偺僔儞儃儖 STACKSIZE 偲 ISTACKSIZE
傪挷惍偟傑偡丅AzkiRTOS 偱偼丄偙偙偱妋曐偟偰偄傞儐乕僓僗僞僢僋傪巊偄傑偣傫丅
廬偭偰儐乕僓僗僞僢僋偺僒僀僘偼侽偲偟傑偡丅傑偨妱傝崬傒僗僞僢僋偼丄偡傋偰偺
妱傝崬傒傗僔僗僥儉僐乕儖偱巊梡偟傑偡丅懡廳妱傝崬傒張棟傪偡傞応崌偼丄怲廳偵
寛掕偟偰偔偩偝偄丅
亂曄峏慜亃 STACKSIZE .equ 300h
伀
亂曄峏屻亃 STACKSIZE .equ 0
亂曄峏慜亃 ISTACKSIZE .equ 300h
伀
亂曄峏屻亃 ISTACKSIZE .equ 300h ; 偡傋偰偺妱傝崬傒亄僔僗僥儉僐乕儖偱昁梫側僗僞僢僋僶僀僩悢
sect30.inc 偺曄峏揰
(4) 儀僋僞僥乕僽儖偺#21斣傪丄僒儞僾儖偺A0僞僀儅乕僴儞僪儔偐傜 AzkiRTOS 偺僞僀儅乕
僴儞僪儔偵曄峏偟傑偡丅
亂曄峏慜亃 .glb _ta0int
劆 .lword _ta0int ; TIMER A0 (for user)
伀
亂曄峏屻亃 ;;; .glb _ta0int
;;; .lword _ta0int ; TIMER A0 (for user)
.glb _az_timer_handler
.lword _az_timer_handler ; TIMER A0 (for user)
亂儊儌亃僞僀儉傾僂僩傗dly_tsk丄僔僗僥儉偺帪娫側偳傪慡偔巊傢側偄応崌偼丄
AzkiRTOS 傛偆偵僞僀儅乕傪婲摦偡傞昁梫偼偁傝傑偣傫丅傑偨丄摿偵A0
僞僀儅乕偱側偔偰傕偐傑偄傑偣傫丅偦偺応崌偼丄儀僋僞乕偲vini_sys()偺
拞偱僞僀儅乕傪僗僞乕僩偝偣偰偄傞晹暘傪廋惓偡傞昁梫偑偁傝傑偡丅
僨僼僅儖僩偺愝掕偱偼丄16-bit僞僀儅乕A0 傪巊偭偰10msec枅偵妱傝崬傒
傪敪惗偝偣丄僞僀儉傾僂僩傗僔僗僥儉帪娫偺峏怴傪峴偭偰偄傑偡丅
(5) 摨條偵僜僼僩僂僃傾妱傝崬傒偺#32偲#34斣偺儀僋僞傪丄偦傟偧傟 AzkiRTOS 偺
僔僗僥儉僐乕儖偺擖傝岥 az_syscall 偲丄妱傝崬傒偐傜偺儕僞乕儞張棟 az_retint
傊僙僢僩偟傑偡丅
亂曄峏慜亃 .lword dummy_int ; vector 32 (for user or MR30)
劆 .lword dummy_int ; vector 33 (for user or MR30)
劆 .lword dummy_int ; vector 34 (for user or MR30)
伀
亂曄峏屻亃 .glb __az_syscall ; AzkiRTOS 偺僔僗僥儉僐乕儖擖傝岥
.lword __az_syscall ; vector 32 (for user or MR30)
.lword dummy_int ; vector 33 (for user or MR30)
.glb __az_retint ; AzukiRTOS 偺僴儞僪儔偐傜偺儕僞乕儞張棟
.lword __az_retint ; vector 34 (for user or MR30)
埲忋偱僗僞乕僩傾僢僾儖乕僠儞偺曄峏偼廔傢傝傑偟偨丅
偙傟埲奜偵妱傝崬傒傪巊偭偨傝丄妱傝崬傒僴儞僪儔傪捛壛偡傞応崌偼丄
偦傟偧傟愝掕偡傞昁梫偑偁傝傑偡丅
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -