⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_usart.txt

📁 STM32 demo板的例程
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00012c  401a              ANDS     r2,r2,r3
00012e  8182              STRH     r2,[r0,#0xc]
                  |L1.304|
;;;265      }
;;;266    }
000130  4770              BX       lr
                          ENDP

                  USART_ITConfig PROC
;;;289    void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState)
;;;290    {
000132  b5f0              PUSH     {r4-r7,lr}
;;;291      u32 usartreg = 0x00, itpos = 0x00, itmask = 0x00;
000134  2300              MOVS     r3,#0
000136  2400              MOVS     r4,#0
000138  2500              MOVS     r5,#0
;;;292      u32 address = 0x00;
00013a  2600              MOVS     r6,#0
;;;293    
;;;294      /* Check the parameters */
;;;295      assert(IS_USART_CONFIG_IT(USART_IT));  
;;;296      assert(IS_FUNCTIONAL_STATE(NewState));
;;;297      
;;;298      /* Get the USART register index */
;;;299      usartreg = (((u8)USART_IT) >> 0x05);
00013c  f3c1f3c1          UBFX     r3,r1,#5,#3
;;;300    
;;;301      /* Get the interrupt position */
;;;302      itpos = USART_IT & USART_IT_Mask;
000140  f001f001          AND      r4,r1,#0x1f
;;;303    
;;;304      itmask = (((u32)0x01) << itpos);
000144  2701              MOVS     r7,#1
000146  fa07fa07          LSL      r5,r7,r4
;;;305      address = *(u32*)&(USARTx);
00014a  4606              MOV      r6,r0
;;;306    
;;;307      if (usartreg == 0x01) /* The IT  is in CR1 register */
00014c  2b01              CMP      r3,#1
00014e  d101              BNE      |L1.340|
;;;308      {
;;;309        address += 0x0C;
000150  360c              ADDS     r6,r6,#0xc
000152  e004              B        |L1.350|
                  |L1.340|
;;;310      }
;;;311      else if (usartreg == 0x02) /* The IT  is in CR2 register */
000154  2b02              CMP      r3,#2
000156  d101              BNE      |L1.348|
;;;312      {
;;;313        address += 0x10;
000158  3610              ADDS     r6,r6,#0x10
00015a  e000              B        |L1.350|
                  |L1.348|
;;;314      }
;;;315      else /* The IT  is in CR3 register */
;;;316      {
;;;317        address += 0x14; 
00015c  3614              ADDS     r6,r6,#0x14
                  |L1.350|
;;;318      }
;;;319      if (NewState != DISABLE)
00015e  b11a              CBZ      r2,|L1.360|
;;;320      {
;;;321        *(u32*)address  |= itmask;
000160  6837              LDR      r7,[r6,#0]
000162  432f              ORRS     r7,r7,r5
000164  6037              STR      r7,[r6,#0]
000166  e002              B        |L1.366|
                  |L1.360|
;;;322      }
;;;323      else
;;;324      {
;;;325        *(u32*)address &= ~itmask;
000168  6837              LDR      r7,[r6,#0]
00016a  43af              BICS     r7,r7,r5
00016c  6037              STR      r7,[r6,#0]
                  |L1.366|
;;;326      }
;;;327    }
00016e  bdf0              POP      {r4-r7,pc}
                          ENDP

                  USART_DMACmd PROC
;;;343    void USART_DMACmd(USART_TypeDef* USARTx, u16 USART_DMAReq, FunctionalState NewState)
;;;344    {
000170  b510              PUSH     {r4,lr}
;;;345      /* Check the parameters */
;;;346      assert(IS_USART_DMAREQ(USART_DMAReq));  
;;;347      assert(IS_FUNCTIONAL_STATE(NewState)); 
;;;348      
;;;349      if (NewState != DISABLE)
000172  b11a              CBZ      r2,|L1.380|
;;;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;
000174  8a83              LDRH     r3,[r0,#0x14]
000176  430b              ORRS     r3,r3,r1
000178  8283              STRH     r3,[r0,#0x14]
00017a  e004              B        |L1.390|
                  |L1.380|
;;;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;
00017c  8a83              LDRH     r3,[r0,#0x14]
00017e  43cc              MVNS     r4,r1
000180  b2a4              UXTH     r4,r4
000182  4023              ANDS     r3,r3,r4
000184  8283              STRH     r3,[r0,#0x14]
                  |L1.390|
;;;360      }
;;;361    }
000186  bd10              POP      {r4,pc}
                          ENDP

                  USART_SetAddress PROC
;;;377      /* Clear the USART address */
;;;378      USARTx->CR2 &= CR2_Address_Mask;
000188  8a02              LDRH     r2,[r0,#0x10]
00018a  f64ff64f          MOV      r3,#0xfff0
00018e  401a              ANDS     r2,r2,r3
000190  8202              STRH     r2,[r0,#0x10]
;;;379      /* Set the USART address node */
;;;380      USARTx->CR2 |= USART_Address;
000192  8a02              LDRH     r2,[r0,#0x10]
000194  430a              ORRS     r2,r2,r1
000196  8202              STRH     r2,[r0,#0x10]
;;;381    }
000198  4770              BX       lr
                          ENDP

                  USART_WakeUpConfig PROC
;;;399      
;;;400      USARTx->CR1 &= CR3_WAKE_Mask;
00019a  8982              LDRH     r2,[r0,#0xc]
00019c  f24ff24f          MOV      r3,#0xf7ff
0001a0  401a              ANDS     r2,r2,r3
0001a2  8182              STRH     r2,[r0,#0xc]
;;;401      USARTx->CR1 |= USART_WakeUp;
0001a4  8982              LDRH     r2,[r0,#0xc]
0001a6  430a              ORRS     r2,r2,r1
0001a8  8182              STRH     r2,[r0,#0xc]
;;;402    }
0001aa  4770              BX       lr
                          ENDP

                  USART_ReceiverWakeUpCmd PROC
;;;418      
;;;419      if (NewState != DISABLE)
0001ac  b121              CBZ      r1,|L1.440|
;;;420      {
;;;421        /* Enable the mute mode USART by setting the RWU bit in the CR1 register */
;;;422        USARTx->CR1 |= CR1_RWU_Set;
0001ae  8982              LDRH     r2,[r0,#0xc]
0001b0  f042f042          ORR      r2,r2,#2
0001b4  8182              STRH     r2,[r0,#0xc]
0001b6  e004              B        |L1.450|
                  |L1.440|
;;;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;
0001b8  8982              LDRH     r2,[r0,#0xc]
0001ba  f64ff64f          MOV      r3,#0xfffd
0001be  401a              ANDS     r2,r2,r3
0001c0  8182              STRH     r2,[r0,#0xc]
                  |L1.450|
;;;428      }
;;;429    }
0001c2  4770              BX       lr
                          ENDP

                  USART_LINBreakDetectLengthConfig PROC
;;;448      
;;;449      USARTx->CR2 &= CR3_LBDL_Mask;
0001c4  8a02              LDRH     r2,[r0,#0x10]
0001c6  f64ff64f          MOV      r3,#0xffdf
0001ca  401a              ANDS     r2,r2,r3
0001cc  8202              STRH     r2,[r0,#0x10]
;;;450      USARTx->CR2 |= USART_LINBreakDetectLength;  
0001ce  8a02              LDRH     r2,[r0,#0x10]
0001d0  430a              ORRS     r2,r2,r1
0001d2  8202              STRH     r2,[r0,#0x10]
;;;451    }
0001d4  4770              BX       lr
                          ENDP

                  USART_LINCmd PROC
;;;467      
;;;468      if (NewState != DISABLE)
0001d6  b121              CBZ      r1,|L1.482|
;;;469      {
;;;470        /* Enable the LIN mode by setting the LINE bit in the CR2 register */
;;;471        USARTx->CR2 |= CR2_LINE_Set;
0001d8  8a02              LDRH     r2,[r0,#0x10]
0001da  f442f442          ORR      r2,r2,#0x4000
0001de  8202              STRH     r2,[r0,#0x10]
0001e0  e004              B        |L1.492|
                  |L1.482|
;;;472      }
;;;473      else
;;;474      {
;;;475        /* Disable the LIN mode by clearing the LINE bit in the CR2 register */
;;;476        USARTx->CR2 &= CR2_LINE_Reset;
0001e2  8a02              LDRH     r2,[r0,#0x10]
0001e4  f64bf64b          MOV      r3,#0xbfff
0001e8  401a              ANDS     r2,r2,r3
0001ea  8202              STRH     r2,[r0,#0x10]
                  |L1.492|
;;;477      }
;;;478    }
0001ec  4770              BX       lr
                          ENDP

                  USART_SendData PROC
;;;494      /* Transmit Data */
;;;495      USARTx->DR = (Data & (u16)0x01FF);
0001ee  f3c1f3c1          UBFX     r2,r1,#0,#9
0001f2  8082              STRH     r2,[r0,#4]
;;;496    }
0001f4  4770              BX       lr
                          ENDP

                  USART_ReceiveData PROC
;;;506    u16 USART_ReceiveData(USART_TypeDef* USARTx)
;;;507    {
0001f6  4601              MOV      r1,r0
;;;508      /* Receive Data */
;;;509      return (u16)(USARTx->DR & (u16)0x01FF);
0001f8  8888              LDRH     r0,[r1,#4]
0001fa  f3c0f3c0          UBFX     r0,r0,#0,#9
;;;510    }
0001fe  4770              BX       lr
                          ENDP

                  USART_SendBreak PROC
;;;522      /* Send break characters */
;;;523      USARTx->CR1 |= CR1_SBK_Set;
000200  8981              LDRH     r1,[r0,#0xc]
000202  f041f041          ORR      r1,r1,#1
000206  8181              STRH     r1,[r0,#0xc]
;;;524    }
000208  4770              BX       lr
                          ENDP

                  USART_SetGuardTime PROC
;;;537      /* Clear the USART Guard time */
;;;538      USARTx->GTPR &= GTPR_LSB_Mask;
00020a  8b02              LDRH     r2,[r0,#0x18]
00020c  b2d2              UXTB     r2,r2
00020e  8302              STRH     r2,[r0,#0x18]
;;;539      /* Set the USART guard time */
;;;540      USARTx->GTPR |= (u16)((u16)USART_GuardTime << 0x08);
000210  8b02              LDRH     r2,[r0,#0x18]
000212  ea42ea42          ORR      r2,r2,r1,LSL #8
000216  8302              STRH     r2,[r0,#0x18]
;;;541    }
000218  4770              BX       lr
                          ENDP

                  USART_SetPrescaler PROC
;;;554      /* Clear the USART prescaler */
;;;555      USARTx->GTPR &= GTPR_MSB_Mask;
00021a  8b02              LDRH     r2,[r0,#0x18]
00021c  f402f402          AND      r2,r2,#0xff00
000220  8302              STRH     r2,[r0,#0x18]
;;;556      /* Set the USART prescaler */
;;;557      USARTx->GTPR |= USART_Prescaler;
000222  8b02              LDRH     r2,[r0,#0x18]
000224  430a              ORRS     r2,r2,r1
000226  8302              STRH     r2,[r0,#0x18]
;;;558    }
000228  4770              BX       lr
                          ENDP

                  USART_SmartCardCmd PROC
;;;574        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -