📄 stm32f10x_usart.txt
字号:
000008 8b02 LDRH r2,[r0,#0x18]
00000a 430a ORRS r2,r2,r1
00000c 8302 STRH r2,[r0,#0x18]
;;;553 }
00000e 4770 BX lr
ENDP
AREA ||i.USART_SmartCardCmd||, CODE, READONLY, ALIGN=1
USART_SmartCardCmd PROC
;;;569
;;;570 if (NewState != DISABLE)
000000 2900 CMP r1,#0
;;;571 {
;;;572 /* Enable the SC mode by setting the SCEN bit in the CR3 register */
;;;573 USARTx->CR3 |= CR3_SCEN_Set;
000002 8a81 LDRH r1,[r0,#0x14]
000004 d002 BEQ |L17.12|
000006 f041f041 ORR r1,r1,#0x20
00000a e001 B |L17.16|
|L17.12|
;;;574 }
;;;575 else
;;;576 {
;;;577 /* Disable the SC mode by clearing the SCEN bit in the CR3 register */
;;;578 USARTx->CR3 &= CR3_SCEN_Reset;
00000c f021f021 BIC r1,r1,#0x20
|L17.16|
000010 8281 STRH r1,[r0,#0x14]
;;;579 }
;;;580 }
000012 4770 BX lr
ENDP
AREA ||i.USART_SmartCardNACKCmd||, CODE, READONLY, ALIGN=1
USART_SmartCardNACKCmd PROC
;;;596
;;;597 if (NewState != DISABLE)
000000 2900 CMP r1,#0
;;;598 {
;;;599 /* Enable the NACK transmission by setting the NACK bit in the CR3 register */
;;;600 USARTx->CR3 |= CR3_NACK_Set;
000002 8a81 LDRH r1,[r0,#0x14]
000004 d002 BEQ |L18.12|
000006 f041f041 ORR r1,r1,#0x10
00000a e001 B |L18.16|
|L18.12|
;;;601 }
;;;602 else
;;;603 {
;;;604 /* Disable the NACK transmission by clearing the NACK bit in the CR3 register */
;;;605 USARTx->CR3 &= CR3_NACK_Reset;
00000c f021f021 BIC r1,r1,#0x10
|L18.16|
000010 8281 STRH r1,[r0,#0x14]
;;;606 }
;;;607
;;;608 }
000012 4770 BX lr
ENDP
AREA ||i.USART_HalfDuplexCmd||, CODE, READONLY, ALIGN=1
USART_HalfDuplexCmd PROC
;;;624
;;;625 if (NewState != DISABLE)
000000 2900 CMP r1,#0
;;;626 {
;;;627 /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */
;;;628 USARTx->CR3 |= CR3_HDSEL_Set;
000002 8a81 LDRH r1,[r0,#0x14]
000004 d002 BEQ |L19.12|
000006 f041f041 ORR r1,r1,#8
00000a e001 B |L19.16|
|L19.12|
;;;629 }
;;;630 else
;;;631 {
;;;632 /* Disable the Half-Duplex mode by clearing the HDSEL bit in the CR3 register */
;;;633 USARTx->CR3 &= CR3_HDSEL_Reset;
00000c f021f021 BIC r1,r1,#8
|L19.16|
000010 8281 STRH r1,[r0,#0x14]
;;;634 }
;;;635 }
000012 4770 BX lr
ENDP
AREA ||i.USART_IrDAConfig||, CODE, READONLY, ALIGN=1
USART_IrDAConfig PROC
;;;653
;;;654 USARTx->CR3 &= CR3_IRLP_Mask;
000000 8a82 LDRH r2,[r0,#0x14]
000002 f022f022 BIC r2,r2,#4
000006 8282 STRH r2,[r0,#0x14]
;;;655 USARTx->CR3 |= USART_IrDAMode;
000008 8a82 LDRH r2,[r0,#0x14]
00000a 430a ORRS r2,r2,r1
00000c 8282 STRH r2,[r0,#0x14]
;;;656 }
00000e 4770 BX lr
ENDP
AREA ||i.USART_IrDACmd||, CODE, READONLY, ALIGN=1
USART_IrDACmd PROC
;;;672
;;;673 if (NewState != DISABLE)
000000 2900 CMP r1,#0
;;;674 {
;;;675 /* Enable the IrDA mode by setting the IREN bit in the CR3 register */
;;;676 USARTx->CR3 |= CR3_IREN_Set;
000002 8a81 LDRH r1,[r0,#0x14]
000004 d002 BEQ |L21.12|
000006 f041f041 ORR r1,r1,#2
00000a e001 B |L21.16|
|L21.12|
;;;677 }
;;;678 else
;;;679 {
;;;680 /* Disable the IrDA mode by clearing the IREN bit in the CR3 register */
;;;681 USARTx->CR3 &= CR3_IREN_Reset;
00000c f021f021 BIC r1,r1,#2
|L21.16|
000010 8281 STRH r1,[r0,#0x14]
;;;682 }
;;;683 }
000012 4770 BX lr
ENDP
AREA ||i.USART_GetFlagStatus||, CODE, READONLY, ALIGN=1
USART_GetFlagStatus PROC
;;;705 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG)
;;;706 {
000000 4602 MOV r2,r0
;;;707 FlagStatus bitstatus = RESET;
;;;708
;;;709 /* Check the parameters */
;;;710 assert_param(IS_USART_FLAG(USART_FLAG));
;;;711
;;;712 if ((USARTx->SR & USART_FLAG) != (u16)RESET)
000002 8812 LDRH r2,[r2,#0]
000004 2000 MOVS r0,#0
000006 420a TST r2,r1
000008 d000 BEQ |L22.12|
;;;713 {
;;;714 bitstatus = SET;
00000a 2001 MOVS r0,#1
|L22.12|
;;;715 }
;;;716 else
;;;717 {
;;;718 bitstatus = RESET;
;;;719 }
;;;720 return bitstatus;
;;;721 }
00000c 4770 BX lr
ENDP
AREA ||i.USART_ClearFlag||, CODE, READONLY, ALIGN=1
USART_ClearFlag PROC
;;;747
;;;748 USARTx->SR &= (u16)~USART_FLAG;
000000 8802 LDRH r2,[r0,#0]
000002 438a BICS r2,r2,r1
000004 8002 STRH r2,[r0,#0]
;;;749 }
000006 4770 BX lr
ENDP
AREA ||i.USART_GetITStatus||, CODE, READONLY, ALIGN=1
USART_GetITStatus PROC
;;;771 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, u16 USART_IT)
;;;772 {
000000 b570 PUSH {r4-r6,lr}
;;;773 u32 bitpos = 0x00, itmask = 0x00, usartreg = 0;
;;;774 ITStatus bitstatus = RESET;
;;;775
;;;776 /* Check the parameters */
;;;777 assert_param(IS_USART_IT(USART_IT));
;;;778
;;;779 /* Get the USART register index */
;;;780 usartreg = (((u8)USART_IT) >> 0x05);
;;;781
;;;782 /* Get the interrupt position */
;;;783 itmask = USART_IT & USART_IT_Mask;
000002 f001f001 AND r5,r1,#0x1f
;;;784
;;;785 itmask = (u32)0x01 << itmask;
000006 2601 MOVS r6,#1
000008 2400 MOVS r4,#0
00000a f3c1f3c1 UBFX r3,r1,#5,#3
00000e fa06fa06 LSL r2,r6,r5
;;;786
;;;787 if (usartreg == 0x01) /* The IT is in CR1 register */
000012 2b01 CMP r3,#1
000014 d101 BNE |L24.26|
;;;788 {
;;;789 itmask &= USARTx->CR1;
000016 8983 LDRH r3,[r0,#0xc]
000018 e004 B |L24.36|
|L24.26|
;;;790 }
;;;791 else if (usartreg == 0x02) /* The IT is in CR2 register */
00001a 2b02 CMP r3,#2
00001c d101 BNE |L24.34|
;;;792 {
;;;793 itmask &= USARTx->CR2;
00001e 8a03 LDRH r3,[r0,#0x10]
000020 e000 B |L24.36|
|L24.34|
;;;794 }
;;;795 else /* The IT is in CR3 register */
;;;796 {
;;;797 itmask &= USARTx->CR3;
000022 8a83 LDRH r3,[r0,#0x14]
|L24.36|
;;;798 }
;;;799
;;;800 bitpos = USART_IT >> 0x08;
000024 ea4fea4f LSR r1,r1,#8
;;;801
;;;802 bitpos = (u32)0x01 << bitpos;
;;;803 bitpos &= USARTx->SR;
000028 8800 LDRH r0,[r0,#0]
00002a 4213 TST r3,r2
00002c fa06fa06 LSL r6,r6,r1
000030 ea00ea00 AND r0,r0,r6
;;;804
;;;805 if ((itmask != (u16)RESET)&&(bitpos != (u16)RESET))
000034 d001 BEQ |L24.58|
000036 b100 CBZ r0,|L24.58|
;;;806 {
;;;807 bitstatus = SET;
000038 2401 MOVS r4,#1
|L24.58|
;;;808 }
;;;809 else
;;;810 {
;;;811 bitstatus = RESET;
;;;812 }
;;;813 return bitstatus;
00003a 4620 MOV r0,r4
;;;814 }
00003c bd70 POP {r4-r6,pc}
ENDP
AREA ||i.USART_ClearITPendingBit||, CODE, READONLY, ALIGN=1
USART_ClearITPendingBit PROC
;;;842
;;;843 bitpos = USART_IT >> 0x08;
000000 0a0a LSRS r2,r1,#8
;;;844
;;;845 itmask = (u32)0x01 << bitpos;
000002 2101 MOVS r1,#1
000004 4091 LSLS r1,r1,r2
;;;846 USARTx->SR &= ~itmask;
000006 8802 LDRH r2,[r0,#0]
000008 438a BICS r2,r2,r1
00000a 8002 STRH r2,[r0,#0]
;;;847 }
00000c 4770 BX lr
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -