?? common.lst
字號:
###############################################################################
# #
# IAR ANSI C/C++ Compiler V6.40.1.53790/W32 for ARM 09/Aug/2012 10:07:32 #
# Copyright 1999-2012 IAR Systems AB. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = C:\Users\305030973\Desktop\M4 #
# example\01_light\src\Sources\C\Frame_C\common.c #
# Command line = "C:\Users\305030973\Desktop\M4 #
# example\01_light\src\Sources\C\Frame_C\common.c" -D IAR #
# -D TWR_K60N512 -lCN "C:\Users\305030973\Desktop\M4 #
# example\01_light\bin\Flash\List\" -lB #
# "C:\Users\305030973\Desktop\M4 #
# example\01_light\bin\Flash\List\" -o #
# "C:\Users\305030973\Desktop\M4 #
# example\01_light\bin\Flash\Obj\" --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian=little --cpu=Cortex-M4 #
# -e --fpu=None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 6.4_2\arm\INC\c\DLib_Config_N #
# ormal.h" -I "C:\Users\305030973\Desktop\M4 #
# example\01_light\src\Sources\H\" -I #
# "C:\Users\305030973\Desktop\M4 #
# example\01_light\src\Sources\H\Component_H\" -I #
# "C:\Users\305030973\Desktop\M4 #
# example\01_light\src\Sources\H\Frame_H\" -I "C:\Program #
# Files\IAR Systems\Embedded Workbench 6.4_2\arm\INC\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 6.4_2\arm\INC\CLIB\" -Ol --use_c++_inline #
# List file = C:\Users\305030973\Desktop\M4 #
# example\01_light\bin\Flash\List\common.lst #
# Object file = C:\Users\305030973\Desktop\M4 #
# example\01_light\bin\Flash\Obj\common.o #
# #
# #
###############################################################################
C:\Users\305030973\Desktop\M4 example\01_light\src\Sources\C\Frame_C\common.c
1 //-------------------------------------------------------------------------*
2 // 文件名: common.h (通用頭文件) *
3 // 說 明: *
4 //-------------------------------------------------------------------------*
5
6 #include "common.h"
7
8 //-------------------------------------------------------------------------*
9 //函數名: stop *
10 //功 能: 設置CPU為STOP模式 *
11 //參 數: 無 *
12 //返 回: 無 *
13 //說 明: 無 *
14 //-------------------------------------------------------------------------*
\ In section .text, align 4, keep-with-next
15 void stop (void)
16 {
17 //置位SLEEPDEEP來使能STOP模式
18 SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;
\ stop:
\ 00000000 0x.... LDR.N R0,??DataTable4 ;; 0xe000ed10
\ 00000002 0x6800 LDR R0,[R0, #+0]
\ 00000004 0xF050 0x0004 ORRS R0,R0,#0x4
\ 00000008 0x.... LDR.N R1,??DataTable4 ;; 0xe000ed10
\ 0000000A 0x6008 STR R0,[R1, #+0]
19 //進入STOP模式
20 asm("WFI");
\ 0000000C 0xBF30 WFI
21 }
\ 0000000E 0x4770 BX LR ;; return
22
23 //-------------------------------------------------------------------------*
24 //函數名: wait *
25 //功 能: 設置CPU為WAIT模式 *
26 //參 數: 無 *
27 //返 回: 無 *
28 //說 明: 無 *
29 //-------------------------------------------------------------------------*
\ In section .text, align 4, keep-with-next
30 void wait (void)
31 {
32 //清SLEEPDEEP位來確定進入WAIT模式
33 SCB_SCR &= ~SCB_SCR_SLEEPDEEP_MASK;
\ wait:
\ 00000000 0x.... LDR.N R0,??DataTable4 ;; 0xe000ed10
\ 00000002 0x6800 LDR R0,[R0, #+0]
\ 00000004 0xF030 0x0004 BICS R0,R0,#0x4
\ 00000008 0x.... LDR.N R1,??DataTable4 ;; 0xe000ed10
\ 0000000A 0x6008 STR R0,[R1, #+0]
34 //進入WAIT模式
35 asm("WFI");
\ 0000000C 0xBF30 WFI
36 }
\ 0000000E 0x4770 BX LR ;; return
37
38 //-------------------------------------------------------------------------*
39 //函數名: write_vtor *
40 //功 能: 更改中斷向量表偏移寄存器的值 *
41 //參 數: 要更改的值 *
42 //返 回: 無 *
43 //說 明: 無 *
44 //-------------------------------------------------------------------------*
\ In section .text, align 2, keep-with-next
45 void write_vtor (int vtor)
46 {
47 //寫新值
48 SCB_VTOR = vtor;
\ write_vtor:
\ 00000000 0x.... LDR.N R1,??DataTable4_1 ;; 0xe000ed08
\ 00000002 0x6008 STR R0,[R1, #+0]
49 }
\ 00000004 0x4770 BX LR ;; return
50
51 //-------------------------------------------------------------------------*
52 //函數名: enable_irq *
53 //功 能: 使能irq中斷 *
54 //參 數: irq:irq號 *
55 //返 回: 無 *
56 //說 明: irq號不是中斷向量號 *
57 //-------------------------------------------------------------------------*
\ In section .text, align 2, keep-with-next
58 void enable_irq (int irq)
59 {
60 int div;
61
62 //確定irq號為有效的irq號
63 if (irq > 91) irq=91;
\ enable_irq:
\ 00000000 0x285C CMP R0,#+92
\ 00000002 0xDB00 BLT.N ??enable_irq_0
\ 00000004 0x205B MOVS R0,#+91
64
65 //確定對應的NVICISER
66 div = irq/32;
\ ??enable_irq_0:
\ 00000006 0x2120 MOVS R1,#+32
\ 00000008 0xFB90 0xF1F1 SDIV R1,R0,R1
67
68 switch (div)
\ 0000000C 0x2900 CMP R1,#+0
\ 0000000E 0xD003 BEQ.N ??enable_irq_1
\ 00000010 0x2902 CMP R1,#+2
\ 00000012 0xD029 BEQ.N ??enable_irq_2
\ 00000014 0xD314 BCC.N ??enable_irq_3
\ 00000016 0xE03A B.N ??enable_irq_4
69 {
70 case 0x0:
71 NVICICPR0 = 1 << (irq%32);
\ ??enable_irq_1:
\ 00000018 0x2101 MOVS R1,#+1
\ 0000001A 0x2220 MOVS R2,#+32
\ 0000001C 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 00000020 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 00000024 0x4099 LSLS R1,R1,R3
\ 00000026 0x.... LDR.N R2,??DataTable4_2 ;; 0xe000e280
\ 00000028 0x6011 STR R1,[R2, #+0]
72 NVICISER0 = 1 << (irq%32);
\ 0000002A 0x2101 MOVS R1,#+1
\ 0000002C 0x2220 MOVS R2,#+32
\ 0000002E 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 00000032 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 00000036 0xFA11 0xF003 LSLS R0,R1,R3
\ 0000003A 0x.... LDR.N R1,??DataTable4_3 ;; 0xe000e100
\ 0000003C 0x6008 STR R0,[R1, #+0]
73 break;
\ 0000003E 0xE026 B.N ??enable_irq_4
74 case 0x1:
75 NVICICPR1 = 1 << (irq%32);
\ ??enable_irq_3:
\ 00000040 0x2101 MOVS R1,#+1
\ 00000042 0x2220 MOVS R2,#+32
\ 00000044 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 00000048 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 0000004C 0x4099 LSLS R1,R1,R3
\ 0000004E 0x.... LDR.N R2,??DataTable4_4 ;; 0xe000e284
\ 00000050 0x6011 STR R1,[R2, #+0]
76 NVICISER1 = 1 << (irq%32);
\ 00000052 0x2101 MOVS R1,#+1
\ 00000054 0x2220 MOVS R2,#+32
\ 00000056 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 0000005A 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 0000005E 0xFA11 0xF003 LSLS R0,R1,R3
\ 00000062 0x.... LDR.N R1,??DataTable4_5 ;; 0xe000e104
\ 00000064 0x6008 STR R0,[R1, #+0]
77 break;
\ 00000066 0xE012 B.N ??enable_irq_4
78 case 0x2:
79 NVICICPR2 = 1 << (irq%32);
\ ??enable_irq_2:
\ 00000068 0x2101 MOVS R1,#+1
\ 0000006A 0x2220 MOVS R2,#+32
\ 0000006C 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 00000070 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 00000074 0x4099 LSLS R1,R1,R3
\ 00000076 0x.... LDR.N R2,??DataTable4_6 ;; 0xe000e288
\ 00000078 0x6011 STR R1,[R2, #+0]
80 NVICISER2 = 1 << (irq%32);
\ 0000007A 0x2101 MOVS R1,#+1
\ 0000007C 0x2220 MOVS R2,#+32
\ 0000007E 0xFB90 0xF3F2 SDIV R3,R0,R2
\ 00000082 0xFB03 0x0312 MLS R3,R3,R2,R0
\ 00000086 0xFA11 0xF003 LSLS R0,R1,R3
\ 0000008A 0x.... LDR.N R1,??DataTable4_7 ;; 0xe000e108
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -