📄 uart.lst
字号:
###############################################################################
# #
# IAR ANSI C/C++ Compiler V6.10.1.52143/W32 for ARM 16/Apr/2011 20:57:48 #
# Copyright 1999-2010 IAR Systems AB. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\src\Sources\C\Component_C\ua #
# rt.c #
# Command line = "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\src\Sources\C\Component_C\ua #
# rt.c" -D IAR -D TWR_K60N512 -lCN #
# "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\bin\Ram\List\" -lB #
# "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\bin\Ram\List\" -o #
# "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\bin\Ram\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 #
# D:\iar\arm\INC\c\DLib_Config_Normal.h -I #
# "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\src\Sources\H\" -I #
# "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\src\Sources\H\Component_H\" #
# -I "E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\src\Sources\H\Frame_H\" -Ol #
# --use_c++_inline #
# List file = E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\bin\Ram\List\uart.lst #
# Object file = E:\Project\15_K60\03_Software\02_My #
# program\K60_IAR\03_uart_int\bin\Ram\Obj\uart.o #
# #
# #
###############################################################################
E:\Project\15_K60\03_Software\02_My program\K60_IAR\03_uart_int\src\Sources\C\Component_C\uart.c
1 //-------------------------------------------------------------------------*
2 // 文件名: uart.c *
3 // 说 明: uart构件源文件 *
4 //-------------------------------------------------------------------------*
5
6 #include "uart.h"
7
8 //-------------------------------------------------------------------------*
9 //函数名: uart_init *
10 //功 能: 初始化uartx模块。 *
11 //参 数: uartch:串口号 *
12 // sysclk:系统总线时钟,以MHz为单位 *
13 // baud:波特率,如9600,38400等,一般来说,速度越慢,通信越稳 *
14 //返 回: 无 *
15 //说 明: *
16 //-------------------------------------------------------------------------*
\ In section .text, align 2, keep-with-next
17 void uart_init (UART_MemMapPtr uartch, uint32 sysclk, uint32 baud)
18 {
\ uart_init:
\ 00000000 30B4 PUSH {R4,R5}
19 register uint16 sbr, brfa;
20 uint8 temp;
21
22 //使能引脚
23 if (uartch == UART0_BASE_PTR)
\ 00000002 .... LDR.N R3,??DataTable0 ;; 0x4006a000
\ 00000004 9842 CMP R0,R3
\ 00000006 08D1 BNE.N ??uart_init_0
24 {
25 //在PTD6上使能UART0_TXD功能
26 PORTD_PCR6 = PORT_PCR_MUX(0x3);
\ 00000008 .... LDR.N R3,??DataTable0_1 ;; 0x4004c018
\ 0000000A 4FF44074 MOV R4,#+768
\ 0000000E 1C60 STR R4,[R3, #+0]
27 //在PTD7上使能UART0_RXD
28 PORTD_PCR7 = PORT_PCR_MUX(0x3);
\ 00000010 .... LDR.N R3,??DataTable0_2 ;; 0x4004c01c
\ 00000012 4FF44074 MOV R4,#+768
\ 00000016 1C60 STR R4,[R3, #+0]
\ 00000018 3AE0 B.N ??uart_init_1
29 }else if (uartch == UART1_BASE_PTR)
\ ??uart_init_0:
\ 0000001A .... LDR.N R3,??DataTable0_3 ;; 0x4006b000
\ 0000001C 9842 CMP R0,R3
\ 0000001E 08D1 BNE.N ??uart_init_2
30 {
31 //在PTC4上使能UART1_TXD功能
32 PORTC_PCR4 = PORT_PCR_MUX(0x3);
\ 00000020 .... LDR.N R3,??DataTable0_4 ;; 0x4004b010
\ 00000022 4FF44074 MOV R4,#+768
\ 00000026 1C60 STR R4,[R3, #+0]
33
34 //在PTC3上使能UART1_RXD
35 PORTC_PCR3 = PORT_PCR_MUX(0x3);
\ 00000028 .... LDR.N R3,??DataTable0_5 ;; 0x4004b00c
\ 0000002A 4FF44074 MOV R4,#+768
\ 0000002E 1C60 STR R4,[R3, #+0]
\ 00000030 2EE0 B.N ??uart_init_1
36 }else if (uartch == UART2_BASE_PTR)
\ ??uart_init_2:
\ 00000032 .... LDR.N R3,??DataTable0_6 ;; 0x4006c000
\ 00000034 9842 CMP R0,R3
\ 00000036 08D1 BNE.N ??uart_init_3
37 {
38 //在PTD3上使能UART2_TXD功能
39 PORTD_PCR3 = PORT_PCR_MUX(0x3);
\ 00000038 .... LDR.N R3,??DataTable0_7 ;; 0x4004c00c
\ 0000003A 4FF44074 MOV R4,#+768
\ 0000003E 1C60 STR R4,[R3, #+0]
40 //在PTD2上使能UART2_RXD
41 PORTD_PCR2 = PORT_PCR_MUX(0x3);
\ 00000040 .... LDR.N R3,??DataTable0_8 ;; 0x4004c008
\ 00000042 4FF44074 MOV R4,#+768
\ 00000046 1C60 STR R4,[R3, #+0]
\ 00000048 22E0 B.N ??uart_init_1
42 }else if (uartch == UART3_BASE_PTR)
\ ??uart_init_3:
\ 0000004A .... LDR.N R3,??DataTable0_9 ;; 0x4006d000
\ 0000004C 9842 CMP R0,R3
\ 0000004E 08D1 BNE.N ??uart_init_4
43 {
44 //在PTC17上使能UART3_TXD功能
45 PORTC_PCR17 = PORT_PCR_MUX(0x3);
\ 00000050 .... LDR.N R3,??DataTable0_10 ;; 0x4004b044
\ 00000052 4FF44074 MOV R4,#+768
\ 00000056 1C60 STR R4,[R3, #+0]
46 //在PTC16上使能UART3_RXD
47 PORTC_PCR16 = PORT_PCR_MUX(0x3);
\ 00000058 .... LDR.N R3,??DataTable0_11 ;; 0x4004b040
\ 0000005A 4FF44074 MOV R4,#+768
\ 0000005E 1C60 STR R4,[R3, #+0]
\ 00000060 16E0 B.N ??uart_init_1
48 }else if (uartch == UART4_BASE_PTR)
\ ??uart_init_4:
\ 00000062 .... LDR.N R3,??DataTable0_12 ;; 0x400ea000
\ 00000064 9842 CMP R0,R3
\ 00000066 08D1 BNE.N ??uart_init_5
49 {
50 //在PTE24上使能UART4_TXD功能
51 PORTE_PCR24 = PORT_PCR_MUX(0x3);
\ 00000068 .... LDR.N R3,??DataTable0_13 ;; 0x4004d060
\ 0000006A 4FF44074 MOV R4,#+768
\ 0000006E 1C60 STR R4,[R3, #+0]
52 //在PTE25上使能UART4_RXD
53 PORTE_PCR25 = PORT_PCR_MUX(0x3);
\ 00000070 .... LDR.N R3,??DataTable0_14 ;; 0x4004d064
\ 00000072 4FF44074 MOV R4,#+768
\ 00000076 1C60 STR R4,[R3, #+0]
\ 00000078 0AE0 B.N ??uart_init_1
54 }else if (uartch == UART5_BASE_PTR)
\ ??uart_init_5:
\ 0000007A .... LDR.N R3,??DataTable0_15 ;; 0x400eb000
\ 0000007C 9842 CMP R0,R3
\ 0000007E 07D1 BNE.N ??uart_init_1
55 {
56 //在PTE8上使能UART5_TXD功能
57 PORTE_PCR8 = PORT_PCR_MUX(0x3);
\ 00000080 .... LDR.N R3,??DataTable0_16 ;; 0x4004d020
\ 00000082 4FF44074 MOV R4,#+768
\ 00000086 1C60 STR R4,[R3, #+0]
58 //在PTE9上使能UART5_RXD
59 PORTE_PCR9 = PORT_PCR_MUX(0x3);
\ 00000088 .... LDR.N R3,??DataTable0_17 ;; 0x4004d024
\ 0000008A 4FF44074 MOV R4,#+768
\ 0000008E 1C60 STR R4,[R3, #+0]
60 }
61
62 //使能串口时钟
63 if(uartch == UART0_BASE_PTR)
\ ??uart_init_1:
\ 00000090 .... LDR.N R3,??DataTable0 ;; 0x4006a000
\ 00000092 9842 CMP R0,R3
\ 00000094 06D1 BNE.N ??uart_init_6
64 SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;
\ 00000096 .... LDR.N R3,??DataTable0_18 ;; 0x40048034
\ 00000098 1B68 LDR R3,[R3, #+0]
\ 0000009A 53F48063 ORRS R3,R3,#0x400
\ 0000009E .... LDR.N R4,??DataTable0_18 ;; 0x40048034
\ 000000A0 2360 STR R3,[R4, #+0]
\ 000000A2 2DE0 B.N ??uart_init_7
65 else
66 if (uartch == UART1_BASE_PTR)
\ ??uart_init_6:
\ 000000A4 .... LDR.N R3,??DataTable0_3 ;; 0x4006b000
\ 000000A6 9842 CMP R0,R3
\ 000000A8 06D1 BNE.N ??uart_init_8
67 SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;
\ 000000AA .... LDR.N R3,??DataTable0_18 ;; 0x40048034
\ 000000AC 1B68 LDR R3,[R3, #+0]
\ 000000AE 53F40063 ORRS R3,R3,#0x800
\ 000000B2 .... LDR.N R4,??DataTable0_18 ;; 0x40048034
\ 000000B4 2360 STR R3,[R4, #+0]
\ 000000B6 23E0 B.N ??uart_init_7
68 else
69 if (uartch == UART2_BASE_PTR)
\ ??uart_init_8:
\ 000000B8 .... LDR.N R3,??DataTable0_6 ;; 0x4006c000
\ 000000BA 9842 CMP R0,R3
\ 000000BC 06D1 BNE.N ??uart_init_9
70 SIM_SCGC4 |= SIM_SCGC4_UART2_MASK;
\ 000000BE .... LDR.N R3,??DataTable0_18 ;; 0x40048034
\ 000000C0 1B68 LDR R3,[R3, #+0]
\ 000000C2 53F48053 ORRS R3,R3,#0x1000
\ 000000C6 .... LDR.N R4,??DataTable0_18 ;; 0x40048034
\ 000000C8 2360 STR R3,[R4, #+0]
\ 000000CA 19E0 B.N ??uart_init_7
71 else
72 if(uartch == UART3_BASE_PTR)
\ ??uart_init_9:
\ 000000CC .... LDR.N R3,??DataTable0_9 ;; 0x4006d000
\ 000000CE 9842 CMP R0,R3
\ 000000D0 06D1 BNE.N ??uart_init_10
73 SIM_SCGC4 |= SIM_SCGC4_UART3_MASK;
\ 000000D2 .... LDR.N R3,??DataTable0_18 ;; 0x40048034
\ 000000D4 1B68 LDR R3,[R3, #+0]
\ 000000D6 53F40053 ORRS R3,R3,#0x2000
\ 000000DA .... LDR.N R4,??DataTable0_18 ;; 0x40048034
\ 000000DC 2360 STR R3,[R4, #+0]
\ 000000DE 0FE0 B.N ??uart_init_7
74 else
75 if(uartch == UART4_BASE_PTR)
\ ??uart_init_10:
\ 000000E0 .... LDR.N R3,??DataTable0_12 ;; 0x400ea000
\ 000000E2 9842 CMP R0,R3
\ 000000E4 06D1 BNE.N ??uart_init_11
76 SIM_SCGC1 |= SIM_SCGC1_UART4_MASK;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -