forked from Jia-xinSu/MSP430F149DriverLib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmsp430f149_gpio.h
475 lines (445 loc) · 13.2 KB
/
msp430f149_gpio.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
/*
*@file: msp430f149_gpio.h
*@author:13电子-Jiaxin
*@version:1.0
*@date:2017年6月22日
*@brif:msp430f149的GPIO模块
*/
#ifndef __MSP430F149_GPIO_H
#define __MSP430F149_GPIO_H
#ifdef __cplusplus
extern "C"
{
#endif
/*Includes----------------------------------------------------------------*/
#include "hw_memmap.h"
/*Macro-------------------------------------------------------------------*/
/*
*@brif: 定义GPIO的Port口
*@for functions: GPIO_setAsOutputPin
* GPIO_setAsInputPin
* GPIO_clearInierrupt
* GPIO_enableInterrupt
* GPIO_disableInterrupt
* GPIO_getInputPinValue
* GPIO_setOutputHighOnPin
* GPIO_setOutputLowOnPin
* GPIO_writePort
* GPIO_getPortInputValue
* GPIO_toggleOutputOnPin
* GPIO_setAsPeripheralModuleFunctionOutputPin
* GPIO_setAsPeripheralModuleFunctionInputPin
* GPIO_selectInterruptEdge
* GPIO_selectInterruptEdge
*@{
*/
#define GPIO_Port_1 ((uint8_t)1) /*!<选择Port1口*/
#define GPIO_Port_2 ((uint8_t)2) /*!<选择Port2口*/
#define GPIO_Port_3 ((uint8_t)3) /*!<选择Port3口*/
#define GPIO_Port_4 ((uint8_t)4) /*!<选择Port4口*/
#define GPIO_Port_5 ((uint8_t)5) /*!<选择Port5口*/
#define GPIO_Port_6 ((uint8_t)6) /*!<选择Port6口*/
/*
*@}
*/
/*
*@brif: 定义GPIO的Pin管脚
*@for functions: GPIO_setAsOutputPin
* GPIO_setAsInputPin
* GPIO_clearInierrupt
* GPIO_enableInterrupt
* GPIO_disableInterrupt
* GPIO_getInputPinValue
* GPIO_setOutputHighOnPin
* GPIO_setOutputLowOnPin
* GPIO_toggleOutputOnPin
* GPIO_setAsPeripheralModuleFunctionOutputPin
* GPIO_setAsPeripheralModuleFunctionInputPin
* GPIO_selectInterruptEdge
* GPIO_selectInterruptEdge
*@{
*/
#define GPIO_Pin_0 ((uint8_t)0x01) /*!<选择Pin0管脚*/
#define GPIO_Pin_1 ((uint8_t)0x02) /*!<选择Pin1管脚*/
#define GPIO_Pin_2 ((uint8_t)0x04) /*!<选择Pin2管脚*/
#define GPIO_Pin_3 ((uint8_t)0x08) /*!<选择Pin3管脚*/
#define GPIO_Pin_4 ((uint8_t)0x10) /*!<选择Pin4管脚*/
#define GPIO_Pin_5 ((uint8_t)0x20) /*!<选择Pin5管脚*/
#define GPIO_Pin_6 ((uint8_t)0x40) /*!<选择Pin6管脚*/
#define GPIO_Pin_7 ((uint8_t)0x80) /*!<选择Pin7管脚*/
#define GPIO_Pin_ALL ((uint8_t)0xff) /*!<选择Pin7管脚*/
/*
*@}
*/
/*
*@brif: 定义GPIOPort1-2的偏置:
*@{
*/
#define GPIO_PA_OFSIN ((uint16_t)0x0000)/*!<管脚P1,2的PxIN偏置*/
#define GPIO_PA_OFSOUT ((uint16_t)0x0001)/*!<管脚P1,2的PxOUT偏置*/
#define GPIO_PA_OFSDIR ((uint16_t)0x0002)/*!<管脚P1,2的PxDIR偏置*/
#define GPIO_PA_OFSIFG ((uint16_t)0x0003)/*!<管脚P1,2的PxIFG偏置*/
#define GPIO_PA_OFSIES ((uint16_t)0x0004)/*!<管脚P1,2的PxIES偏置*/
#define GPIO_PA_OFSIE ((uint16_t)0x0005)/*!<管脚P1,2的PxIE偏置*/
#define GPIO_PA_OFSSEL ((uint16_t)0x0006)/*!<管脚P1,2的PxSEL偏置*/
/*
*@}
*/
/*
*@brif: 定义GPIOPort3-6的偏置:
*@{
*/
#define GPIO_PB_OFSSEL ((uint8_t)0x03)/*!<管脚P3-6的PxSEL偏置*/
/*
*@}
*/
/*
*@brif: 定义输入管脚的高低电平
*@functions: GPIO_getInputPinValue
*@{
*/
#define GPIO_PIN_INPUT_HIGH ((uint8_t)0x01)/*!<管脚输入为高电平*/
#define GPIO_PIN_INPUT_LOW ((uint8_t)0x00)/*!<管脚输入为低电平*/
/*
*@}
*/
/*
*@brif: 判断当前GPIO口是否有中断功能
*@{
*/
#define GPIO_HAVE_INTRRUPT(x) ((x==GPIO_Port_1)|| \
(x==GPIO_Port_2))
/*
*@}
*/
/*
*@brif: 判断当前GPIO口是否无中断功能
*@{
*/
#define GPIO_HAVE_NO_INTRRUPT(x) ((x==GPIO_Port_3)|| \
(x==GPIO_Port_4)|| \
(x==GPIO_Port_5)|| \
(x==GPIO_Port_6))
/*
*@}
*/
/*Enumeration-----------------------------------------------------------*/
/*
*@brief GPIO_LOW_TO_HIGH_TRANSITION上升沿与
* GPIO_HIGH_TO_LOW_TRANSITION下降沿的枚举
*@for functions: GPIO_selectInterruptEdge
*/
typedef enum{
GPIO_LOW_TO_HIGH_TRANSITION=0,
GPIO_HIGH_TO_LOW_TRANSITION=1
}GPIO_interruptEdge;
/*Functions-------------------------------------------------------------*/
/**
*@brief:设置GPIO口位输出模式
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setAsOutputPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO口位输入模式
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setAsInputPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:清除GPIO中P1,P2上的中断标志位
*@param: GPIO_Port_x选择需要清除标志位的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
*@param: GPIO_Pin_x选择清除标志位的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_clearInierrupt(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:允许GPIO中断
*@param: 允许产生中断信号的GPIO口
* \arg GPIO_Port_1
* GPIO_Port_2
*@param: GPIO_Pin_x允许产生中断的GPIO管脚
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_enableInterrupt(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:禁止GPIO中断
*@param: GPIO_Port_x禁止产生中断信号的GPIO口
* \arg GPIO_Port_1
* GPIO_Port_2
*@param: GPIO_Pin_x禁止产生中断的GPIO管脚
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_disableInterrupt(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:读GPIO管脚对应值
*@param: GPIO_Port_x选择要读的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择要读的管脚
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
*@retval:读出的高低电平值
* \arg GPIO_PIN_INPUT_HIGH
* GPIO_PIN_INPUT_LOW
*/
extern uint8_t GPIO_getInputPinValue(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO输出为高电平
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setOutputHighOnPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO输出为低电平
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setOutputLowOnPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO一组Port口的值
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param:value 设置值的8位数
*@retval:None
*/
extern void GPIO_writePort(uint8_t GPIO_Port_x,uint8_t Value);
/**
*@brief:读取GPIO一组Port口的输入值
*@param: GPIO_Port_x选择读取的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@retval:读取到的Port口的输入值
*/
extern uint8_t GPIO_getPortInputValue(uint8_t GPIO_Port_x);
/**
*@brief:设置GPIO输出取反
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_toggleOutputOnPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO为特殊功能口,输出模式
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setAsPeripheralModuleFunctionOutputPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brief:设置GPIO为特殊功能口,输入模式
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
* GPIO_Port_3
* GPIO_Port_4
* GPIO_Port_5
* GPIO_Port_6
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:None
*/
extern void GPIO_setAsPeripheralModuleFunctionInputPin(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
/**
*@brif:设置GPIO中断的中断沿
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@param: 选择中断沿
* \arg GPIO_LOW_TO_HIGH_TRANSITION
* GPIO_HIGH_TO_LOW_TRANSITION
*@retval:None
*/
extern void GPIO_selectInterruptEdge(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x,GPIO_interruptEdge GPIO_A_TO_B_TRANSITION);
/**
*@brief: 获取选中管脚的中断状态
*@param: GPIO_Port_x选择设置的Port口
* \arg GPIO_Port_1
* GPIO_Port_2
*@param: GPIO_Pin_x选择设置的管脚,可用以下值求或输入
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*@retval:选中管脚的中断状态,可为一下值求或
* \arg GPIO_Pin_0
* GPIO_Pin_1
* GPIO_Pin_2
* GPIO_Pin_3
* GPIO_Pin_4
* GPIO_Pin_5
* GPIO_Pin_6
* GPIO_Pin_7
* GPIO_Pin_ALL
*/
extern uint8_t GPIO_getInterruptStatus(uint8_t GPIO_Port_x,uint8_t GPIO_Pin_x);
#ifdef __cplusplus
}
#endif
#endif/*__MSP430F149_GPIO_H*/
/***********************CAFUC Electric Disgn *******End of Flie*******/