📄 stm32f10x_usart.txt
字号:
;;;635 USARTx->GTPR &= GTPR_LSB_Mask;
000224 8b02 LDRH r2,[r0,#0x18]
000226 b2d2 UXTB r2,r2
000228 8302 STRH r2,[r0,#0x18]
;;;636 /* Set the USART guard time */
;;;637 USARTx->GTPR |= (u16)((u16)USART_GuardTime << 0x08);
00022a 8b02 LDRH r2,[r0,#0x18]
00022c ea42ea42 ORR r1,r2,r1,LSL #8
000230 8301 STRH r1,[r0,#0x18]
;;;638 }
000232 4770 BX lr
;;;639
ENDP
USART_SetPrescaler PROC
;;;656 /* Clear the USART prescaler */
;;;657 USARTx->GTPR &= GTPR_MSB_Mask;
000234 8b02 LDRH r2,[r0,#0x18]
000236 f402f402 AND r2,r2,#0xff00
00023a 8302 STRH r2,[r0,#0x18]
;;;658 /* Set the USART prescaler */
;;;659 USARTx->GTPR |= USART_Prescaler;
00023c 8b02 LDRH r2,[r0,#0x18]
00023e 430a ORRS r2,r2,r1
000240 8302 STRH r2,[r0,#0x18]
;;;660 }
000242 4770 BX lr
;;;661
ENDP
USART_SmartCardCmd PROC
;;;678
;;;679 if (NewState != DISABLE)
000244 b121 CBZ r1,|L1.592|
;;;680 {
;;;681 /* Enable the SC mode by setting the SCEN bit in the CR3 register */
;;;682 USARTx->CR3 |= CR3_SCEN_Set;
000246 8a81 LDRH r1,[r0,#0x14]
000248 f041f041 ORR r1,r1,#0x20
00024c 8281 STRH r1,[r0,#0x14]
;;;683 }
;;;684 else
;;;685 {
;;;686 /* Disable the SC mode by clearing the SCEN bit in the CR3 register */
;;;687 USARTx->CR3 &= CR3_SCEN_Reset;
;;;688 }
;;;689 }
00024e 4770 BX lr
|L1.592|
000250 8a81 LDRH r1,[r0,#0x14] ;687
000252 f021f021 BIC r1,r1,#0x20 ;687
000256 8281 STRH r1,[r0,#0x14] ;687
000258 4770 BX lr
;;;690
ENDP
USART_SmartCardNACKCmd PROC
;;;707
;;;708 if (NewState != DISABLE)
00025a b121 CBZ r1,|L1.614|
;;;709 {
;;;710 /* Enable the NACK transmission by setting the NACK bit in the CR3 register */
;;;711 USARTx->CR3 |= CR3_NACK_Set;
00025c 8a81 LDRH r1,[r0,#0x14]
00025e f041f041 ORR r1,r1,#0x10
000262 8281 STRH r1,[r0,#0x14]
;;;712 }
;;;713 else
;;;714 {
;;;715 /* Disable the NACK transmission by clearing the NACK bit in the CR3 register */
;;;716 USARTx->CR3 &= CR3_NACK_Reset;
;;;717 }
;;;718 }
000264 4770 BX lr
|L1.614|
000266 8a81 LDRH r1,[r0,#0x14] ;716
000268 f021f021 BIC r1,r1,#0x10 ;716
00026c 8281 STRH r1,[r0,#0x14] ;716
00026e 4770 BX lr
;;;719
ENDP
USART_HalfDuplexCmd PROC
;;;736
;;;737 if (NewState != DISABLE)
000270 b121 CBZ r1,|L1.636|
;;;738 {
;;;739 /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */
;;;740 USARTx->CR3 |= CR3_HDSEL_Set;
000272 8a81 LDRH r1,[r0,#0x14]
000274 f041f041 ORR r1,r1,#8
000278 8281 STRH r1,[r0,#0x14]
;;;741 }
;;;742 else
;;;743 {
;;;744 /* Disable the Half-Duplex mode by clearing the HDSEL bit in the CR3 register */
;;;745 USARTx->CR3 &= CR3_HDSEL_Reset;
;;;746 }
;;;747 }
00027a 4770 BX lr
|L1.636|
00027c 8a81 LDRH r1,[r0,#0x14] ;745
00027e f021f021 BIC r1,r1,#8 ;745
000282 8281 STRH r1,[r0,#0x14] ;745
000284 4770 BX lr
;;;748
ENDP
USART_IrDAConfig PROC
;;;767
;;;768 USARTx->CR3 &= CR3_IRLP_Mask;
000286 8a82 LDRH r2,[r0,#0x14]
000288 f022f022 BIC r2,r2,#4
00028c 8282 STRH r2,[r0,#0x14]
;;;769 USARTx->CR3 |= USART_IrDAMode;
00028e 8a82 LDRH r2,[r0,#0x14]
000290 430a ORRS r2,r2,r1
000292 8282 STRH r2,[r0,#0x14]
;;;770 }
000294 4770 BX lr
;;;771
ENDP
USART_IrDACmd PROC
;;;788
;;;789 if (NewState != DISABLE)
000296 b121 CBZ r1,|L1.674|
;;;790 {
;;;791 /* Enable the IrDA mode by setting the IREN bit in the CR3 register */
;;;792 USARTx->CR3 |= CR3_IREN_Set;
000298 8a81 LDRH r1,[r0,#0x14]
00029a f041f041 ORR r1,r1,#2
00029e 8281 STRH r1,[r0,#0x14]
;;;793 }
;;;794 else
;;;795 {
;;;796 /* Disable the IrDA mode by clearing the IREN bit in the CR3 register */
;;;797 USARTx->CR3 &= CR3_IREN_Reset;
;;;798 }
;;;799 }
0002a0 4770 BX lr
|L1.674|
0002a2 8a81 LDRH r1,[r0,#0x14] ;797
0002a4 f021f021 BIC r1,r1,#2 ;797
0002a8 8281 STRH r1,[r0,#0x14] ;797
0002aa 4770 BX lr
;;;800
ENDP
USART_GetFlagStatus PROC
;;;823 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG)
;;;824 {
0002ac 4602 MOV r2,r0
;;;825 FlagStatus bitstatus = RESET;
0002ae 2000 MOVS r0,#0
;;;826
;;;827 /* Check the parameters */
;;;828 assert_param(IS_USART_ALL_PERIPH(USARTx));
;;;829 assert_param(IS_USART_FLAG(USART_FLAG));
;;;830 assert_param(IS_USART_PERIPH_FLAG(USARTx, USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */
;;;831
;;;832 if ((USARTx->SR & USART_FLAG) != (u16)RESET)
0002b0 8812 LDRH r2,[r2,#0]
0002b2 420a TST r2,r1
0002b4 d000 BEQ |L1.696|
;;;833 {
;;;834 bitstatus = SET;
0002b6 2001 MOVS r0,#1
|L1.696|
;;;835 }
;;;836 else
;;;837 {
;;;838 bitstatus = RESET;
;;;839 }
;;;840 return bitstatus;
;;;841 }
0002b8 4770 BX lr
;;;842
ENDP
USART_ClearFlag PROC
;;;875
;;;876 USARTx->SR = (u16)~USART_FLAG;
0002ba 43c9 MVNS r1,r1
0002bc 8001 STRH r1,[r0,#0]
;;;877 }
0002be 4770 BX lr
;;;878
ENDP
USART_GetITStatus PROC
;;;902 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, u16 USART_IT)
;;;903 {
0002c0 b570 PUSH {r4-r6,lr}
;;;904 u32 bitpos = 0x00, itmask = 0x00, usartreg = 0x00;
;;;905 ITStatus bitstatus = RESET;
0002c2 2400 MOVS r4,#0
;;;906
;;;907 /* Check the parameters */
;;;908 assert_param(IS_USART_ALL_PERIPH(USARTx));
;;;909 assert_param(IS_USART_IT(USART_IT));
;;;910 assert_param(IS_USART_PERIPH_IT(USARTx, USART_IT)); /* The CTS interrupt is not available for UART4 and UART5 */
;;;911
;;;912 /* Get the USART register index */
;;;913 usartreg = (((u8)USART_IT) >> 0x05);
0002c4 f3c1f3c1 UBFX r3,r1,#5,#3
;;;914
;;;915 /* Get the interrupt position */
;;;916 itmask = USART_IT & IT_Mask;
0002c8 f001f001 AND r5,r1,#0x1f
;;;917
;;;918 itmask = (u32)0x01 << itmask;
0002cc 2601 MOVS r6,#1
0002ce fa06fa06 LSL r2,r6,r5
;;;919
;;;920 if (usartreg == 0x01) /* The IT is in CR1 register */
0002d2 2b01 CMP r3,#1
0002d4 d102 BNE |L1.732|
;;;921 {
;;;922 itmask &= USARTx->CR1;
0002d6 8983 LDRH r3,[r0,#0xc]
0002d8 4013 ANDS r3,r3,r2
0002da e006 B |L1.746|
|L1.732|
;;;923 }
;;;924 else if (usartreg == 0x02) /* The IT is in CR2 register */
0002dc 2b02 CMP r3,#2
0002de d102 BNE |L1.742|
;;;925 {
;;;926 itmask &= USARTx->CR2;
0002e0 8a03 LDRH r3,[r0,#0x10]
0002e2 4013 ANDS r3,r3,r2
0002e4 e001 B |L1.746|
|L1.742|
;;;927 }
;;;928 else /* The IT is in CR3 register */
;;;929 {
;;;930 itmask &= USARTx->CR3;
0002e6 8a83 LDRH r3,[r0,#0x14]
0002e8 4013 ANDS r3,r3,r2
|L1.746|
;;;931 }
;;;932
;;;933 bitpos = USART_IT >> 0x08;
0002ea 0a09 LSRS r1,r1,#8
;;;934
;;;935 bitpos = (u32)0x01 << bitpos;
0002ec 408e LSLS r6,r6,r1
;;;936 bitpos &= USARTx->SR;
0002ee 8800 LDRH r0,[r0,#0]
0002f0 4030 ANDS r0,r0,r6
;;;937
;;;938 if ((itmask != (u16)RESET)&&(bitpos != (u16)RESET))
0002f2 b10b CBZ r3,|L1.760|
0002f4 b100 CBZ r0,|L1.760|
;;;939 {
;;;940 bitstatus = SET;
0002f6 2401 MOVS r4,#1
|L1.760|
;;;941 }
;;;942 else
;;;943 {
;;;944 bitstatus = RESET;
;;;945 }
;;;946
;;;947 return bitstatus;
0002f8 4620 MOV r0,r4
;;;948 }
0002fa bd70 POP {r4-r6,pc}
;;;949
ENDP
USART_ClearITPendingBit PROC
;;;984
;;;985 bitpos = USART_IT >> 0x08;
0002fc 0a0a LSRS r2,r1,#8
;;;986
;;;987 itmask = (u16)((u16)0x01 << bitpos);
0002fe 2101 MOVS r1,#1
000300 4091 LSLS r1,r1,r2
;;;988 USARTx->SR = (u16)~itmask;
000302 43c9 MVNS r1,r1
000304 8001 STRH r1,[r0,#0]
;;;989 }
000306 4770 BX lr
;;;990
ENDP
|L1.776|
000308 40004c00 DCD 0x40004c00
|L1.780|
00030c bfffbc00 DCD 0xbfffbc00
|L1.784|
000310 40013800 DCD 0x40013800
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -