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

📄 stm32f10x_usart.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;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 + -