| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
timer_001.c
Go to the documentation of this file.
1 /*
2 * @brief 32-bit Timer/PWM control functions
3 *
4 * @note
5 * Copyright(C) NXP Semiconductors, 2012
6 * All rights reserved.
7 *
8 * @par
9 * Software that is described herein is for illustrative purposes only
10 * which provides customers with programming information regarding the
11 * LPC products. This software is supplied "AS IS" without any warranties of
12 * any kind, and NXP Semiconductors and its licensor disclaim any and
13 * all warranties, express or implied, including all implied warranties of
14 * merchantability, fitness for a particular purpose and non-infringement of
15 * intellectual property rights. NXP Semiconductors assumes no responsibility
16 * or liability for the use of the software, conveys no license or rights under any
17 * patent, copyright, mask work right, or any other intellectual property rights in
18 * or to any products. NXP Semiconductors reserves the right to make changes
19 * in the software without notification. NXP Semiconductors also makes no
20 * representation or warranty that such application will be suitable for the
21 * specified use without further testing or modification.
22 *
23 * @par
24 * Permission to use, copy, modify, and distribute this software and its
25 * documentation is hereby granted, under NXP Semiconductors' and its
26 * licensor's relevant copyrights in the software, without fee, provided that it
27 * is used in conjunction with NXP Semiconductors microcontrollers. This
28 * copyright, permission, and disclaimer notice must appear in all copies of
29 * this code.
30 */
31
32 #include "timer_001.h"
33
34 /*****************************************************************************
35 * Private types/enumerations/variables
36 ****************************************************************************/
37
38 /*****************************************************************************
39 * Public types/enumerations/variables
40 ****************************************************************************/
41
42 /*****************************************************************************
43 * Private functions
44 ****************************************************************************/
45
46 /*****************************************************************************
47 * Public functions
48 ****************************************************************************/
49
50 /* Resets the timer terminal and prescale counts to 0 */
51 void IP_TIMER_Reset(IP_TIMER_001_T *pTimer)
52 {
53 uint32_t reg;
54
55 /* Disable timer, set terminal count to non-0 */
56 reg = pTimer->TCR;
57 pTimer->TCR = 0;
58 pTimer->TC = 1;
59
60 /* Reset timer counter */
61 pTimer->TCR = TIMER_RESET;
62
63 /* Wait for terminal count to clear */
64 while (pTimer->TC != 0) {}
65
66 /* Restore timer state */
67 pTimer->TCR = reg;
68 }
69
70 /* Sets external match control (MATn.matchnum) pin control */
71 void IP_TIMER_ExtMatchControlSet(IP_TIMER_001_T *pTimer, int8_t initial_state,
72 IP_TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum)
73 {
74 pTimer->EMR = (((uint32_t) initial_state) << matchnum) |
75 (((uint32_t) matchState) << (4 + (matchnum * 2)));
76 }
77
78 /* Sets timer count source and edge with the selected passed from CapSrc */
79 void IP_TIMER_SetTimerClockSrc(IP_TIMER_001_T *pTimer,
80 IP_TIMER_CAP_SRC_STATE_T capSrc, int8_t capnum)
81 {
82 pTimer->CTCR = (uint32_t) capSrc | ((uint32_t) capnum) << 2;
83 }