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

📄 uart.s79

📁 IAPBootLoader源程序是单片机ARM的在系统编程方法1
💻 S79
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.40A/W32              17/Jan/2007  16:16:24 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  arm                                                 /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  D:\lilian\STR71X\application note\IAP using         /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\uart. /
//                       c                                                   /
//    Command line    =  "D:\lilian\STR71X\application note\IAP using        /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\uart. /
//                       c" -lC "D:\lilian\STR71X\application note\IAP       /
//                       using UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\D /
//                       ebug\List\" -lA "D:\lilian\STR71X\application       /
//                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 /
//                       .0\user\Debug\List\" -o "D:\lilian\STR71X\applicati /
//                       on note\IAP using UART\an2078_IAR(forum)\an2078\IAP /
//                       _V2.0\user\Debug\Obj\" -z2 --no_cse --no_unroll     /
//                       --no_inline --no_code_motion --no_tbaa              /
//                       --no_clustering --no_scheduling --debug --cpu_mode  /
//                       arm --endian little --cpu ARM7TDMI --stack_align 4  /
//                       -e --fpu None --dlib_config "C:\Program Files\IAR   /
//                       Systems\Embedded Workbench                          /
//                       4.0\arm\LIB\dl4tpannl8n.h" --segment                /
//                       code=CODE_Flash -I "D:\lilian\STR71X\application    /
//                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 /
//                       .0\user\..\include\" -I "D:\lilian\STR71X\applicati /
//                       on note\IAP using UART\an2078_IAR(forum)\an2078\IAP /
//                       _V2.0\user\..\common\" -I "C:\Program Files\IAR     /
//                       Systems\Embedded Workbench 4.0\arm\INC\"            /
//    List file       =  D:\lilian\STR71X\application note\IAP using         /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\Debug\L /
//                       ist\uart.s79                                        /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME uart

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__arm"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        EXTERN ??divu32_a

        MULTWEAK ??RCCU_FrequencyValue??rA
        MULTWEAK ??UART_ModeConfig??rA
        MULTWEAK ??UART_ParityConfig??rA
        MULTWEAK ??UART_StopBitsConfig??rA
        MULTWEAK ??rA??divu32_a
        PUBLIC UART_BaudRateConfig
        FUNCTION UART_BaudRateConfig,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC UART_ByteSend
        FUNCTION UART_ByteSend,0203H
        PUBLIC UART_Config
        FUNCTION UART_Config,0203H
        LOCFRAME CSTACK, 24, STACK
        PUBLIC UART_FifoConfig
        FUNCTION UART_FifoConfig,0203H
        PUBLIC UART_FifoReset
        FUNCTION UART_FifoReset,0203H
        PUBLIC UART_LoopBackConfig
        FUNCTION UART_LoopBackConfig,0203H
        PUBWEAK UART_ModeConfig
        FUNCTION UART_ModeConfig,0203H
        PUBLIC UART_OnOffConfig
        FUNCTION UART_OnOffConfig,0203H
        PUBWEAK UART_ParityConfig
        FUNCTION UART_ParityConfig,0203H
        PUBLIC UART_RxConfig
        FUNCTION UART_RxConfig,0203H
        PUBWEAK UART_StopBitsConfig
        FUNCTION UART_StopBitsConfig,0203H
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
RCCU_FrequencyValue SYMBOL "RCCU_FrequencyValue"
??RCCU_FrequencyValue??rA SYMBOL "??rA", RCCU_FrequencyValue
UART_ModeConfig     SYMBOL "UART_ModeConfig"
??UART_ModeConfig??rA SYMBOL "??rA", UART_ModeConfig
UART_ParityConfig   SYMBOL "UART_ParityConfig"
??UART_ParityConfig??rA SYMBOL "??rA", UART_ParityConfig
UART_StopBitsConfig SYMBOL "UART_StopBitsConfig"
??UART_StopBitsConfig??rA SYMBOL "??rA", UART_StopBitsConfig

        EXTERN RCCU_FrequencyValue
        FUNCTION RCCU_FrequencyValue,0202H

// D:\lilian\STR71X\application note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\uart.c
//    1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
//    2 * File Name          : uart.c
//    3 * Author             : MCD Application Team
//    4 * Date First Issued  : 08/06/2003
//    5 * Description        : This file provides all the UART software functions.
//    6 ********************************************************************************
//    7 * History:
//    8 *  02/01/2006 : IAP Version 2.0
//    9 *  11/24/2004 : IAP Version 1.0
//   10 ********************************************************************************
//   11 THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
//   12 CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A 
//   13 RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR 
//   14 CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH 
//   15 SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN
//   16 IN CONNECTION WITH THEIR PRODUCTS.
//   17 ********************************************************************************/
//   18 
//   19 #include "uart.h"

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function UART_ModeConfig
        ARM
// __??Code32?? __code __arm __atpcs void UART_ModeConfig(struct <unnamed> volatile *, enum <unnamed>)
UART_ModeConfig:
        LDRH     R2,[R0, #+12]
        MOV      R3,#+248
        ORR      R3,R3,#0xFF00
        ANDS     R2,R3,R2
        MOVS     R3,R1
        ORRS     R2,R3,R2
        STRH     R2,[R0, #+12]
        MOV      PC,LR            ;; return
        CFI EndBlock cfiBlock0

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function UART_ParityConfig
        ARM
// __??Code32?? __code __arm __atpcs void UART_ParityConfig(struct <unnamed> volatile *, enum <unnamed>)
UART_ParityConfig:
        LDRH     R2,[R0, #+12]
        MOV      R3,#+223
        ORR      R3,R3,#0xFF00
        ANDS     R2,R3,R2
        MOVS     R3,R1
        ORRS     R2,R3,R2
        STRH     R2,[R0, #+12]
        MOV      PC,LR            ;; return
        CFI EndBlock cfiBlock1

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function UART_StopBitsConfig
        ARM
// __??Code32?? __code __arm __atpcs void UART_StopBitsConfig(struct <unnamed> volatile *, enum <unnamed>)
UART_StopBitsConfig:
        LDRH     R2,[R0, #+12]
        MOV      R3,#+231
        ORR      R3,R3,#0xFF00
        ANDS     R2,R3,R2
        MOVS     R3,R1
        ORRS     R2,R3,R2
        STRH     R2,[R0, #+12]
        MOV      PC,LR            ;; return
        CFI EndBlock cfiBlock2
//   20 
//   21 
//   22 /*******************************************************************************
//   23 * Function Name  : UART_BaudRateConfig
//   24 * Description    : This function configures the baud rate of the selected UART.
//   25 * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
//   26 * Input 2        : The baudrate value
//   27 * Output         : None
//   28 * Return         : None
//   29 *******************************************************************************/

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function UART_BaudRateConfig
        ARM
//   30 void UART_BaudRateConfig(UART_TypeDef *UARTx, u32 BaudRate)
//   31 {
UART_BaudRateConfig:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOVS     R4,R0
        MOVS     R5,R1
//   32   UARTx->BR = (u16)(RCCU_FrequencyValue(RCCU_FCLK)/(16*BaudRate));
        MOV      R0,#+4
        _BLF     RCCU_FrequencyValue,??RCCU_FrequencyValue??rA
        MOV      R2,#+16
        MULS     R1,R2,R5
        _BLF     ??divu32_a,??rA??divu32_a
        STRH     R1,[R4, #+0]
//   33 }
        POP      {R4,R5,PC}       ;; return
        CFI EndBlock cfiBlock3
//   34 
//   35 /*******************************************************************************
//   36 * Function Name  : UART_Config
//   37 * Description    : This function configures the baudrate, the mode, the data
//   38 *                  parity and the number of stop bits of the selected UART.
//   39 * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
//   40 * Input 2        : The baudrate value
//   41 * Input 3        : The parity type
//   42 * Input 4        : The number of stop bits
//   43 * Input 5        : The UART mode
//   44 * Output         : None
//   45 * Return         : None
//   46 *******************************************************************************/

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function UART_Config
        ARM
//   47 void UART_Config(UART_TypeDef *UARTx, u32 BaudRate, UARTParity_TypeDef Parity,
//   48                  UARTStopBits_TypeDef StopBits, UARTMode_TypeDef Mode)
//   49 {
UART_Config:
        PUSH     {R4-R8,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R8 Frame(CFA, -8)
        CFI R7 Frame(CFA, -12)
        CFI R6 Frame(CFA, -16)
        CFI R5 Frame(CFA, -20)
        CFI R4 Frame(CFA, -24)
        CFI CFA R13+24
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R6,R2
        MOVS     R7,R3
        LDRB     R8,[SP, #+24]
//   50   UART_ModeConfig(UARTx, Mode);
        MOVS     R1,R8
        MOVS     R0,R4
        _BLF     UART_ModeConfig,??UART_ModeConfig??rA
//   51   UART_BaudRateConfig(UARTx, BaudRate);
        MOVS     R1,R5
        MOVS     R0,R4
        BL       UART_BaudRateConfig
//   52   UART_ParityConfig(UARTx, Parity);
        MOVS     R1,R6
        MOVS     R0,R4
        _BLF     UART_ParityConfig,??UART_ParityConfig??rA
//   53   UART_StopBitsConfig(UARTx, StopBits);
        MOVS     R1,R7
        MOVS     R0,R4
        _BLF     UART_StopBitsConfig,??UART_StopBitsConfig??rA
//   54 }
        POP      {R4-R8,PC}       ;; return
        CFI EndBlock cfiBlock4
//   55 
//   56 

⌨️ 快捷键说明

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