# API 使用限制
# 只能调用一次的函数
madOSInit
madOSRun
madInitSysTick // 必须在用户线程建立前调用。
madInitStatist // 必须在 madInitSysTick 之后,用户线程建立前调用。
1
2
3
4
2
3
4
TIP
初始化后,内部参数由 MadOS 自行维护,用户不可更改,否则将导致不可预期的错误。
# 不能手动调用的函数
madMemInit // madOSInit 内部自动调用。
madTimeInit // madInitSysTick 内部自动调用。
madThreadStkInit // madThreadCreateCarefully 内部自动调用。
madSysTick // System Tick 中断中自动调用。
madMemClearRes // madThreadDeleteAndClear 中自动调用。
1
2
3
4
5
2
3
4
5
TIP
以上函数由MadOS内部自动调用。
# 不能在中断或临界区内调用的函数
MadMemory 模块中的所有函数
madFBufferCreate
madFBufferDelete
madThreadCreateCarefully
madThreadCreate
madThreadDelete
madTimeDly
madSemCreateCarefully
madSemCreate
madSemCreateN
madSemWait
madSemWaitInCritical /* 可在临界区内调用 / 谨慎使用!!! */
madDoSemDelete
madSemDelete
madDoMutexCreate
madMutexCreate
madMutexCreateN
madMutexCreateRecursive
madMutexCreateRecursiveN
madMutexWait
madMutexWaitInCritical /* 可在临界区内调用 / 谨慎使用!!! */
madDoMutexDelete
madMutexDelete
madMsgQCreateCarefully
madMsgQCreate
madMsgWait
madDoMsgSend
madMsgSendBlock /* 如有内建投递锁定信号量则不能调用 */
madDoMsgQDelete
madMsgQDelete
madEventCreate
madEventWait
madDoEventDelete
madEventDelete
madWaitQCreate
madWaitQDelete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
TIP
以上函数可能导致线程阻塞。