📄 uart.lst
字号:
\ In segment CODE, align 4, keep-with-next
96 void UART_FifoConfig(UART_TypeDef *UARTx, FunctionalState NewState)
97 {
98 if (NewState==ENABLE) UARTx->CR|=0x0400; else UARTx->CR&=~0x0400;
\ UART_FifoConfig:
\ 00000000 0129 CMP R1,#+0x1
\ 00000002 8189 LDRH R1,[R0, #+0xC]
\ 00000004 03D1 BNE ??UART_FifoConfig_0
\ 00000006 8022 MOV R2,#+0x80
\ 00000008 D200 LSL R2,R2,#+0x3 ;; #+0x400
\ 0000000A 0A43 ORR R2,R1
\ 0000000C 01E0 B ??UART_FifoConfig_1
\ ??UART_FifoConfig_0:
\ 0000000E 024A LDR R2,??UART_FifoConfig_2 ;; 0xfbff
\ 00000010 0A40 AND R2,R1
\ ??UART_FifoConfig_1:
\ 00000012 8281 STRH R2,[R0, #+0xC]
99 }
\ 00000014 00B0 ADD SP,#+0
\ 00000016 7047 BX LR ;; return
\ ??UART_FifoConfig_2:
\ 00000018 FFFB0000 DC32 0xfbff
100
101 /*******************************************************************************
102 * Function Name : UART_FifoReset
103 * Description : This function resets the Rx and the Tx FIFOs of the
104 * selected UART.
105 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
106 * Input 2 : UART_RxFIFO or UART_TxFIFO
107 * Output : None
108 * Return : None
109 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
110 void UART_FifoReset(UART_TypeDef *UARTx, UARTFIFO_TypeDef FIFO)
111 {
112 if (FIFO==UART_RxFIFO) UARTx->RxRSTR=0xFFFF; else UARTx->TxRSTR=0xFFFF;
\ UART_FifoReset:
\ 00000000 .... LDR R2,??DataTable1 ;; 0xffff
\ 00000002 0029 CMP R1,#+0
\ 00000004 01D1 BNE ??UART_FifoReset_0
\ 00000006 8284 STRH R2,[R0, #+0x24]
\ 00000008 00E0 B ??UART_FifoReset_1
\ ??UART_FifoReset_0:
\ 0000000A 0284 STRH R2,[R0, #+0x20]
113 }
\ ??UART_FifoReset_1:
\ 0000000C 00B0 ADD SP,#+0
\ 0000000E 7047 BX LR ;; return
114
115 /*******************************************************************************
116 * Function Name : UART_LoopBackConfig
117 * Description : This function enables or disables the loop back mode of
118 * the selected UART.
119 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
120 * Input 2 : ENABLE or DISABLE
121 * Output : None
122 * Return : None
123 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
124 void UART_LoopBackConfig(UART_TypeDef *UARTx, FunctionalState NewState)
125 {
126 if (NewState==ENABLE) UARTx->CR|=0x0040; else UARTx->CR&=~0x0040;
\ UART_LoopBackConfig:
\ 00000000 0129 CMP R1,#+0x1
\ 00000002 8189 LDRH R1,[R0, #+0xC]
\ 00000004 02D1 BNE ??UART_LoopBackConfig_0
\ 00000006 4022 MOV R2,#+0x40
\ 00000008 0A43 ORR R2,R1
\ 0000000A 01E0 B ??UART_LoopBackConfig_1
\ ??UART_LoopBackConfig_0:
\ 0000000C 024A LDR R2,??UART_LoopBackConfig_2 ;; 0xffbf
\ 0000000E 0A40 AND R2,R1
\ ??UART_LoopBackConfig_1:
\ 00000010 8281 STRH R2,[R0, #+0xC]
127 }
\ 00000012 00B0 ADD SP,#+0
\ 00000014 7047 BX LR ;; return
\ 00000016 C046 NOP
\ ??UART_LoopBackConfig_2:
\ 00000018 BFFF0000 DC32 0xffbf
128
129 /*******************************************************************************
130 * Function Name : UART_RxConfig
131 * Description : This function enables or disables the UART data reception.
132 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
133 * Input 2 : ENABLE or DISABLE
134 * Output : None
135 * Return : None
136 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
137 void UART_RxConfig(UART_TypeDef *UARTx, FunctionalState NewState)
138 {
139 if (NewState==ENABLE) UARTx->CR|=0x0100; else UARTx->CR&=~0x0100;
\ UART_RxConfig:
\ 00000000 0129 CMP R1,#+0x1
\ 00000002 8189 LDRH R1,[R0, #+0xC]
\ 00000004 03D1 BNE ??UART_RxConfig_0
\ 00000006 8022 MOV R2,#+0x80
\ 00000008 5200 LSL R2,R2,#+0x1 ;; #+0x100
\ 0000000A 0A43 ORR R2,R1
\ 0000000C 01E0 B ??UART_RxConfig_1
\ ??UART_RxConfig_0:
\ 0000000E 024A LDR R2,??UART_RxConfig_2 ;; 0xfeff
\ 00000010 0A40 AND R2,R1
\ ??UART_RxConfig_1:
\ 00000012 8281 STRH R2,[R0, #+0xC]
140 }
\ 00000014 00B0 ADD SP,#+0
\ 00000016 7047 BX LR ;; return
\ ??UART_RxConfig_2:
\ 00000018 FFFE0000 DC32 0xfeff
141
142 /*******************************************************************************
143 * Function Name : UART_OnOffConfig
144 * Description : This function sets On/Off the selected UART.
145 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
146 * Input 2 : ENABLE or DISABLE
147 * Output : None
148 * Return : None
149 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
150 void UART_OnOffConfig(UART_TypeDef *UARTx, FunctionalState NewState)
151 {
152 if (NewState==ENABLE) UARTx->CR|=0x0080; else UARTx->CR&=~0x0080;
\ UART_OnOffConfig:
\ 00000000 0129 CMP R1,#+0x1
\ 00000002 8189 LDRH R1,[R0, #+0xC]
\ 00000004 02D1 BNE ??UART_OnOffConfig_0
\ 00000006 8022 MOV R2,#+0x80
\ 00000008 0A43 ORR R2,R1
\ 0000000A 01E0 B ??UART_OnOffConfig_1
\ ??UART_OnOffConfig_0:
\ 0000000C 024A LDR R2,??UART_OnOffConfig_2 ;; 0xff7f
\ 0000000E 0A40 AND R2,R1
\ ??UART_OnOffConfig_1:
\ 00000010 8281 STRH R2,[R0, #+0xC]
153 }
\ 00000012 00B0 ADD SP,#+0
\ 00000014 7047 BX LR ;; return
\ 00000016 C046 NOP
\ ??UART_OnOffConfig_2:
\ 00000018 7FFF0000 DC32 0xff7f
154
155 /*******************************************************************************
156 * Function Name : UART_ByteSend
157 * Description : This function sends a data byte to the selected UART.
158 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
159 * Input 2 : A pointer to the data byte to send
160 * Output : None
161 * Return : None
162 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
163 void UART_ByteSend(UART_TypeDef *UARTx, u8 *Data)
164 {
165 if (UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
\ UART_ByteSend:
\ 00000000 8289 LDRH R2,[R0, #+0xC]
\ 00000002 5205 LSL R2,R2,#+0x15
\ 00000004 03D5 BPL ??UART_ByteSend_0
166 while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
\ ??UART_ByteSend_1:
\ 00000006 828A LDRH R2,[R0, #+0x14]
\ 00000008 9205 LSL R2,R2,#+0x16
\ 0000000A FCD4 BMI ??UART_ByteSend_1
\ 0000000C 02E0 B ??UART_ByteSend_2
167 else // if FIFO DISABLED
168 while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
\ ??UART_ByteSend_0:
\ 0000000E 828A LDRH R2,[R0, #+0x14]
\ 00000010 9207 LSL R2,R2,#+0x1E
\ 00000012 FCD5 BPL ??UART_ByteSend_0
169 UARTx->TxBUFR = *Data;
\ ??UART_ByteSend_2:
\ 00000014 0978 LDRB R1,[R1, #+0]
\ 00000016 8180 STRH R1,[R0, #+0x4]
170 }
\ 00000018 00B0 ADD SP,#+0
\ 0000001A 7047 BX LR ;; return
171
172 /*******************************************************************************
173 * Function Name : UART_9BitByteSend
174 * Description : This function sends a 9 bits data byte to the selected UART.
175 * Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
176 * Input 2 : A pointer to the data to send
177 * Output : None
178 * Return : None
179 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
180 void UART_9BitByteSend(UART_TypeDef *UARTx, u16 *Data)
181 {
182 if(UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
\ UART_9BitByteSend:
\ 00000000 8289 LDRH R2,[R0, #+0xC]
\ 00000002 5205 LSL R2,R2,#+0x15
\ 00000004 03D5 BPL ??UART_9BitByteSend_0
183 while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
\ ??UART_9BitByteSend_1:
\ 00000006 828A LDRH R2,[R0, #+0x14]
\ 00000008 9205 LSL R2,R2,#+0x16
\ 0000000A FCD4 BMI ??UART_9BitByteSend_1
\ 0000000C 02E0 B ??UART_9BitByteSend_2
184 else // if FIFO DISABLED
185 while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
\ ??UART_9BitByteSend_0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -