?? stm32f10x_usart.txt
字號:
00011a 8181 STRH r1,[r0,#0xc]
;;;260 }
;;;261 else
;;;262 {
;;;263 /* Disable the selected USART by clearing the RUN bit in the CR1 register */
;;;264 USARTx->CR1 &= CR1_RUN_Reset;
;;;265 }
;;;266 }
00011c 4770 BX lr
|L1.286|
00011e 8981 LDRH r1,[r0,#0xc]
000120 f421f421 BIC r1,r1,#0x2000
000124 8181 STRH r1,[r0,#0xc]
000126 4770 BX lr
;;;267
ENDP
USART_ITConfig PROC
;;;298 /* Get the USART register index */
;;;299 usartreg = (((u8)USART_IT) >> 0x05);
000128 f3c1f3c1 UBFX r3,r1,#5,#3
;;;300
;;;301 /* Get the interrupt position */
;;;302 itpos = USART_IT & USART_IT_Mask;
00012c f001f001 AND r1,r1,#0x1f
;;;303
;;;304 itmask = (((u32)0x01) << itpos);
000130 f04ff04f MOV r12,#1
000134 fa0cfa0c LSL r1,r12,r1
;;;305 address = *(u32*)&(USARTx);
;;;306
;;;307 if (usartreg == 0x01) /* The IT is in CR1 register */
000138 2b01 CMP r3,#1
00013a d101 BNE |L1.320|
;;;308 {
;;;309 address += 0x0C;
00013c 300c ADDS r0,r0,#0xc
00013e e004 B |L1.330|
|L1.320|
;;;310 }
;;;311 else if (usartreg == 0x02) /* The IT is in CR2 register */
000140 2b02 CMP r3,#2
000142 d101 BNE |L1.328|
;;;312 {
;;;313 address += 0x10;
000144 3010 ADDS r0,r0,#0x10
000146 e000 B |L1.330|
|L1.328|
;;;314 }
;;;315 else /* The IT is in CR3 register */
;;;316 {
;;;317 address += 0x14;
000148 3014 ADDS r0,r0,#0x14
|L1.330|
;;;318 }
;;;319 if (NewState != DISABLE)
00014a b11a CBZ r2,|L1.340|
;;;320 {
;;;321 *(u32*)address |= itmask;
00014c 6802 LDR r2,[r0,#0]
00014e 4311 ORRS r1,r1,r2
000150 6001 STR r1,[r0,#0]
;;;322 }
;;;323 else
;;;324 {
;;;325 *(u32*)address &= ~itmask;
;;;326 }
;;;327 }
000152 4770 BX lr
|L1.340|
000154 6802 LDR r2,[r0,#0]
000156 ea22ea22 BIC r1,r2,r1
00015a 6001 STR r1,[r0,#0]
00015c 4770 BX lr
;;;328
ENDP
USART_DMACmd PROC
;;;348
;;;349 if (NewState != DISABLE)
00015e b11a CBZ r2,|L1.360|
;;;350 {
;;;351 /* Enable the DMA transfer for selected requests by setting the DMAT and/or
;;;352 DMAR bits in the USART CR3 register */
;;;353 USARTx->CR3 |= USART_DMAReq;
000160 8a82 LDRH r2,[r0,#0x14]
000162 4311 ORRS r1,r1,r2
000164 8281 STRH r1,[r0,#0x14]
;;;354 }
;;;355 else
;;;356 {
;;;357 /* Disable the DMA transfer for selected requests by clearing the DMAT and/or
;;;358 DMAR bits in the USART CR3 register */
;;;359 USARTx->CR3 &= (u16)~USART_DMAReq;
;;;360 }
;;;361 }
000166 4770 BX lr
|L1.360|
000168 8a82 LDRH r2,[r0,#0x14]
00016a ea22ea22 BIC r1,r2,r1
00016e 8281 STRH r1,[r0,#0x14]
000170 4770 BX lr
;;;362
ENDP
USART_SetAddress PROC
;;;377 /* Clear the USART address */
;;;378 USARTx->CR2 &= CR2_Address_Mask;
000172 8a02 LDRH r2,[r0,#0x10]
000174 f022f022 BIC r2,r2,#0xf
000178 8202 STRH r2,[r0,#0x10]
;;;379 /* Set the USART address node */
;;;380 USARTx->CR2 |= USART_Address;
00017a 8a02 LDRH r2,[r0,#0x10]
00017c 4311 ORRS r1,r1,r2
00017e 8201 STRH r1,[r0,#0x10]
;;;381 }
000180 4770 BX lr
;;;382
ENDP
USART_WakeUpConfig PROC
;;;399
;;;400 USARTx->CR1 &= CR3_WAKE_Mask;
000182 8982 LDRH r2,[r0,#0xc]
000184 f422f422 BIC r2,r2,#0x800
000188 8182 STRH r2,[r0,#0xc]
;;;401 USARTx->CR1 |= USART_WakeUp;
00018a 8982 LDRH r2,[r0,#0xc]
00018c 4311 ORRS r1,r1,r2
00018e 8181 STRH r1,[r0,#0xc]
;;;402 }
000190 4770 BX lr
;;;403
ENDP
USART_ReceiverWakeUpCmd PROC
;;;418
;;;419 if (NewState != DISABLE)
000192 b121 CBZ r1,|L1.414|
;;;420 {
;;;421 /* Enable the mute mode USART by setting the RWU bit in the CR1 register */
;;;422 USARTx->CR1 |= CR1_RWU_Set;
000194 8981 LDRH r1,[r0,#0xc]
000196 f041f041 ORR r1,r1,#2
00019a 8181 STRH r1,[r0,#0xc]
;;;423 }
;;;424 else
;;;425 {
;;;426 /* Disable the mute mode USART by clearing the RWU bit in the CR1 register */
;;;427 USARTx->CR1 &= CR1_RWU_Reset;
;;;428 }
;;;429 }
00019c 4770 BX lr
|L1.414|
00019e 8981 LDRH r1,[r0,#0xc]
0001a0 f021f021 BIC r1,r1,#2
0001a4 8181 STRH r1,[r0,#0xc]
0001a6 4770 BX lr
;;;430
ENDP
USART_LINBreakDetectLengthConfig PROC
;;;448
;;;449 USARTx->CR2 &= CR3_LBDL_Mask;
0001a8 8a02 LDRH r2,[r0,#0x10]
0001aa f022f022 BIC r2,r2,#0x20
0001ae 8202 STRH r2,[r0,#0x10]
;;;450 USARTx->CR2 |= USART_LINBreakDetectLength;
0001b0 8a02 LDRH r2,[r0,#0x10]
0001b2 4311 ORRS r1,r1,r2
0001b4 8201 STRH r1,[r0,#0x10]
;;;451 }
0001b6 4770 BX lr
;;;452
ENDP
USART_LINCmd PROC
;;;467
;;;468 if (NewState != DISABLE)
0001b8 b121 CBZ r1,|L1.452|
;;;469 {
;;;470 /* Enable the LIN mode by setting the LINE bit in the CR2 register */
;;;471 USARTx->CR2 |= CR2_LINE_Set;
0001ba 8a01 LDRH r1,[r0,#0x10]
0001bc f441f441 ORR r1,r1,#0x4000
0001c0 8201 STRH r1,[r0,#0x10]
;;;472 }
;;;473 else
;;;474 {
;;;475 /* Disable the LIN mode by clearing the LINE bit in the CR2 register */
;;;476 USARTx->CR2 &= CR2_LINE_Reset;
;;;477 }
;;;478 }
0001c2 4770 BX lr
|L1.452|
0001c4 8a01 LDRH r1,[r0,#0x10]
0001c6 f421f421 BIC r1,r1,#0x4000
0001ca 8201 STRH r1,[r0,#0x10]
0001cc 4770 BX lr
;;;479
ENDP
USART_SendData PROC
;;;494 /* Transmit Data */
;;;495 USARTx->DR = (Data & (u16)0x01FF);
0001ce f3c1f3c1 UBFX r1,r1,#0,#9
0001d2 8081 STRH r1,[r0,#4]
;;;496 }
0001d4 4770 BX lr
;;;497
ENDP
USART_ReceiveData PROC
;;;508 /* Receive Data */
;;;509 return (u16)(USARTx->DR & (u16)0x01FF);
0001d6 8880 LDRH r0,[r0,#4]
0001d8 f3c0f3c0 UBFX r0,r0,#0,#9
;;;510 }
0001dc 4770 BX lr
;;;511
ENDP
USART_SendBreak PROC
;;;522 /* Send break characters */
;;;523 USARTx->CR1 |= CR1_SBK_Set;
0001de 8981 LDRH r1,[r0,#0xc]
0001e0 f041f041 ORR r1,r1,#1
0001e4 8181 STRH r1,[r0,#0xc]
;;;524 }
0001e6 4770 BX lr
;;;525
ENDP
USART_SetGuardTime PROC
;;;537 /* Clear the USART Guard time */
;;;538 USARTx->GTPR &= GTPR_LSB_Mask;
0001e8 8b02 LDRH r2,[r0,#0x18]
0001ea b2d2 UXTB r2,r2
0001ec 8302 STRH r2,[r0,#0x18]
;;;539 /* Set the USART guard time */
;;;540 USARTx->GTPR |= (u16)((u16)USART_GuardTime << 0x08);
0001ee 8b02 LDRH r2,[r0,#0x18]
0001f0 ea42ea42 ORR r1,r2,r1,LSL #8
0001f4 8301 STRH r1,[r0,#0x18]
;;;541 }
0001f6 4770 BX lr
;;;542
ENDP
USART_SetPrescaler PROC
;;;554 /* Clear the USART prescaler */
;;;555 USARTx->GTPR &= GTPR_MSB_Mask;
0001f8 8b02 LDRH r2,[r0,#0x18]
0001fa f402f402 AND r2,r2,#0xff00
0001fe 8302 STRH r2,[r0,#0x18]
;;;556 /* Set the USART prescaler */
;;;557 USARTx->GTPR |= USART_Prescaler;
000200 8b02 LDRH r2,[r0,#0x18]
000202 4311 ORRS r1,r1,r2
000204 8301 STRH r1,[r0,#0x18]
;;;558 }
000206 4770 BX lr
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -