📄 hal_uart.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 08/Mar/2009 09:16:10 #
# Copyright 2004-2006 IAR Systems. All rights reserved. #
# #
# Core = plain #
# Code model = banked #
# Data model = large #
# Calling convention = xdata reentrant #
# Constant location = data #
# Dptr setup = 1,16 #
# Source file = C:\Texas Instruments\ZStack-1.4.2-1.1.0\Component #
# s\hal\target\CC2430DB\hal_uart.c #
# Command line = -f "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Proje #
# cts\zstack\Samples\GenericApp\CC2430DB\..\..\..\T #
# ools\CC2430DB\f8wEndev.cfg" (-DCPU32MHZ #
# -DFORCE_MAC_NEAR -DROOT=__near_func #
# -DMAC_OPT_FFD=0 -DBLINK_LEDS "-DCONST=const #
# __code" -DGENERIC=__generic) -f "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\Tools\CC2430DB #
# \f8wConfig.cfg" (-DSECURE=0 #
# -DDEFAULT_CHANLIST=0x00000800 #
# -DZDAPP_CONFIG_PAN_ID=0xFFFF #
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_M #
# ASK=0x007F -DBEACON_REQUEST_DELAY=100 #
# -DBEACON_REQ_DELAY_MASK=0x00FF #
# -DROUTE_EXPIRY_TIME=30 -DAPSC_ACK_WAIT_DURATION_P #
# OLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7 #
# -DMAX_RREQ_ENTRIES=10 -DAPSC_MAX_FRAME_RETRIES=3 #
# -DNWK_MAX_DATA_RETRIES=2 #
# -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9 #
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=20 #
# -DNWK_MAX_BINDING_ENTRIES=10 #
# -DMAX_BINDING_CLUSTER_IDS=5 #
# "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07, 0x09, #
# 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, #
# 0x0A, 0x0C, 0x0D}" -DRFD_RCVC_ALWAYS_ON=FALSE #
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 #
# -DRESPONSE_POLL_RATE=100 -DREJOIN_POLL_RATE=440 #
# -DTOP_BOOT_PAGES=0) -I "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.05 Evaluation #
# version\8051\inc\" -I "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.05 Evaluation #
# version\8051\inc\clib\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\Source\" -I #
# "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects #
# \zstack\Samples\GenericApp\CC2430DB\..\..\..\ZMai #
# n\TI2430DB\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\mt\" -I "C:\Texas Instruments\ZStack-1.4.2-1.1 #
# .0\Projects\zstack\Samples\GenericApp\CC2430DB\.. #
# \..\..\..\..\Components\hal\include\" -I #
# "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects #
# \zstack\Samples\GenericApp\CC2430DB\..\..\..\..\. #
# .\Components\hal\target\CC2430DB\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\osal\mcu\ccsoc\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\osal\include\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\stack\af\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\stack\nwk\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\stack\sec\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\stack\sys\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\stack\zdo\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\zmac\f8w\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\zmac\" -I "C:\Texas Instruments\ZStack-1.4.2-1 #
# .1.0\Projects\zstack\Samples\GenericApp\CC2430DB\ #
# ..\..\..\..\..\Components\services\saddr\" -I #
# "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects #
# \zstack\Samples\GenericApp\CC2430DB\..\..\..\..\. #
# .\Components\services\sdata\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\mac\include\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\mac\high_level\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\mac\low_level\srf03\" -I "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\..\..\..\..\..\Componen #
# ts\mac\low_level\srf03\single_chip\" -D CC2430DB #
# -D NWK_AUTO_POLL -D xZTOOL_P2 -D xMT_TASK -D #
# xMT_ZDO_FUNC -D xLCD_SUPPORTED=DEBUG -D #
# xPOWER_SAVING -lC "C:\Texas #
# Instruments\ZStack-1.4.2-1.1.0\Projects\zstack\Sa #
# mples\GenericApp\CC2430DB\EndDeviceDB\List\" -lA #
# "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects #
# \zstack\Samples\GenericApp\CC2430DB\EndDeviceDB\L #
# ist\" --diag_suppress Pe001,Pa010 --diag_remark #
# pe550 -o "C:\Texas Instruments\ZStack-1.4.2-1.1.0 #
# \Projects\zstack\Samples\GenericApp\CC2430DB\EndD #
# eviceDB\Obj\" -e --require_prototypes -z9 #
# --no_code_motion --debug --core=plain #
# --dptr=16,1 --data_model=large #
# --code_model=banked --calling_convention=xdata_re #
# entrant --place_constants=data --nr_virtual_regs #
# 8 "C:\Texas Instruments\ZStack-1.4.2-1.1.0\Compon #
# ents\hal\target\CC2430DB\hal_uart.c" #
# List file = C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects\ #
# zstack\Samples\GenericApp\CC2430DB\EndDeviceDB\Li #
# st\hal_uart.lst #
# Object file = C:\Texas Instruments\ZStack-1.4.2-1.1.0\Projects\ #
# zstack\Samples\GenericApp\CC2430DB\EndDeviceDB\Ob #
# j\hal_uart.r51 #
# #
# #
##############################################################################
C:\Texas Instruments\ZStack-1.4.2-1.1.0\Components\hal\target\CC2430DB\hal_uart.c
1 /******************************************************************************
2 Filename: _hal_uart.c
3 Revised: $Date: 2007-03-26 11:53:55 -0700 (Mon, 26 Mar 2007) $
4 Revision: $Revision: 13853 $
5
6 Description: This file contains the interface to the H/W UART driver.
7
8 Copyright (c) 2007 by Texas Instruments, Inc.
9 All Rights Reserved. Permission to use, reproduce, copy, prepare
10 derivative works, modify, distribute, perform, display or sell this
11 software and/or its documentation for any purpose is prohibited
12 without the express written consent of Texas Instruments, Inc.
13 ******************************************************************************/
14
15 /*********************************************************************
16 * INCLUDES
17 */
18
19 #include "hal_types.h"
20 #include "hal_assert.h"
21 #include "hal_board.h"
\ In segment SFR_AN, at 0xff
\ unsigned char volatile __sfr P2DIR
\ P2DIR:
\ 000000 DS 1
22 #include "hal_defs.h"
23 #if defined( HAL_UART_DMA ) && HAL_UART_DMA
24 #include "hal_dma.h"
25 #endif
26 #include "hal_mcu.h"
27 #include "hal_uart.h"
28 #include "osal.h"
29
30 /*********************************************************************
31 * MACROS
32 */
33
34 #if !defined ( HAL_UART_DEBUG )
35 #define HAL_UART_DEBUG FALSE
36 #endif
37
38 #if !defined ( HAL_UART_CLOSE )
39 #define HAL_UART_CLOSE FALSE
40 #endif
41
42 #if !defined ( HAL_UART_BIG_TX_BUF )
43 #define HAL_UART_BIG_TX_BUF FALSE
44 #endif
45
46 /*
47 * The MAC_ASSERT macro is for use during debugging.
48 * The given expression must evaluate as "true" or else fatal error occurs.
49 * At that point, the call stack feature of the debugger can pinpoint where
50 * the problem occurred.
51 *
52 * To disable this feature and save code size, the project should define
53 * HAL_UART_DEBUG to FALSE.
54 */
55 #if ( HAL_UART_DEBUG )
56 #define HAL_UART_ASSERT( expr) HAL_ASSERT( expr )
57 #else
58 #define HAL_UART_ASSERT( expr )
59 #endif
60
61 #define P2DIR_PRIPO 0xC0
62 #if HAL_UART_0_ENABLE
63 #define HAL_UART_PRIPO 0x00
64 #else
65 #define HAL_UART_PRIPO 0x40
66 #endif
67
68 #define HAL_UART_0_PERCFG_BIT 0x01 // USART0 on P0, so clear this bit.
69 #define HAL_UART_0_P0_RX_TX 0x0c // Peripheral I/O Select for Rx/Tx.
70 #define HAL_UART_0_P0_RTS 0x10 // Peripheral I/O Select for RTS.
71 #define HAL_UART_0_P0_CTS 0x20 // Peripheral I/O Select for CTS.
72
73 #define HAL_UART_1_PERCFG_BIT 0x02 // USART1 on P1, so set this bit.
74 #define HAL_UART_1_P1_RTS 0x10 // Peripheral I/O Select for RTS.
75 #define HAL_UART_1_P1_CTS 0x20 // Peripheral I/O Select for CTS.
76 #define HAL_UART_1_P1_RX_TX 0xC0 // Peripheral I/O Select for Rx/Tx.
77
78 #define TX_AVAIL( cfg ) \
79 ((cfg->txTail == cfg->txHead) ? (cfg->txMax-1) : \
80 ((cfg->txTail > cfg->txHead) ? (cfg->txTail - cfg->txHead - 1) : \
81 (cfg->txMax - cfg->txHead + cfg->txTail)))
82
83 #define RX0_FLOW_ON ( P0 &= ~HAL_UART_0_P0_CTS )
84 #define RX0_FLOW_OFF ( P0 |= HAL_UART_0_P0_CTS )
85 #define RX1_FLOW_ON ( P1 &= ~HAL_UART_1_P1_CTS)
86 #define RX1_FLOW_OFF ( P1 |= HAL_UART_1_P1_CTS )
87
88 #define RX_STOP_FLOW( cfg ) { \
89 if ( !(cfg->flag & UART_CFG_U1F) ) \
90 { \
91 RX0_FLOW_OFF; \
92 } \
93 else \
94 { \
95 RX1_FLOW_OFF; \
96 } \
97 if ( cfg->flag & UART_CFG_DMA ) \
98 { \
99 cfg->rxTick = DMA_RX_DLY; \
100 } \
101 cfg->flag |= UART_CFG_RXF; \
102 }
103
104 #define RX_STRT_FLOW( cfg ) { \
105 if ( !(cfg->flag & UART_CFG_U1F) ) \
106 { \
107 RX0_FLOW_ON; \
108 } \
109 else \
110 { \
111 RX1_FLOW_ON; \
112 } \
113 cfg->flag &= ~UART_CFG_RXF; \
114 }
115
116 #define UART_RX_AVAIL( cfg ) \
117 ( (cfg->rxHead >= cfg->rxTail) ? (cfg->rxHead - cfg->rxTail) : \
118 (cfg->rxMax - cfg->rxTail + cfg->rxHead +1 ) )
119
120 /* Need to leave enough of the Rx buffer free to handle the incoming bytes
121 * after asserting flow control, but before the transmitter has obeyed it.
122 * At the max expected baud rate of 115.2k, 16 bytes will only take ~1.3 msecs,
123 * but at the min expected baud rate of 38.4k, they could take ~4.2 msecs.
124 * SAFE_RX_MIN and DMA_RX_DLY must both be consistent according to
125 * the min & max expected baud rate.
126 */
127 #if !defined( SAFE_RX_MIN )
128 #define SAFE_RX_MIN 48 // bytes - max expected per poll @ 115.2k
129 // 16 bytes @ 38.4 kBaud -> 4.16 msecs -> 138 32-kHz ticks.
130 #define DMA_RX_DLY 140
131 // 2 bytes @ 38.4 kBaud -> 0.52 msecs -> 17 32-kHz ticks.
132 #define DMA_TX_DLY 20
133 #endif
134
135 // The timeout tick is at 32-kHz, so multiply msecs by 33.
136 #define RX_MSECS_TO_TICKS 33
137
138 // The timeout only supports 1 byte.
139 #if !defined( HAL_UART_RX_IDLE )
140 #define HAL_UART_RX_IDLE (6 * RX_MSECS_TO_TICKS)
141 #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -