]> git.sur5r.net Git - freertos/blob - Demo/MSP430X_MSP430F5438_IAR/F5XX_6XX_Core_Lib/hal_UCS.h
Remove unnecessary calls to fflush() in MSP430X/IAR demo.
[freertos] / Demo / MSP430X_MSP430F5438_IAR / F5XX_6XX_Core_Lib / hal_UCS.h
1 //*******************************************************************************\r
2 //  Provides Functions to Initialize the UCS/FLL and clock sources\r
3 //    File: hal_ucs.c\r
4 //\r
5 //    Texas Instruments\r
6 //\r
7 //    Version 1.2\r
8 //    11/24/09\r
9 //\r
10 //    V1.0  Initial Version\r
11 //    V1.1  Added timeout function\r
12 //    V1.1  Added parameter for XTDrive\r
13 //*******************************************************************************\r
14 \r
15 \r
16 #ifndef __hal_UCS\r
17 #define __hal_UCS\r
18 \r
19 #include <stdint.h>\r
20 #include "hal_macros.h"\r
21 \r
22 /*************************************************************************\r
23 * MACROS\r
24 **************************************************************************/\r
25 \r
26 /* Select source for FLLREF  e.g. SELECT_FLLREF(SELREF__XT1CLK) */\r
27 #define SELECT_FLLREF(source) st(UCSCTL3 = (UCSCTL3 & ~(SELREF_7)) | (source);) \r
28 /* Select source for ACLK    e.g. SELECT_ACLK(SELA__XT1CLK) */\r
29 #define SELECT_ACLK(source)   st(UCSCTL4 = (UCSCTL4 & ~(SELA_7))   | (source);) \r
30 /* Select source for MCLK    e.g. SELECT_MCLK(SELM__XT2CLK) */\r
31 #define SELECT_MCLK(source)   st(UCSCTL4 = (UCSCTL4 & ~(SELM_7))   | (source);) \r
32 /* Select source for SMCLK   e.g. SELECT_SMCLK(SELS__XT2CLK) */\r
33 #define SELECT_SMCLK(source)  st(UCSCTL4 = (UCSCTL4 & ~(SELS_7))   | (source);) \r
34 /* Select source for MCLK and SMCLK e.g. SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK) */\r
35 #define SELECT_MCLK_SMCLK(sources) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7 + SELS_7)) | (sources);)\r
36 \r
37 /* set ACLK/x */\r
38 #define ACLK_DIV(x)         st(UCSCTL5 = (UCSCTL5 & ~(DIVA_7)) | (DIVA__##x);)     \r
39 /* set MCLK/x */\r
40 #define MCLK_DIV(x)         st(UCSCTL5 = (UCSCTL5 & ~(DIVM_7)) | (DIVM__##x);)     \r
41 /* set SMCLK/x */\r
42 #define SMCLK_DIV(x)        st(UCSCTL5 = (UCSCTL5 & ~(DIVS_7)) | (DIVS__##x);)     \r
43 /* Select divider for FLLREF  e.g. SELECT_FLLREFDIV(2) */\r
44 #define SELECT_FLLREFDIV(x) st(UCSCTL3 = (UCSCTL3 & ~(FLLREFDIV_7))|(FLLREFDIV__##x);) \r
45 \r
46 //************************************************************************\r
47 // Defines\r
48 //************************************************************************\r
49 \r
50 #define UCS_STATUS_OK     0\r
51 #define UCS_STATUS_ERROR  1\r
52 \r
53 //====================================================================\r
54 /**\r
55  * Startup routine for 32kHz Cristal on LFXT1\r
56  *\r
57  * \param xtdrive: Bits defining the LFXT drive mode after startup\r
58  *\r
59 */\r
60 extern void LFXT_Start(uint16_t xtdrive);\r
61 \r
62 //====================================================================\r
63 /**\r
64  * Startup routine for 32kHz Cristal on LFXT1 with timeout counter\r
65  *\r
66  * \param xtdrive: Bits defining the LFXT drive mode after startup\r
67  * \param timeout: value for the timeout counter\r
68  *\r
69 */\r
70 extern uint16_t LFXT_Start_Timeout(uint16_t xtdrive, uint16_t timeout);\r
71 \r
72 //====================================================================\r
73 /**\r
74  * Startup routine for XT1\r
75  *\r
76  * \param xtdrive: Bits defining the XT drive mode\r
77  *\r
78 */\r
79 extern void XT1_Start(uint16_t xtdrive);\r
80 \r
81 //====================================================================\r
82 /**\r
83  * Startup routine for XT1 with timeout counter\r
84  *\r
85  * \param xtdrive: Bits defining the XT drive mode\r
86  * \param timeout: value for the timeout counter\r
87  *\r
88 */\r
89 extern uint16_t XT1_Start_Timeout(uint16_t xtdrive, uint16_t timeout);\r
90 \r
91 //====================================================================\r
92 /**\r
93  * Use XT1 in Bypasss mode\r
94  *\r
95 */\r
96 extern void XT1_Bypass(void);\r
97 \r
98 //====================================================================\r
99 /**\r
100  * Startup routine for XT2\r
101  *\r
102  * \param xtdrive: Bits defining the XT drive mode\r
103  *\r
104 */\r
105 extern void XT2_Start(uint16_t xtdrive);\r
106 \r
107 //====================================================================\r
108 /**\r
109  * Startup routine for XT2 with timeout counter\r
110  *\r
111  * \param xtdrive: Bits defining the XT drive mode\r
112  * \param timeout: value for the timeout counter\r
113  *\r
114 */\r
115 extern uint16_t XT2_Start_Timeout(uint16_t xtdrive, uint16_t timeout);\r
116 \r
117 //====================================================================\r
118 /**\r
119  * Use XT2 in Bypasss mode for MCLK\r
120  *\r
121 */\r
122 extern void XT2_Bypass(void);\r
123 \r
124 //====================================================================\r
125 /**\r
126   * Initializes FLL of the UCS and wait till settled\r
127   *\r
128   * \param fsystem  required system frequency (MCLK) in kHz\r
129   * \param ratio    ratio between fsystem and FLLREFCLK\r
130   */\r
131 extern void Init_FLL_Settle(uint16_t fsystem, uint16_t ratio);\r
132 \r
133 \r
134 //====================================================================\r
135 /**\r
136   * Initializes FLL of the UCS\r
137   *\r
138   * \param fsystem  required system frequency (MCLK) in kHz\r
139   * \param ratio    ratio between fsystem and FLLREFCLK\r
140   */\r
141 static void Init_FLL(uint16_t fsystem, uint16_t ratio);\r
142 \r
143 #endif /* __hal_UCS */\r