common.lst
来自「Cortex-M4+example」· LST 代码 · 共 417 行 · 第 1/2 页
LST
417 行
83 }
\ ??enable_irq_4:
\ 0000008E 7047 BX LR ;; return
84
85 //-------------------------------------------------------------------------*
86 //函数名: disable_irq *
87 //功 能: 禁止irq中断 *
88 //参 数: irq:irq号 *
89 //返 回: 无 *
90 //说 明: irq号不是中断向量号 *
91 //-------------------------------------------------------------------------*
\ In section .text, align 2, keep-with-next
92 void disable_irq (int irq)
93 {
94 int div;
95
96 //确定irq号为有效的irq号
97 if (irq > 91) irq=91;
\ disable_irq:
\ 00000000 5C28 CMP R0,#+92
\ 00000002 00DB BLT.N ??disable_irq_0
\ 00000004 5B20 MOVS R0,#+91
98
99 //确定对应的NVICISER
100 div = irq/32;
\ ??disable_irq_0:
\ 00000006 2021 MOVS R1,#+32
\ 00000008 90FBF1F1 SDIV R1,R0,R1
101
102 switch (div)
\ 0000000C 0029 CMP R1,#+0
\ 0000000E 03D0 BEQ.N ??disable_irq_1
\ 00000010 0229 CMP R1,#+2
\ 00000012 17D0 BEQ.N ??disable_irq_2
\ 00000014 0BD3 BCC.N ??disable_irq_3
\ 00000016 1FE0 B.N ??disable_irq_4
103 {
104 case 0x0:
105 NVICICER0 = 1 << (irq%32);
\ ??disable_irq_1:
\ 00000018 0121 MOVS R1,#+1
\ 0000001A 2022 MOVS R2,#+32
\ 0000001C 90FBF2F3 SDIV R3,R0,R2
\ 00000020 03FB1203 MLS R3,R3,R2,R0
\ 00000024 11FA03F0 LSLS R0,R1,R3
\ 00000028 .... LDR.N R1,??DataTable5_8 ;; 0xe000e180
\ 0000002A 0860 STR R0,[R1, #+0]
106 break;
\ 0000002C 14E0 B.N ??disable_irq_4
107 case 0x1:
108 NVICICER1 = 1 << (irq%32);
\ ??disable_irq_3:
\ 0000002E 0121 MOVS R1,#+1
\ 00000030 2022 MOVS R2,#+32
\ 00000032 90FBF2F3 SDIV R3,R0,R2
\ 00000036 03FB1203 MLS R3,R3,R2,R0
\ 0000003A 11FA03F0 LSLS R0,R1,R3
\ 0000003E .... LDR.N R1,??DataTable5_9 ;; 0xe000e184
\ 00000040 0860 STR R0,[R1, #+0]
109 break;
\ 00000042 09E0 B.N ??disable_irq_4
110 case 0x2:
111 NVICICER2 = 1 << (irq%32);
\ ??disable_irq_2:
\ 00000044 0121 MOVS R1,#+1
\ 00000046 2022 MOVS R2,#+32
\ 00000048 90FBF2F3 SDIV R3,R0,R2
\ 0000004C 03FB1203 MLS R3,R3,R2,R0
\ 00000050 11FA03F0 LSLS R0,R1,R3
\ 00000054 .... LDR.N R1,??DataTable5_10 ;; 0xe000e188
\ 00000056 0860 STR R0,[R1, #+0]
112 break;
113 }
114 }
\ ??disable_irq_4:
\ 00000058 7047 BX LR ;; return
115
116 //-------------------------------------------------------------------------*
117 //函数名: set_irq_priority *
118 //功 能: 设置irq中断和优先级 *
119 //参 数: irq:irq号 *
120 // prio:优先级 *
121 //返 回: 无 *
122 //说 明: irq号不是中断向量号 *
123 //-------------------------------------------------------------------------*
\ In section .text, align 2, keep-with-next
124 void set_irq_priority (int irq, int prio)
125 {
126 uint8 *prio_reg;
127
128 //确定irq号和优先级有效
129 if (irq > 91) irq=91;
\ set_irq_priority:
\ 00000000 5C28 CMP R0,#+92
\ 00000002 00DB BLT.N ??set_irq_priority_0
\ 00000004 5B20 MOVS R0,#+91
130 if (prio > 15) prio=15;
\ ??set_irq_priority_0:
\ 00000006 1029 CMP R1,#+16
\ 00000008 00DB BLT.N ??set_irq_priority_1
\ 0000000A 0F21 MOVS R1,#+15
131
132 //确定对应的NVICISER
133 prio_reg = (uint8 *)(((uint32)&NVICIP0) + irq);
\ ??set_irq_priority_1:
\ 0000000C .... LDR.N R2,??DataTable5_11 ;; 0xe000e400
\ 0000000E 1018 ADDS R0,R2,R0
134 //设置优先级
135 *prio_reg = ( (prio&0xF) << (8 - ARM_INTERRUPT_LEVEL_BITS) );
\ 00000010 0901 LSLS R1,R1,#+4
\ 00000012 0170 STRB R1,[R0, #+0]
136 }
\ 00000014 7047 BX LR ;; return
\ In section .text, align 4, keep-with-next
\ ??DataTable5:
\ 00000000 10ED00E0 DC32 0xe000ed10
\ In section .text, align 4, keep-with-next
\ ??DataTable5_1:
\ 00000000 08ED00E0 DC32 0xe000ed08
\ In section .text, align 4, keep-with-next
\ ??DataTable5_2:
\ 00000000 80E200E0 DC32 0xe000e280
\ In section .text, align 4, keep-with-next
\ ??DataTable5_3:
\ 00000000 00E100E0 DC32 0xe000e100
\ In section .text, align 4, keep-with-next
\ ??DataTable5_4:
\ 00000000 84E200E0 DC32 0xe000e284
\ In section .text, align 4, keep-with-next
\ ??DataTable5_5:
\ 00000000 04E100E0 DC32 0xe000e104
\ In section .text, align 4, keep-with-next
\ ??DataTable5_6:
\ 00000000 88E200E0 DC32 0xe000e288
\ In section .text, align 4, keep-with-next
\ ??DataTable5_7:
\ 00000000 08E100E0 DC32 0xe000e108
\ In section .text, align 4, keep-with-next
\ ??DataTable5_8:
\ 00000000 80E100E0 DC32 0xe000e180
\ In section .text, align 4, keep-with-next
\ ??DataTable5_9:
\ 00000000 84E100E0 DC32 0xe000e184
\ In section .text, align 4, keep-with-next
\ ??DataTable5_10:
\ 00000000 88E100E0 DC32 0xe000e188
\ In section .text, align 4, keep-with-next
\ ??DataTable5_11:
\ 00000000 00E400E0 DC32 0xe000e400
137
Maximum stack usage in bytes:
Function .cstack
-------- -------
disable_irq 0
enable_irq 0
set_irq_priority 0
stop 0
wait 0
write_vtor 0
Section sizes:
Function/Label Bytes
-------------- -----
stop 16
wait 16
write_vtor 6
enable_irq 144
disable_irq 90
set_irq_priority 22
??DataTable5 4
??DataTable5_1 4
??DataTable5_2 4
??DataTable5_3 4
??DataTable5_4 4
??DataTable5_5 4
??DataTable5_6 4
??DataTable5_7 4
??DataTable5_8 4
??DataTable5_9 4
??DataTable5_10 4
??DataTable5_11 4
342 bytes in section .text
342 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?