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

📄 stm32f10x_usart.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 3 页
字号:
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 + -