forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-04-18 de0f427ee76ab84d3afb22c92a2b065b1ce06d3e
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
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
/**
  ******************************************************************************
  * @file    fm33a0xxev_bt.h
  * @author  FM33A0XXEV Application Team
  * @version V1.0.0
  * @date    16-April-2020
  * @brief   This file contains all the functions prototypes for the BT firmware library.  
  ******************************************************************************
  */
  
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __FM33A0XXEV_BT_H
#define __FM33A0XXEV_BT_H
 
 
#ifdef __cplusplus
 extern "C" {
#endif
 
/* Includes ------------------------------------------------------------------*/
 
#include "FM33A0XXEV.h" 
   
#define    BTx_CR1_CHEN_Pos    7    /* ¸ß8λ¼ÆÊýÆ÷£¨BT1H»òBT2H£©Æô¶¯¿ØÖÆ  */
#define    BTx_CR1_CHEN_Msk    (0x1U << BTx_CR1_CHEN_Pos)
 
#define    BTx_CR1_CLEN_Pos    6    /* µÍ8λ¼ÆÊýÆ÷£¨BT1L»òBT2L£©Æô¶¯¿ØÖÆ
(Counter-Lowend enable)
1£ºÆô¶¯µÍ8bit¼ÆÊýÆ÷£¬ÔÚ¼ÆÊýÆ÷ģʽÏÂÆô¶¯Ê±½«Ô¤ÖÃÊýÖµºÍ¼ÓÔØÖµ·Ö±ð¼ÓÔØÖÁ¼ÆÊýÆ÷ºÍ±È½Ï¼Ä´æÆ÷£»²¶×½Ä£Ê½ÏÂÆô¶¯Ê±¼ÆÊýÆ÷ÓÉÁ㿪ʼ×ÔÓɼÆÊý£¬¼ÆÊýµ½0xFFFFºó²úÉúÒç³öÐźÅÈ»ºóÓÉÁã¿ªÊ¼ÖØÐ¼ÆÊý£¬²¶×½¹¦ÄÜÖ»¹¤×÷ÔÚ16λģʽ£»ÔÚ16λµÄ¶¨Ê±/¼ÆÊýºÍ²¶×½Ä£Ê½ÏÂCHEN×÷Ϊ¼ÆÊýÆ÷µÄÆô¶¯¿ØÖÆ£¬CLEN×Ô¶¯Ê§Ð§
0£ºÍ£Ö¹µÍ8bit¼ÆÊýÆ÷¼ÆÊý */
#define    BTx_CR1_CLEN_Msk    (0x1U << BTx_CR1_CLEN_Pos)
    /* Æô¶¯µÍ8bit¼ÆÊýÆ÷£¬ÔÚ¼ÆÊýÆ÷ģʽÏÂÆô¶¯Ê±½«Ô¤ÖÃÊýÖµºÍ¼ÓÔØÖµ·Ö±ð¼ÓÔØÖÁ¼ÆÊýÆ÷ºÍ±È½Ï¼Ä´æÆ÷£»²¶×½Ä£Ê½ÏÂÆô¶¯Ê±¼ÆÊýÆ÷ÓÉÁ㿪ʼ×ÔÓɼÆÊý£¬¼ÆÊýµ½0xFFFFºó²úÉúÒç³öÐźÅÈ»ºóÓÉÁã¿ªÊ¼ÖØÐ¼ÆÊý£¬²¶×½¹¦ÄÜÖ»¹¤×÷ÔÚ16λģʽ£»ÔÚ16λµÄ¶¨Ê±/¼ÆÊýºÍ²¶×½Ä£Ê½ÏÂCHEN×÷Ϊ¼ÆÊýÆ÷µÄÆô¶¯¿ØÖÆ£¬CLEN×Ô¶¯Ê§Ð§ */
    /* Í£Ö¹µÍ8bit¼ÆÊýÆ÷¼ÆÊý */
 
#define    BTx_CR1_MODE_Pos    5    /* ¹¤×÷ģʽѡÔñ (work mode)
1£º16λ²¶×½Ä£Ê½
0£º8λ¶¨Ê±/¼ÆÊýģʽ£¬Èô¸ßλ¼ÆÊýÆ÷¼ÆÊýÔ´Ñ¡ÔñΪµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬Ôò¿ÉʵÏÖ16λ¶¨Ê±/¼ÆÊýģʽ */
#define    BTx_CR1_MODE_Msk    (0x1U << BTx_CR1_MODE_Pos)
#define    BTx_CR1_MODE_CAPTURE    (0x1U << BTx_CR1_MODE_Pos)    /* 16λ²¶×½Ä£Ê½ */
#define    BTx_CR1_MODE_COUNTER    (0x0U << BTx_CR1_MODE_Pos)    /* 8λ¶¨Ê±/¼ÆÊýģʽ£¬Èô¸ßλ¼ÆÊýÆ÷¼ÆÊýÔ´Ñ¡ÔñΪµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬Ôò¿ÉʵÏÖ16λ¶¨Ê±/¼ÆÊýģʽ */
 
#define    BTx_CR1_EDGESEL_Pos    4    /* ¼ÆÊýģʽϵļÆÊýÑØºÍÖÜÆÚ²¶×½Ê±µÄ²¶×½ÑØÑ¡Ôñλ (edge select)
1£º¼ÆÊýģʽ²ÉÑù¼ÆÊýԴϽµÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÏÂÑØ²¶×½
0£º¼ÆÊýģʽ²ÉÑù¼ÆÊýÔ´ÉÏÉýÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÉÏÑØ²¶×½
×¢£º²»Ö§³ÖϵͳʱÖÓµÄϽµÑؼÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪϵͳʱÖÓʱѡÔñϽµÑؽ«²»»áÓÐЧ¼ÆÊý¡£ */
#define    BTx_CR1_EDGESEL_Msk    (0x1U << BTx_CR1_EDGESEL_Pos)
#define    BTx_CR1_EDGESEL_FALLING    (0x1U << BTx_CR1_EDGESEL_Pos)    /* ¼ÆÊýģʽ²ÉÑù¼ÆÊýԴϽµÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÏÂÑØ²¶×½ */
#define    BTx_CR1_EDGESEL_RISING    (0x0U << BTx_CR1_EDGESEL_Pos)    /* ¼ÆÊýģʽ²ÉÑù¼ÆÊýÔ´ÉÏÉýÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÉÏÑØ²¶×½ */
 
#define    BTx_CR1_CAPMOD_Pos    3    /* ²¶×½Ä£Ê½¿ØÖÆ£¨Ö»ÔÚ²¶×½Ä£Ê½ÏÂÓÐЧ£©(capture mode)
1£ºÂö³å¿í¶È²¶×½
0£ºÂö³åÖÜÆÚ²¶×½ */
#define    BTx_CR1_CAPMOD_Msk    (0x1U << BTx_CR1_CAPMOD_Pos)
#define    BTx_CR1_CAPMOD_PULSE    (0x1U << BTx_CR1_CAPMOD_Pos)    /* Âö³å¿í¶È²¶×½ */
#define    BTx_CR1_CAPMOD_CYCLE    (0x0U << BTx_CR1_CAPMOD_Pos)    /* Âö³åÖÜÆÚ²¶×½ */
 
#define    BTx_CR1_CAPCLR_Pos    2    /* ´øÇåÁ㲶׽ģʽ¿ØÖÆ (capture clear)
1£º²»ÂÛÔÚÂö³å¿í¶È»¹ÊÇÖÜÆÚ²¶×½Çé¿öÏ£¬²¶×½µ½µÚÒ»¸öÑØºó½«¼ÆÊýÆ÷ÇåÁã²úÉúÖжϣ¬²¶×½µ½µÚ¶þ¸öÑØºóËø´æ£¨Ëø´æµ½¸ßµÍλԤÖÃÊý¼Ä´æÆ÷£©¼ÆÊýÖµ²¢Í¬Ê±ÇåÁã¼ÆÊýÆ÷
0£º²¶×½²»ÇåÁ㣬¼ÆÊýÆ÷Ò»Ö±×ÔÓɼÆÊý */
#define    BTx_CR1_CAPCLR_Msk    (0x1U << BTx_CR1_CAPCLR_Pos)
    /* ²»ÂÛÔÚÂö³å¿í¶È»¹ÊÇÖÜÆÚ²¶×½Çé¿öÏ£¬²¶×½µ½µÚÒ»¸öÑØºó½«¼ÆÊýÆ÷ÇåÁã²úÉúÖжϣ¬²¶×½µ½µÚ¶þ¸öÑØºóËø´æ£¨Ëø´æµ½¸ßµÍλԤÖÃÊý¼Ä´æÆ÷£©¼ÆÊýÖµ²¢Í¬Ê±ÇåÁã¼ÆÊýÆ÷ */
    /* ²¶×½²»ÇåÁ㣬¼ÆÊýÆ÷Ò»Ö±×ÔÓɼÆÊý */
 
#define    BTx_CR1_CAPONCE_Pos    1    /* µ¥´Î²¶×½¿ØÖÆ (capture once)
1£ºµ¥´Î²¶×½ÓÐЧ£¬ÔÚ²¶×½µ½Ò»´ÎÂö³å¿í¶È»òÂö³åÖÜÆÚºó¼ÆÊýÆ÷Í£Ö¹£¬ÈôÐèÒªÔٴβ¶×½ÐèÖØÐÂÆô¶¯
0£ºÁ¬Ðø²¶×½ */
#define    BTx_CR1_CAPONCE_Msk    (0x1U << BTx_CR1_CAPONCE_Pos)
#define    BTx_CR1_CAPONCE_SINGLE    (0x1U << BTx_CR1_CAPONCE_Pos)    /* µ¥´Î²¶×½ÓÐЧ£¬ÔÚ²¶×½µ½Ò»´ÎÂö³å¿í¶È»òÂö³åÖÜÆÚºó¼ÆÊýÆ÷Í£Ö¹£¬ÈôÐèÒªÔٴβ¶×½ÐèÖØÐÂÆô¶¯ */
#define    BTx_CR1_CAPONCE_CONTINUE    (0x0U << BTx_CR1_CAPONCE_Pos)    /* Á¬Ðø²¶×½ */
 
#define    BTx_CR1_PWM_Pos    0    /* PWMģʽÊä³ö (pulse width modulation)
1£ºPWMÊä³öʹÄÜ
0£ºPWM Êä³ö²»Ê¹ÄÜ */
#define    BTx_CR1_PWM_Msk    (0x1U << BTx_CR1_PWM_Pos)
    /* PWMÊä³öʹÄÜ */
    /* PWM Êä³ö²»Ê¹ÄÜ */
 
#define    BTx_CR2_SIG2SEL_Pos    7    /* ¼ÆÊýÆ÷ÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡Ôñ (signal group2 select)
1£ºÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup2
0£ºÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup1 */
#define    BTx_CR2_SIG2SEL_Msk    (0x1U << BTx_CR2_SIG2SEL_Pos)
#define    BTx_CR2_SIG2SEL_GROUP2    (0x1U << BTx_CR2_SIG2SEL_Pos)    /* ÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup2 */
#define    BTx_CR2_SIG2SEL_GROUP1    (0x0U << BTx_CR2_SIG2SEL_Pos)    /* ÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup1 */
 
#define    BTx_CR2_SIG1SEL_Pos    6    /* ¼ÆÊýÆ÷ÄÚ²¿²¶×½Ô´ÐźÅÑ¡Ôñ (signal group1 select)
1£ºÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup1
0£ºÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup2 */
#define    BTx_CR2_SIG1SEL_Msk    (0x1U << BTx_CR2_SIG1SEL_Pos)
#define    BTx_CR2_SIG1SEL_GROUP1    (0x1U << BTx_CR2_SIG1SEL_Pos)    /* ÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup1 */
#define    BTx_CR2_SIG1SEL_GROUP2    (0x0U << BTx_CR2_SIG1SEL_Pos)    /* ÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup2 */
 
#define    BTx_CR2_CNTHSEL_Pos    4    /* ¸ß8λ¼ÆÊýÆ÷¼ÆÊýÔ´Ñ¡Ôñ (Counter Highend source select)
00/11£ºÑ¡ÔñET1µÄµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬ÓëµÍλ¼ÆÊýÆ÷×é³É16λ¼ÆÊýÆ÷
01£ºÑ¡ÔñÄÚ²¿²¶×½Ô´ÐźÅ
10£ºÑ¡ÔñÄÚ²¿¼ÆÊýÔ´ÐźŻòÍⲿDIRÊäÈë×éºÏÐźŠ*/
#define    BTx_CR2_CNTHSEL_Msk    (0x3U << BTx_CR2_CNTHSEL_Pos)
#define    BTx_CR2_CNTHSEL_COUNTER    (0x0U << BTx_CR2_CNTHSEL_Pos)    /* Ñ¡ÔñET1µÄµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬ÓëµÍλ¼ÆÊýÆ÷×é³É16λ¼ÆÊýÆ÷ */
#define    BTx_CR2_CNTHSEL_CAPTURE    (0x1U << BTx_CR2_CNTHSEL_Pos)    /* Ñ¡ÔñÄÚ²¿²¶×½Ô´ÐźŠ*/
#define    BTx_CR2_CNTHSEL_INNER    (0x2U << BTx_CR2_CNTHSEL_Pos)    /* Ñ¡ÔñÄÚ²¿¼ÆÊýÔ´ÐźŻòÍⲿDIRÊäÈë×éºÏÐźŠ*/
 
#define    BTx_CR2_DIREN_Pos    3    /* ÍⲿÊäÈëDIR¿ØÖÆÊ¹ÄÜ¡£Í¨³£µçÁ¿Âö³åÊä³öʱͬʱ»áÊä³öÒ»¸öÓÉ¸ßµÍµçÆ½Ö¸Ê¾Õý·´ÏòµÄ·½ÏòÐźÅDIR¡£µç·½«Í¨¹ýDIRÐÅºÅµçÆ½µÄ¸ßµÍ£¬·Ö±ð¿ØÖƸßλ¼ÆÊýÆ÷ºÍµÍλ¼ÆÊýÆ÷¼ÆÊýʹÄÜ£¬ÒÔʵÏÖÕë¶ÔÕýÏò¡¢·´ÏòÂö³åµÄ¸÷ÖÖ¼ÆÊý¹¦ÄÜ (direction bit enable)
1£ºÍⲿÊäÈëµÄDIRÐźÅÓÐЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý¿ÉÓÉÍⲿÊäÈëµÄDIRÐźſØÖÆ¡£
0£ºÍⲿÊäÈëµÄDIRÐźÅÎÞЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý½«ÓÉÄÚ²¿¿ØÖÆÐźſØÖÆ¡£ */
#define    BTx_CR2_DIREN_Msk    (0x1U << BTx_CR2_DIREN_Pos)
    /* ÍⲿÊäÈëµÄDIRÐźÅÓÐЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý¿ÉÓÉÍⲿÊäÈëµÄDIRÐźſØÖÆ¡£ */
    /* ÍⲿÊäÈëµÄDIRÐźÅÎÞЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý½«ÓÉÄÚ²¿¿ØÖÆÐźſØÖÆ¡£ */
 
#define    BTx_CR2_STDIR_Pos    2    /* ÄÚ²¿DIR¿ØÖÆÐźţ¬µ±DIRENΪ0£¬¼´ÍⲿÊäÈëDIR¿ØÖÆÎÞЧʱ£¬¿ÉÓɸÃÐźŴúÌæDIRÊäÈ룬ֱ½Ó¿ØÖÆÄÚ²¿¼ÆÊýÆ÷µÄ¼ÆÊý¡£µ±ÐèÒªÍⲿDIRÊäÈ룬¼´DIRENΪ1ʱ£¬¸ÃλӦÉèÖÃΪ0 (set direction)
1£ºÄÚ²¿DIRÐźÅΪ¸ßµçƽ£¬Ôò¸ß8λ¼ÆÊýÆ÷¼ÆÊý */
#define    BTx_CR2_STDIR_Msk    (0x1U << BTx_CR2_STDIR_Pos)
    /* ÄÚ²¿DIRÐźÅΪ¸ßµçƽ£¬Ôò¸ß8λ¼ÆÊýÆ÷¼ÆÊý */
 
#define    BTx_CR2_SRCSEL_Pos    1    /* µÍλ¼ÆÊýÆ÷¼ÆÊýʹÄÜ¿ØÖÆÑ¡ÔñÐźŠ(source select)
1µÍλ¼ÆÊýÆ÷¼ÆÊýʹÄܶËÑ¡Ôò³£Ê¹ÄÜ¡£´ËʱµÍλ¼ÆÊýÆ÷¼ÆÊý²»ÊÜDIR¿ØÖÆ£¬¿É½«Õý·´ÏòËùÓÐÂö³åÒ»²¢¼ÆÊý
0£ºµÍλ¼ÆÊýÆ÷¼ÆÊýʹÄܶËÑ¡ÔòÓɼĴæÆ÷STDIR»òÍⲿEX_SIG2ÊäÈë¿ØÖÆ¡£ */
#define    BTx_CR2_SRCSEL_Msk    (0x1U << BTx_CR2_SRCSEL_Pos)
    /* µÍλ¼ÆÊýÆ÷¼ÆÊýʹÄܶËÑ¡ÔòÓɼĴæÆ÷STDIR»òÍⲿEX_SIG2ÊäÈë¿ØÖÆ¡£ */
 
#define    BTx_CR2_DIRPO_Pos    0    /* ÊäÈëÐźÅ2¼«ÐÔÑ¡Ôñ (direction polarity)
1£º¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2·´Ïò
0£º¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2²»·´Ïò */
#define    BTx_CR2_DIRPO_Msk    (0x1U << BTx_CR2_DIRPO_Pos)
#define    BTx_CR2_DIRPO_REVERSE    (0x1U << BTx_CR2_DIRPO_Pos)    /* ¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2·´Ïò */
#define    BTx_CR2_DIRPO_NON    (0x0U << BTx_CR2_DIRPO_Pos)    /* ¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2²»·´Ïò */
 
#define    BTx_CFGR1_RTCSEL2_Pos    6    /* RTCOUT2ÐźÅÑ¡Ôñ¿ØÖÆ2 (RTCOUT2 source select)
00 = 32768Hz£¬XTLFʱÖÓÊä³ö
01 = RTCSec£¬ÓÉRTCÄ£¿éÊä³öµÄÃëÐźÅ
10 = RTCMin£¬ÓÉRTCÄ£¿éÊä³öµÄ·ÖÖÓÐźÅ
11 = RFU */
#define    BTx_CFGR1_RTCSEL2_Msk    (0x3U << BTx_CFGR1_RTCSEL2_Pos)
#define    BTx_CFGR1_RTCSEL2_32768HZ    (0x0U << BTx_CFGR1_RTCSEL2_Pos)
#define    BTx_CFGR1_RTCSEL2_RTC_SEC    (0x1U << BTx_CFGR1_RTCSEL2_Pos)
#define    BTx_CFGR1_RTCSEL2_RTC_MIN    (0x2U << BTx_CFGR1_RTCSEL2_Pos)
 
#define    BTx_CFGR1_RTCSEL1_Pos    4    /* RTCOUT1ÐźÅÑ¡Ôñ¿ØÖÆ1 (RTCOUT1 source select)
00 = 32768Hz£¬XTLFʱÖÓÊä³ö
01 = RTCSec£¬ÓÉRTCÄ£¿éÊä³öµÄÃëÐźÅ
10 = RTCMin£¬ÓÉRTCÄ£¿éÊä³öµÄ·ÖÖÓÐźÅ
11 = RFU */
#define    BTx_CFGR1_RTCSEL1_Msk    (0x3U << BTx_CFGR1_RTCSEL1_Pos)
#define    BTx_CFGR1_RTCSEL1_32768HZ    (0x0U << BTx_CFGR1_RTCSEL1_Pos)
#define    BTx_CFGR1_RTCSEL1_RTC_SEC    (0x1U << BTx_CFGR1_RTCSEL1_Pos)
#define    BTx_CFGR1_RTCSEL1_RTC_MIN    (0x2U << BTx_CFGR1_RTCSEL1_Pos)
 
#define    BTx_CFGR1_GRP2SEL_Pos    2    /* Group2ÐźÅÑ¡Ôñ¿ØÖÆ (Group2 source select)
00 = APBCLK
01 = RTCOUT2
10 = IN_SIG2£¬ÄÚ²¿ÊäÈëÐźÅ2
11 = EX_SIG2£¬ÍⲿÊäÈëÐźÅ2
×¢£º²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ */
#define    BTx_CFGR1_GRP2SEL_Msk    (0x3U << BTx_CFGR1_GRP2SEL_Pos)
#define    BTx_CFGR1_GRP2SEL_APBCLK    (0x0U << BTx_CFGR1_GRP2SEL_Pos)    /* ²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ */
#define    BTx_CFGR1_GRP2SEL_RTCOUT2    (0x1U << BTx_CFGR1_GRP2SEL_Pos)
#define    BTx_CFGR1_GRP2SEL_IN_SIG2    (0x2U << BTx_CFGR1_GRP2SEL_Pos)
#define    BTx_CFGR1_GRP2SEL_EX_SIG2    (0x3U << BTx_CFGR1_GRP2SEL_Pos)
 
#define    BTx_CFGR1_GRP1SEL_Pos    0    /* Group1ÐźÅÑ¡Ôñ¿ØÖÆ£¨¿É×÷Ϊ²¶×½Ä£Ê½Ï²ÉÑùʱÖÓÑ¡Ôñ£¬Í¬Ê±¿É×÷ΪÐźŲ¶×½Ô´£©(Group1 source select)
00 = APBCLK
01 = RTCOUT1
10 = IN_SIG1£¬ÄÚ²¿ÊäÈëÐźÅ1
11 = EX_SIG1£¬ÍⲿÊäÈëÐźÅ1
×¢£º²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ */
#define    BTx_CFGR1_GRP1SEL_Msk    (0x3U << BTx_CFGR1_GRP1SEL_Pos)
#define    BTx_CFGR1_GRP1SEL_APBCLK    (0x0U << BTx_CFGR1_GRP1SEL_Pos)    /* ²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ */
#define    BTx_CFGR1_GRP1SEL_RTCOUT1    (0x1U << BTx_CFGR1_GRP1SEL_Pos)
#define    BTx_CFGR1_GRP1SEL_IN_SIG1    (0x2U << BTx_CFGR1_GRP1SEL_Pos)
#define    BTx_CFGR1_GRP1SEL_EX_SIG1    (0x3U << BTx_CFGR1_GRP1SEL_Pos)
 
#define    BTx_CFGR2_EXSEL2_Pos    6    /* ÍⲿÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ2 (external source select2)
00 = BT1_IN0/BT2_IN0
01 = BT1_IN1/BT2_IN1
10 = BT1_IN2/BT2_IN2
11 = BT1_IN3/BT2_IN3 */
#define    BTx_CFGR2_EXSEL2_Msk    (0x3U << BTx_CFGR2_EXSEL2_Pos)
#define    BTx_CFGR2_EXSEL2_IN0    (0x0U << BTx_CFGR2_EXSEL2_Pos)
#define    BTx_CFGR2_EXSEL2_IN1    (0x1U << BTx_CFGR2_EXSEL2_Pos)
#define    BTx_CFGR2_EXSEL2_IN2    (0x2U << BTx_CFGR2_EXSEL2_Pos)
#define    BTx_CFGR2_EXSEL2_IN3    (0x3U << BTx_CFGR2_EXSEL2_Pos)
 
#define    BTx_CFGR2_EXSEL1_Pos    4    /* ÍⲿÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ1 (external source select1)
00 = BT1_IN0/BT2_IN0
01 = BT1_IN1/BT2_IN1
10 = BT1_IN2/BT2_IN2
11 = BT1_IN3/BT2_IN3 */
#define    BTx_CFGR2_EXSEL1_Msk    (0x3U << BTx_CFGR2_EXSEL1_Pos)
#define    BTx_CFGR2_EXSEL1_IN0    (0x0U << BTx_CFGR2_EXSEL1_Pos)
#define    BTx_CFGR2_EXSEL1_IN1    (0x1U << BTx_CFGR2_EXSEL1_Pos)
#define    BTx_CFGR2_EXSEL1_IN2    (0x2U << BTx_CFGR2_EXSEL1_Pos)
#define    BTx_CFGR2_EXSEL1_IN3    (0x3U << BTx_CFGR2_EXSEL1_Pos)
 
#define    BTx_CFGR2_INSEL2_Pos    2    /* ÄÚ²¿ÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ2 (internal source select 2)
00 = UART_RX3/UART_RX3
01 = UART_RX4/UART_RX4
10 = UART_RX5/UART_RX5
11 = RCLP/BT1_OUT */
#define    BTx_CFGR2_INSEL2_Msk    (0x3U << BTx_CFGR2_INSEL2_Pos)
#define    BTx_CFGR2_INSEL2_RX3    (0x0U << BTx_CFGR2_INSEL2_Pos)
#define    BTx_CFGR2_INSEL2_RX4    (0x1U << BTx_CFGR2_INSEL2_Pos)
#define    BTx_CFGR2_INSEL2_RX5    (0x2U << BTx_CFGR2_INSEL2_Pos)
#define    BTx_CFGR2_INSEL2_RCLP    (0x3U << BTx_CFGR2_INSEL2_Pos)
 
#define    BTx_CFGR2_INSEL1_Pos    0    /* ÄÚ²¿ÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ1 (internal source select 1)
00 = UART_RX0/UART_RX0
01 = UART_RX1/UART_RX1
10 = UART_RX2/UART_RX2
11 = RCLP/RCLP */
#define    BTx_CFGR2_INSEL1_Msk    (0x3U << BTx_CFGR2_INSEL1_Pos)
#define    BTx_CFGR2_INSEL1_RX0    (0x0U << BTx_CFGR2_INSEL1_Pos)
#define    BTx_CFGR2_INSEL1_RX1    (0x1U << BTx_CFGR2_INSEL1_Pos)
#define    BTx_CFGR2_INSEL1_RX2    (0x2U << BTx_CFGR2_INSEL1_Pos)
#define    BTx_CFGR2_INSEL1_RCLP    (0x3U << BTx_CFGR2_INSEL1_Pos)
 
#define    BTx_PRES_PRESCALE_Pos    0    /* ÊäÈëGroup1µÄÔ¤·ÖƵ¼Ä´æÆ÷ (Group1 input signal prescaler)
·ÖƵÊý=£¨X+1£©£¬¼´00±íʾ1·ÖƵ£¬FF±íʾ256·ÖƵ¡£Ô¤·ÖƵºóµÄÐźŶ¼Îªµ¥ÖÜÆÚÂö³åµÄÐÎʽ£¬Õ¼¿Õ±È1:X */
#define    BTx_PRES_PRESCALE_Msk    (0xffU << BTx_PRES_PRESCALE_Pos)
 
#define    BTx_LOADCR_LHEN_Pos    4    /* ¸ßλ¼ÓÔØ¿ØÖÆ (Counter highend load enable)
д1½«Ô¤ÖÃÊý¼Ä´æÆ÷ET1PRESETHºÍ¼ÓÔØ¼Ä´æÆ÷ET1LOADH·Ö±ð¼ÓÔØµ½¼ÆÊýÖµ¼Ä´æÆ÷ET1CNTHºÍ±È½Ï¼Ä´æÆ÷ET1CMPH£¬Ð´0ÎÞЧ£¬¸ÃλӲ¼þ×Ô¶¯Çå0¡£ÔÚ16λµÄ¶¨Ê±/¼ÆÊýÏÂLHEN×÷Ϊ¼ÆÊýÆ÷µÄ¼ÓÔØ¿ØÖÆ£¬LLEN×Ô¶¯Ê§Ð§ */
#define    BTx_LOADCR_LHEN_Msk    (0x1U << BTx_LOADCR_LHEN_Pos)
 
#define    BTx_LOADCR_LLEN_Pos    0    /* µÍλ¼ÓÔØ¿ØÖÆ (Counter lowend load enable)
д1½«Ô¤ÖÃÊý¼Ä´æÆ÷PRESETLºÍ¼ÓÔØ¼Ä´æÆ÷LOADL·Ö±ð¼ÓÔØµ½¼ÆÊýÖµ¼Ä´æÆ÷ET1CNTLºÍ±È½Ï¼Ä´æÆ÷ET1CMPL£¬Ð´0ÎÞЧ£¬¸ÃλӲ¼þ×Ô¶¯Çå0¡£ÔÚ16λµÄ¶¨Ê±/¼ÆÊýÏÂLHEN×÷Ϊ¼ÆÊýÆ÷µÄ¼ÓÔØ¿ØÖÆ£¬LLEN×Ô¶¯Ê§Ð§ */
#define    BTx_LOADCR_LLEN_Msk    (0x1U << BTx_LOADCR_LLEN_Pos)
 
#define    BTx_CNTL_CNTL_Pos    0    /* ¼ÆÊýÆ÷µÍλ¼ÆÊýÖµ¼Ä´æÆ÷ (counter lowend)
LLENÓÐЧʱ¼ÓÔØÔ¤ÖÃÊýµ½¸Ã¼Ä´æÆ÷¡£ */
#define    BTx_CNTL_CNTL_Msk    (0xffU << BTx_CNTL_CNTL_Pos)
 
#define    BTx_CNTH_CNTH_Pos    0    /* ¼ÆÊýÆ÷¸ßλ¼ÆÊýÖµ¼Ä´æÆ÷ (counter highend)
LHENÓÐЧʱ¼ÓÔØÔ¤ÖÃÊýµ½¸Ã¼Ä´æÆ÷¡£ */
#define    BTx_CNTH_CNTH_Msk    (0xffU << BTx_CNTH_CNTH_Pos)
 
#define    BTx_PRESET_PRESETH_Pos    8    /* ¼ÆÊýÆ÷¸ßλԤÖÃÊý¼Ä´æÆ÷ (preset highend)
ÓÃÓÚ±£´æ¸ßλ¼ÆÊýÆ÷³õÖµ£¬»ò±£´æ²¶×½½á¹û¸ß8bit */
#define    BTx_PRESET_PRESETH_Msk    (0xffU << BTx_PRESET_PRESETH_Pos)
 
#define    BTx_PRESET_PRESETL_Pos    0    /* ¼ÆÊýÆ÷µÍλԤÖÃÊý¼Ä´æÆ÷ (preset lowend)
ÓÃÓÚ±£´æµÍλ¼ÆÊýÆ÷³õÖµ£¬»ò±£´æ²¶×½½á¹ûµÍ8bit */
#define    BTx_PRESET_PRESETL_Msk    (0xffU << BTx_PRESET_PRESETL_Pos)
 
#define    BTx_LOADL_LOADL_Pos    0    /* ¼ÆÊýÆ÷µÍλ¼ÓÔØ¼Ä´æÆ÷ (load lowend counter)
ÔÚ¼ÆÊýÆ¥Åä»òÖ´ÐмÓÔØÃüÁîʱ½«¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØÖÁ±È½Ï¹¤×÷¼Ä´æÆ÷¡£ */
#define    BTx_LOADL_LOADL_Msk    (0xffU << BTx_LOADL_LOADL_Pos)
 
#define    BTx_LOADH_LOADH_Pos    0    /* ¼ÆÊýÆ÷¸ßλ¼ÓÔØ¼Ä´æÆ÷ (load highend counter)
ÔÚ¼ÆÊýÆ¥Åä»òÖ´ÐмÓÔØÃüÁîʱ½«¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØÖÁ±È½Ï¹¤×÷¼Ä´æÆ÷¡£µ±¹¤×÷ÔÚ8λ¶¨Ê±/¼ÆÊýÆ÷ģʽʱ£¬¸Ã¸ßλ¼ÓÔØ¼Ä´æÆ÷²»Ö§³Ö¼ÓÔØÖµÎª0x00µÄÉèÖᣠ*/
#define    BTx_LOADH_LOADH_Msk    (0xffU << BTx_LOADH_LOADH_Pos)
 
#define    BTx_CMPL_CMPL_Pos    0    /* ¼ÆÊýÆ÷µÍλ±È½Ï¼Ä´æÆ÷ (compare lowend )
¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØºó½«Ð´Èë¸Ã¼Ä´æÆ÷£¬¸Ã¼Ä´æÆ÷Óë¼ÆÊýÆ÷±È½Ï£¬Èô¼ÆÊýÖµ´óÓÚµÈÓڸüĴæÆ÷µÄÖµ£¬Ôò²úÉú¼ÆÊýÆ¥ÅäÐźÅÖÁÊä³ö¿ØÖÆÄ£¿é£¬²¢²úÉúÏàÓ¦Öжϡ£ */
#define    BTx_CMPL_CMPL_Msk    (0xffU << BTx_CMPL_CMPL_Pos)
 
#define    BTx_CMPH_CMPH_Pos    0    /* ¼ÆÊýÆ÷¸ßλ±È½Ï¼Ä´æÆ÷ (compare highend)
¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØºó½«Ð´Èë¸Ã¼Ä´æÆ÷£¬¸Ã¼Ä´æÆ÷Óë¼ÆÊýÆ÷±È½Ï£¬Èô¼ÆÊýÖµ´óÓÚµÈÓڸüĴæÆ÷µÄÖµ£¬Ôò²úÉú¼ÆÊýÆ¥ÅäÐźÅÖÁÊä³ö¿ØÖÆÄ£¿é£¬²¢²úÉúÏàÓ¦Öжϡ£ */
#define    BTx_CMPH_CMPH_Msk    (0xffU << BTx_CMPH_CMPH_Pos)
 
#define    BTx_OUTCNT_OUTCNT_Pos    0    /* ¼ÆÊýÆ÷Êä³öÂö³å¿í¶È¼ÆÊýÆ÷ (output pulse width counter)
¸Ã¼Ä´æÆ÷ÓÃÓÚµ÷ÕûÊä³öÂö³å¿í¶È¡£¼ÆÊýʱÖÓΪ32768Hz£¬¶ÔÓ¦µÄÊä³öÂö³å¿í¶È·¶Î§Îª30.5uS~125mS¡£Êä³öÂö³å¿í¶È=(OUTCNT+1)/32768Ãë */
#define    BTx_OUTCNT_OUTCNT_Msk    (0xfffU << BTx_OUTCNT_OUTCNT_Pos)
 
#define    BTx_OCR_OUTCLR_Pos    5
#define    BTx_OCR_OUTCLR_Msk    (0x1U << BTx_OCR_OUTCLR_Pos)
#define    BTx_OCR_OUTCLR_INVALID    (0x0U << BTx_OCR_OUTCLR_Pos)
#define    BTx_OCR_OUTCLR_CLEAR    (0x1U << BTx_OCR_OUTCLR_Pos)
 
#define    BTx_OCR_OUTINV_Pos    4
#define    BTx_OCR_OUTINV_Msk    (0x1U << BTx_OCR_OUTINV_Pos)
#define    BTx_OCR_OUTINV_NORMAL    (0x0U << BTx_OCR_OUTINV_Pos)
#define    BTx_OCR_OUTINV_REVERSE    (0x1U << BTx_OCR_OUTINV_Pos)
 
#define    BTx_OCR_OUTMOD_Pos    3
#define    BTx_OCR_OUTMOD_Msk    (0x1U << BTx_OCR_OUTMOD_Pos)
#define    BTx_OCR_OUTMOD_PULSE_SHIFT    (0x0U << BTx_OCR_OUTMOD_Pos)
#define    BTx_OCR_OUTMOD_NEG    (0x1U << BTx_OCR_OUTMOD_Pos)
 
#define    BTx_OCR_OUTSEL_Pos    0
#define    BTx_OCR_OUTSEL_Msk    (0x7U << BTx_OCR_OUTSEL_Pos)
#define    BTx_OCR_OUTSEL_HIGH    (0x0U << BTx_OCR_OUTSEL_Pos)
#define    BTx_OCR_OUTSEL_LOW    (0x1U << BTx_OCR_OUTSEL_Pos)
#define    BTx_OCR_OUTSEL_GROUP1    (0x2U << BTx_OCR_OUTSEL_Pos)
#define    BTx_OCR_OUTSEL_GROUP2    (0x3U << BTx_OCR_OUTSEL_Pos)
#define    BTx_OCR_OUTSEL_PWM    (0x4U << BTx_OCR_OUTSEL_Pos)
 
#define    BTx_IER_CMPHIE_Pos    4    /* À©Õ¹¶¨Ê±Æ÷¸ßλ±È½Ï·¢ÉúÐźŠ(compare highend interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ */
#define    BTx_IER_CMPHIE_Msk    (0x1U << BTx_IER_CMPHIE_Pos)
 
#define    BTx_IER_CMPLIE_Pos    3    /* À©Õ¹¶¨Ê±Æ÷µÍλ±È½Ï·¢ÉúÐźŠ(compare lowend interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ */
#define    BTx_IER_CMPLIE_Msk    (0x1U << BTx_IER_CMPLIE_Pos)
 
#define    BTx_IER_OVHIE_Pos    2    /* ¶¨Ê±Æ÷¸ßλÒç³öÐźŠ(highend overflow interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ */
#define    BTx_IER_OVHIE_Msk    (0x1U << BTx_IER_OVHIE_Pos)
 
#define    BTx_IER_OVLIE_Pos    1    /* ¶¨Ê±Æ÷µÍλÒç³öÐźŠ(lowend overflow interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ */
#define    BTx_IER_OVLIE_Msk    (0x1U << BTx_IER_OVLIE_Pos)
 
#define    BTx_IER_CAPIE_Pos    0    /* ¶¨Ê±Æ÷²¶×½²úÉúÐźŠ(capture interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ */
#define    BTx_IER_CAPIE_Msk    (0x1U << BTx_IER_CAPIE_Pos)
 
#define    BTx_ISR_EDGESTA_Pos    5    /* ²¶×½ÑØ×´Ì¬
1 = ²¶×½µ½ÏÂÑØ
0 = ²¶×½µ½ÉÏÑØ */
#define    BTx_ISR_EDGESTA_Msk    (0x1U << BTx_ISR_EDGESTA_Pos)
 
#define    BTx_ISR_CMPHIF_Pos    4    /* ¶¨Ê±Æ÷¸ßλ±È½Ï·¢ÉúÐźŠ(compare highend interrupt flag)
1 = µ±Ç°¼ÆÊýÆ÷µÄÖµ´óÓÚµÈÓڱȽϼĴæÆ÷µÄÖµ£¬¸ÃÐźŽ«ÖØÐ¼ÓÔØÐµļÓÔØ¼Ä´æÆ÷µÄÖµµ½¹¤×÷¼Ä´æÆ÷¡£
0 = µ±Ç°¼ÆÊýÆ÷µÄֵСÓڱȽϼĴæÆ÷µÄÖµ */
#define    BTx_ISR_CMPHIF_Msk    (0x1U << BTx_ISR_CMPHIF_Pos)
 
#define    BTx_ISR_CMPLIF_Pos    3    /* ¶¨Ê±Æ÷µÍλ±È½Ï·¢ÉúÐźŠ(compare lowend interrupt flag)
1 = µ±Ç°¼ÆÊýÆ÷µÄÖµ´óÓÚµÈÓڱȽϼĴæÆ÷µÄÖµ£¬¸ÃÐźŽ«ÖØÐ¼ÓÔØÐµļÓÔØ¼Ä´æÆ÷µÄÖµµ½¹¤×÷¼Ä´æÆ÷¡£
0 = µ±Ç°¼ÆÊýÆ÷µÄֵСÓڱȽϼĴæÆ÷µÄÖµ */
#define    BTx_ISR_CMPLIF_Msk    (0x1U << BTx_ISR_CMPLIF_Pos)
 
#define    BTx_ISR_OVHIF_Pos    2    /* ¶¨Ê±Æ÷¸ßλÒç³öÐźŠ(highend overflow interrupt flag)
1 = ²úÉú¼ÆÊýÒç³ö
0 = Î´²úÉúÒç³ö */
#define    BTx_ISR_OVHIF_Msk    (0x1U << BTx_ISR_OVHIF_Pos)
 
#define    BTx_ISR_OVLIF_Pos    1    /* ¶¨Ê±Æ÷µÍλÒç³öÐźŠ(lowend overflow interrupt flag)
1 = ²úÉú¼ÆÊýÒç³ö
0 = Î´²úÉúÒç³ö */
#define    BTx_ISR_OVLIF_Msk    (0x1U << BTx_ISR_OVLIF_Pos)
 
#define    BTx_ISR_CAPIF_Pos    0    /* ¶¨Ê±Æ÷²¶×½²úÉúÐźŠ(capture interrupt flag)
1 = ²¶×½µ½Ö¸¶¨µÄÑØ
0 = Î´²¶×½µ½Ö¸¶¨µÄÑØ */
#define    BTx_ISR_CAPIF_Msk    (0x1U << BTx_ISR_CAPIF_Pos)
//Macro_End
 
/* Exported functions --------------------------------------------------------*/ 
extern void BTx_Deinit(BT_Type* BTx);
 
/* ¸ß8λ¼ÆÊýÆ÷£¨BT1H»òBT2H£©Æô¶¯¿ØÖÆ  Ïà¹Øº¯Êý */
extern void BTx_CR1_CHEN_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR1_CHEN_Getable(BT_Type* BTx);
 
/* µÍ8λ¼ÆÊýÆ÷£¨BT1L»òBT2L£©Æô¶¯¿ØÖÆ
(Counter-Lowend enable)
1£ºÆô¶¯µÍ8bit¼ÆÊýÆ÷£¬ÔÚ¼ÆÊýÆ÷ģʽÏÂÆô¶¯Ê±½«Ô¤ÖÃÊýÖµºÍ¼ÓÔØÖµ·Ö±ð¼ÓÔØÖÁ¼ÆÊýÆ÷ºÍ±È½Ï¼Ä´æÆ÷£»²¶×½Ä£Ê½ÏÂÆô¶¯Ê±¼ÆÊýÆ÷ÓÉÁ㿪ʼ×ÔÓɼÆÊý£¬¼ÆÊýµ½0xFFFFºó²úÉúÒç³öÐźÅÈ»ºóÓÉÁã¿ªÊ¼ÖØÐ¼ÆÊý£¬²¶×½¹¦ÄÜÖ»¹¤×÷ÔÚ16λģʽ£»ÔÚ16λµÄ¶¨Ê±/¼ÆÊýºÍ²¶×½Ä£Ê½ÏÂCHEN×÷Ϊ¼ÆÊýÆ÷µÄÆô¶¯¿ØÖÆ£¬CLEN×Ô¶¯Ê§Ð§
0£ºÍ£Ö¹µÍ8bit¼ÆÊýÆ÷¼ÆÊý Ïà¹Øº¯Êý */
extern void BTx_CR1_CLEN_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR1_CLEN_Getable(BT_Type* BTx);
 
/* ¹¤×÷ģʽѡÔñ (work mode)
1£º16λ²¶×½Ä£Ê½
0£º8λ¶¨Ê±/¼ÆÊýģʽ£¬Èô¸ßλ¼ÆÊýÆ÷¼ÆÊýÔ´Ñ¡ÔñΪµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬Ôò¿ÉʵÏÖ16λ¶¨Ê±/¼ÆÊýģʽ Ïà¹Øº¯Êý */
extern void BTx_CR1_MODE_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR1_MODE_Get(BT_Type* BTx);
 
/* ¼ÆÊýģʽϵļÆÊýÑØºÍÖÜÆÚ²¶×½Ê±µÄ²¶×½ÑØÑ¡Ôñλ (edge select)
1£º¼ÆÊýģʽ²ÉÑù¼ÆÊýԴϽµÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÏÂÑØ²¶×½
0£º¼ÆÊýģʽ²ÉÑù¼ÆÊýÔ´ÉÏÉýÑØ£¬ÖÜÆÚ²¶×½Ä£Ê½Ê±ÉÏÑØ²¶×½
×¢£º²»Ö§³ÖϵͳʱÖÓµÄϽµÑؼÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪϵͳʱÖÓʱѡÔñϽµÑؽ«²»»áÓÐЧ¼ÆÊý¡£ Ïà¹Øº¯Êý */
extern void BTx_CR1_EDGESEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR1_EDGESEL_Get(BT_Type* BTx);
 
/* ²¶×½Ä£Ê½¿ØÖÆ£¨Ö»ÔÚ²¶×½Ä£Ê½ÏÂÓÐЧ£©(capture mode)
1£ºÂö³å¿í¶È²¶×½
0£ºÂö³åÖÜÆÚ²¶×½ Ïà¹Øº¯Êý */
extern void BTx_CR1_CAPMOD_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR1_CAPMOD_Get(BT_Type* BTx);
 
/* ´øÇåÁ㲶׽ģʽ¿ØÖÆ (capture clear)
1£º²»ÂÛÔÚÂö³å¿í¶È»¹ÊÇÖÜÆÚ²¶×½Çé¿öÏ£¬²¶×½µ½µÚÒ»¸öÑØºó½«¼ÆÊýÆ÷ÇåÁã²úÉúÖжϣ¬²¶×½µ½µÚ¶þ¸öÑØºóËø´æ£¨Ëø´æµ½¸ßµÍλԤÖÃÊý¼Ä´æÆ÷£©¼ÆÊýÖµ²¢Í¬Ê±ÇåÁã¼ÆÊýÆ÷
0£º²¶×½²»ÇåÁ㣬¼ÆÊýÆ÷Ò»Ö±×ÔÓɼÆÊý Ïà¹Øº¯Êý */
extern void BTx_CR1_CAPCLR_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR1_CAPCLR_Getable(BT_Type* BTx);
 
/* µ¥´Î²¶×½¿ØÖÆ (capture once)
1£ºµ¥´Î²¶×½ÓÐЧ£¬ÔÚ²¶×½µ½Ò»´ÎÂö³å¿í¶È»òÂö³åÖÜÆÚºó¼ÆÊýÆ÷Í£Ö¹£¬ÈôÐèÒªÔٴβ¶×½ÐèÖØÐÂÆô¶¯
0£ºÁ¬Ðø²¶×½ Ïà¹Øº¯Êý */
extern void BTx_CR1_CAPONCE_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR1_CAPONCE_Get(BT_Type* BTx);
 
/* PWMģʽÊä³ö (pulse width modulation)
1£ºPWMÊä³öʹÄÜ
0£ºPWM Êä³ö²»Ê¹ÄÜ Ïà¹Øº¯Êý */
extern void BTx_CR1_PWM_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR1_PWM_Getable(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷ÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡Ôñ (signal group2 select)
1£ºÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup2
0£ºÄÚ²¿¼ÆÊýÔ´ÐźÅÑ¡ÔñGroup1 Ïà¹Øº¯Êý */
extern void BTx_CR2_SIG2SEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR2_SIG2SEL_Get(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷ÄÚ²¿²¶×½Ô´ÐźÅÑ¡Ôñ (signal group1 select)
1£ºÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup1
0£ºÄÚ²¿²¶×½Ô´ÐźÅÑ¡ÔñGroup2 Ïà¹Øº¯Êý */
extern void BTx_CR2_SIG1SEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR2_SIG1SEL_Get(BT_Type* BTx);
 
/* ¸ß8λ¼ÆÊýÆ÷¼ÆÊýÔ´Ñ¡Ôñ (Counter Highend source select)
00/11£ºÑ¡ÔñET1µÄµÍλ¼ÆÊýÆ÷µÄÒç³öÐźţ¬ÓëµÍλ¼ÆÊýÆ÷×é³É16λ¼ÆÊýÆ÷
01£ºÑ¡ÔñÄÚ²¿²¶×½Ô´ÐźÅ
10£ºÑ¡ÔñÄÚ²¿¼ÆÊýÔ´ÐźŻòÍⲿDIRÊäÈë×éºÏÐźŠÏà¹Øº¯Êý */
extern void BTx_CR2_CNTHSEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR2_CNTHSEL_Get(BT_Type* BTx);
 
/* ÍⲿÊäÈëDIR¿ØÖÆÊ¹ÄÜ¡£Í¨³£µçÁ¿Âö³åÊä³öʱͬʱ»áÊä³öÒ»¸öÓÉ¸ßµÍµçÆ½Ö¸Ê¾Õý·´ÏòµÄ·½ÏòÐźÅDIR¡£µç·½«Í¨¹ýDIRÐÅºÅµçÆ½µÄ¸ßµÍ£¬·Ö±ð¿ØÖƸßλ¼ÆÊýÆ÷ºÍµÍλ¼ÆÊýÆ÷¼ÆÊýʹÄÜ£¬ÒÔʵÏÖÕë¶ÔÕýÏò¡¢·´ÏòÂö³åµÄ¸÷ÖÖ¼ÆÊý¹¦ÄÜ (direction bit enable)
1£ºÍⲿÊäÈëµÄDIRÐźÅÓÐЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý¿ÉÓÉÍⲿÊäÈëµÄDIRÐźſØÖÆ¡£
0£ºÍⲿÊäÈëµÄDIRÐźÅÎÞЧ£¬´Ëʱ¸ßµÍλ¼ÆÊýÆ÷ÊÇ·ñ¼ÆÊý½«ÓÉÄÚ²¿¿ØÖÆÐźſØÖÆ¡£ Ïà¹Øº¯Êý */
extern void BTx_CR2_DIREN_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR2_DIREN_Getable(BT_Type* BTx);
 
/* ÄÚ²¿DIR¿ØÖÆÐźţ¬µ±DIRENΪ0£¬¼´ÍⲿÊäÈëDIR¿ØÖÆÎÞЧʱ£¬¿ÉÓɸÃÐźŴúÌæDIRÊäÈ룬ֱ½Ó¿ØÖÆÄÚ²¿¼ÆÊýÆ÷µÄ¼ÆÊý¡£µ±ÐèÒªÍⲿDIRÊäÈ룬¼´DIRENΪ1ʱ£¬¸ÃλӦÉèÖÃΪ0 (set direction)
1£ºÄÚ²¿DIRÐźÅΪ¸ßµçƽ£¬Ôò¸ß8λ¼ÆÊýÆ÷¼ÆÊý Ïà¹Øº¯Êý */
extern void BTx_CR2_STDIR_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR2_STDIR_Getable(BT_Type* BTx);
 
/* µÍλ¼ÆÊýÆ÷¼ÆÊýʹÄÜ¿ØÖÆÑ¡ÔñÐźŠ(source select)
1µÍλ¼ÆÊýÆ÷¼ÆÊýʹÄܶËÑ¡Ôò³£Ê¹ÄÜ¡£´ËʱµÍλ¼ÆÊýÆ÷¼ÆÊý²»ÊÜDIR¿ØÖÆ£¬¿É½«Õý·´ÏòËùÓÐÂö³åÒ»²¢¼ÆÊý
0£ºµÍλ¼ÆÊýÆ÷¼ÆÊýʹÄܶËÑ¡ÔòÓɼĴæÆ÷STDIR»òÍⲿEX_SIG2ÊäÈë¿ØÖÆ¡£ Ïà¹Øº¯Êý */
extern void BTx_CR2_SRCSEL_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_CR2_SRCSEL_Getable(BT_Type* BTx);
 
/* ÊäÈëÐźÅ2¼«ÐÔÑ¡Ôñ (direction polarity)
1£º¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2·´Ïò
0£º¶ÔÍⲿÊäÈëDIRÐźÅEX_SIG2²»·´Ïò Ïà¹Øº¯Êý */
extern void BTx_CR2_DIRPO_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CR2_DIRPO_Get(BT_Type* BTx);
 
/* RTCOUT2ÐźÅÑ¡Ôñ¿ØÖÆ2 (RTCOUT2 source select)
00 = 32768Hz£¬XTLFʱÖÓÊä³ö
01 = RTCSec£¬ÓÉRTCÄ£¿éÊä³öµÄÃëÐźÅ
10 = RTCMin£¬ÓÉRTCÄ£¿éÊä³öµÄ·ÖÖÓÐźÅ
11 = RFU Ïà¹Øº¯Êý */
extern void BTx_CFGR1_RTCSEL2_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR1_RTCSEL2_Get(BT_Type* BTx);
 
/* RTCOUT1ÐźÅÑ¡Ôñ¿ØÖÆ1 (RTCOUT1 source select)
00 = 32768Hz£¬XTLFʱÖÓÊä³ö
01 = RTCSec£¬ÓÉRTCÄ£¿éÊä³öµÄÃëÐźÅ
10 = RTCMin£¬ÓÉRTCÄ£¿éÊä³öµÄ·ÖÖÓÐźÅ
11 = RFU Ïà¹Øº¯Êý */
extern void BTx_CFGR1_RTCSEL1_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR1_RTCSEL1_Get(BT_Type* BTx);
 
/* Group2ÐźÅÑ¡Ôñ¿ØÖÆ (Group2 source select)
00 = APBCLK
01 = RTCOUT2
10 = IN_SIG2£¬ÄÚ²¿ÊäÈëÐźÅ2
11 = EX_SIG2£¬ÍⲿÊäÈëÐźÅ2
×¢£º²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ Ïà¹Øº¯Êý */
extern void BTx_CFGR1_GRP2SEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR1_GRP2SEL_Get(BT_Type* BTx);
 
/* Group1ÐźÅÑ¡Ôñ¿ØÖÆ£¨¿É×÷Ϊ²¶×½Ä£Ê½Ï²ÉÑùʱÖÓÑ¡Ôñ£¬Í¬Ê±¿É×÷ΪÐźŲ¶×½Ô´£©(Group1 source select)
00 = APBCLK
01 = RTCOUT1
10 = IN_SIG1£¬ÄÚ²¿ÊäÈëÐźÅ1
11 = EX_SIG1£¬ÍⲿÊäÈëÐźÅ1
×¢£º²»Ö§³ÖAPBCLKµÄϽµÑز¶×½ºÍ¼ÆÊý£¬²¶×½Ô´ºÍ¼ÆÊýԴΪAPBCLKʱѡÔñϽµÑؽ«²»»áÓÐЧ²¶×½ºÍ¼ÆÊý¡£ Ïà¹Øº¯Êý */
extern void BTx_CFGR1_GRP1SEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR1_GRP1SEL_Get(BT_Type* BTx);
 
/* ÍⲿÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ2 (external source select2)
00 = BT1_IN0/BT2_IN0
01 = BT1_IN1/BT2_IN1
10 = BT1_IN2/BT2_IN2
11 = BT1_IN3/BT2_IN3 Ïà¹Øº¯Êý */
extern void BTx_CFGR2_EXSEL2_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR2_EXSEL2_Get(BT_Type* BTx);
 
/* ÍⲿÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ1 (external source select1)
00 = BT1_IN0/BT2_IN0
01 = BT1_IN1/BT2_IN1
10 = BT1_IN2/BT2_IN2
11 = BT1_IN3/BT2_IN3 Ïà¹Øº¯Êý */
extern void BTx_CFGR2_EXSEL1_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR2_EXSEL1_Get(BT_Type* BTx);
 
/* ÄÚ²¿ÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ2 (internal source select 2)
00 = UART_RX3/UART_RX3
01 = UART_RX4/UART_RX4
10 = UART_RX5/UART_RX5
11 = RCLP/BT1_OUT Ïà¹Øº¯Êý */
extern void BTx_CFGR2_INSEL2_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR2_INSEL2_Get(BT_Type* BTx);
 
/* ÄÚ²¿ÊäÈëÐźÅÑ¡Ôñ¿ØÖÆ1 (internal source select 1)
00 = UART_RX0/UART_RX0
01 = UART_RX1/UART_RX1
10 = UART_RX2/UART_RX2
11 = RCLP/RCLP Ïà¹Øº¯Êý */
extern void BTx_CFGR2_INSEL1_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CFGR2_INSEL1_Get(BT_Type* BTx);
 
/* ÊäÈëGroup1µÄÔ¤·ÖƵ¼Ä´æÆ÷ (Group1 input signal prescaler)
·ÖƵÊý=£¨X+1£©£¬¼´00±íʾ1·ÖƵ£¬FF±íʾ256·ÖƵ¡£Ô¤·ÖƵºóµÄÐźŶ¼Îªµ¥ÖÜÆÚÂö³åµÄÐÎʽ£¬Õ¼¿Õ±È1:X Ïà¹Øº¯Êý */
extern void BTx_PRES_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_PRES_Read(BT_Type* BTx);
 
/* ¸ßλ¼ÓÔØ¿ØÖÆ (Counter highend load enable)
д1½«Ô¤ÖÃÊý¼Ä´æÆ÷ET1PRESETHºÍ¼ÓÔØ¼Ä´æÆ÷ET1LOADH·Ö±ð¼ÓÔØµ½¼ÆÊýÖµ¼Ä´æÆ÷ET1CNTHºÍ±È½Ï¼Ä´æÆ÷ET1CMPH£¬Ð´0ÎÞЧ£¬¸ÃλӲ¼þ×Ô¶¯Çå0¡£ÔÚ16λµÄ¶¨Ê±/¼ÆÊýÏÂLHEN×÷Ϊ¼ÆÊýÆ÷µÄ¼ÓÔØ¿ØÖÆ£¬LLEN×Ô¶¯Ê§Ð§ Ïà¹Øº¯Êý */
extern void BTx_LOADCR_LHEN_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_LOADCR_LHEN_Getable(BT_Type* BTx);
 
/* µÍλ¼ÓÔØ¿ØÖÆ (Counter lowend load enable)
д1½«Ô¤ÖÃÊý¼Ä´æÆ÷PRESETLºÍ¼ÓÔØ¼Ä´æÆ÷LOADL·Ö±ð¼ÓÔØµ½¼ÆÊýÖµ¼Ä´æÆ÷ET1CNTLºÍ±È½Ï¼Ä´æÆ÷ET1CMPL£¬Ð´0ÎÞЧ£¬¸ÃλӲ¼þ×Ô¶¯Çå0¡£ÔÚ16λµÄ¶¨Ê±/¼ÆÊýÏÂLHEN×÷Ϊ¼ÆÊýÆ÷µÄ¼ÓÔØ¿ØÖÆ£¬LLEN×Ô¶¯Ê§Ð§ Ïà¹Øº¯Êý */
extern void BTx_LOADCR_LLEN_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_LOADCR_LLEN_Getable(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷µÍλ¼ÆÊýÖµ¼Ä´æÆ÷ (counter lowend)
LLENÓÐЧʱ¼ÓÔØÔ¤ÖÃÊýµ½¸Ã¼Ä´æÆ÷¡£ Ïà¹Øº¯Êý */
extern uint32_t BTx_CNTL_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷¸ßλ¼ÆÊýÖµ¼Ä´æÆ÷ (counter highend)
LHENÓÐЧʱ¼ÓÔØÔ¤ÖÃÊýµ½¸Ã¼Ä´æÆ÷¡£ Ïà¹Øº¯Êý */
extern uint32_t BTx_CNTH_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷¸ßλԤÖÃÊý¼Ä´æÆ÷ (preset highend)
ÓÃÓÚ±£´æ¸ßλ¼ÆÊýÆ÷³õÖµ£¬»ò±£´æ²¶×½½á¹û¸ß8bit Ïà¹Øº¯Êý */
extern void BTx_PRESET_PRESETH_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_PRESET_PRESETH_Get(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷µÍλԤÖÃÊý¼Ä´æÆ÷ (preset lowend)
ÓÃÓÚ±£´æµÍλ¼ÆÊýÆ÷³õÖµ£¬»ò±£´æ²¶×½½á¹ûµÍ8bit Ïà¹Øº¯Êý */
extern void BTx_PRESET_PRESETL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_PRESET_PRESETL_Get(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷µÍλ¼ÓÔØ¼Ä´æÆ÷ (load lowend counter)
ÔÚ¼ÆÊýÆ¥Åä»òÖ´ÐмÓÔØÃüÁîʱ½«¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØÖÁ±È½Ï¹¤×÷¼Ä´æÆ÷¡£ Ïà¹Øº¯Êý */
extern void BTx_LOADL_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_LOADL_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷¸ßλ¼ÓÔØ¼Ä´æÆ÷ (load highend counter)
ÔÚ¼ÆÊýÆ¥Åä»òÖ´ÐмÓÔØÃüÁîʱ½«¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØÖÁ±È½Ï¹¤×÷¼Ä´æÆ÷¡£µ±¹¤×÷ÔÚ8λ¶¨Ê±/¼ÆÊýÆ÷ģʽʱ£¬¸Ã¸ßλ¼ÓÔØ¼Ä´æÆ÷²»Ö§³Ö¼ÓÔØÖµÎª0x00µÄÉèÖᣠÏà¹Øº¯Êý */
extern void BTx_LOADH_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_LOADH_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷µÍλ±È½Ï¼Ä´æÆ÷ (compare lowend )
¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØºó½«Ð´Èë¸Ã¼Ä´æÆ÷£¬¸Ã¼Ä´æÆ÷Óë¼ÆÊýÆ÷±È½Ï£¬Èô¼ÆÊýÖµ´óÓÚµÈÓڸüĴæÆ÷µÄÖµ£¬Ôò²úÉú¼ÆÊýÆ¥ÅäÐźÅÖÁÊä³ö¿ØÖÆÄ£¿é£¬²¢²úÉúÏàÓ¦Öжϡ£ Ïà¹Øº¯Êý */
extern void BTx_CMPL_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CMPL_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷¸ßλ±È½Ï¼Ä´æÆ÷ (compare highend)
¼ÓÔØ¼Ä´æÆ÷µÄÖµ¼ÓÔØºó½«Ð´Èë¸Ã¼Ä´æÆ÷£¬¸Ã¼Ä´æÆ÷Óë¼ÆÊýÆ÷±È½Ï£¬Èô¼ÆÊýÖµ´óÓÚµÈÓڸüĴæÆ÷µÄÖµ£¬Ôò²úÉú¼ÆÊýÆ¥ÅäÐźÅÖÁÊä³ö¿ØÖÆÄ£¿é£¬²¢²úÉúÏàÓ¦Öжϡ£ Ïà¹Øº¯Êý */
extern void BTx_CMPH_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_CMPH_Read(BT_Type* BTx);
 
/* ¼ÆÊýÆ÷Êä³öÂö³å¿í¶È¼ÆÊýÆ÷ (output pulse width counter)
¸Ã¼Ä´æÆ÷ÓÃÓÚµ÷ÕûÊä³öÂö³å¿í¶È¡£¼ÆÊýʱÖÓΪ32768Hz£¬¶ÔÓ¦µÄÊä³öÂö³å¿í¶È·¶Î§Îª30.5uS~125mS¡£Êä³öÂö³å¿í¶È=(OUTCNT+1)/32768Ãë Ïà¹Øº¯Êý */
extern void BTx_OUTCNT_Write(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_OUTCNT_Read(BT_Type* BTx);
extern void BTx_OCR_OUTCLR_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_OCR_OUTCLR_Get(BT_Type* BTx);
extern void BTx_OCR_OUTINV_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_OCR_OUTINV_Get(BT_Type* BTx);
extern void BTx_OCR_OUTMOD_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_OCR_OUTMOD_Get(BT_Type* BTx);
extern void BTx_OCR_OUTSEL_Set(BT_Type* BTx, uint32_t SetValue);
extern uint32_t BTx_OCR_OUTSEL_Get(BT_Type* BTx);
 
/* À©Õ¹¶¨Ê±Æ÷¸ßλ±È½Ï·¢ÉúÐźŠ(compare highend interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ Ïà¹Øº¯Êý */
extern void BTx_IER_CMPHIE_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_IER_CMPHIE_Getable(BT_Type* BTx);
 
/* À©Õ¹¶¨Ê±Æ÷µÍλ±È½Ï·¢ÉúÐźŠ(compare lowend interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ Ïà¹Øº¯Êý */
extern void BTx_IER_CMPLIE_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_IER_CMPLIE_Getable(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷¸ßλÒç³öÐźŠ(highend overflow interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ Ïà¹Øº¯Êý */
extern void BTx_IER_OVHIE_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_IER_OVHIE_Getable(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷µÍλÒç³öÐźŠ(lowend overflow interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ Ïà¹Øº¯Êý */
extern void BTx_IER_OVLIE_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_IER_OVLIE_Getable(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷²¶×½²úÉúÐźŠ(capture interrupt enable)
1 = ÖжÏʹÄÜ
0 = ÖжϽûÖ¹ Ïà¹Øº¯Êý */
extern void BTx_IER_CAPIE_Setable(BT_Type* BTx, FunState NewState);
extern FunState BTx_IER_CAPIE_Getable(BT_Type* BTx);
 
/* ²¶×½ÑØ×´Ì¬
1 = ²¶×½µ½ÏÂÑØ
0 = ²¶×½µ½ÉÏÑØ */
extern FlagStatus BTx_ISR_EDGESTA_Chk(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷¸ßλ±È½Ï·¢ÉúÐźŠ(compare highend interrupt flag)
1 = µ±Ç°¼ÆÊýÆ÷µÄÖµ´óÓÚµÈÓڱȽϼĴæÆ÷µÄÖµ£¬¸ÃÐźŽ«ÖØÐ¼ÓÔØÐµļÓÔØ¼Ä´æÆ÷µÄÖµµ½¹¤×÷¼Ä´æÆ÷¡£
0 = µ±Ç°¼ÆÊýÆ÷µÄֵСÓڱȽϼĴæÆ÷µÄÖµ Ïà¹Øº¯Êý */
extern void BTx_ISR_CMPHIF_Clr(BT_Type* BTx);
extern FlagStatus BTx_ISR_CMPHIF_Chk(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷µÍλ±È½Ï·¢ÉúÐźŠ(compare lowend interrupt flag)
1 = µ±Ç°¼ÆÊýÆ÷µÄÖµ´óÓÚµÈÓڱȽϼĴæÆ÷µÄÖµ£¬¸ÃÐźŽ«ÖØÐ¼ÓÔØÐµļÓÔØ¼Ä´æÆ÷µÄÖµµ½¹¤×÷¼Ä´æÆ÷¡£
0 = µ±Ç°¼ÆÊýÆ÷µÄֵСÓڱȽϼĴæÆ÷µÄÖµ Ïà¹Øº¯Êý */
extern void BTx_ISR_CMPLIF_Clr(BT_Type* BTx);
extern FlagStatus BTx_ISR_CMPLIF_Chk(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷¸ßλÒç³öÐźŠ(highend overflow interrupt flag)
1 = ²úÉú¼ÆÊýÒç³ö
0 = Î´²úÉúÒç³ö Ïà¹Øº¯Êý */
extern void BTx_ISR_OVHIF_Clr(BT_Type* BTx);
extern FlagStatus BTx_ISR_OVHIF_Chk(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷µÍλÒç³öÐźŠ(lowend overflow interrupt flag)
1 = ²úÉú¼ÆÊýÒç³ö
0 = Î´²úÉúÒç³ö Ïà¹Øº¯Êý */
extern void BTx_ISR_OVLIF_Clr(BT_Type* BTx);
extern FlagStatus BTx_ISR_OVLIF_Chk(BT_Type* BTx);
 
/* ¶¨Ê±Æ÷²¶×½²úÉúÐźŠ(capture interrupt flag)
1 = ²¶×½µ½Ö¸¶¨µÄÑØ
0 = Î´²¶×½µ½Ö¸¶¨µÄÑØ Ïà¹Øº¯Êý */
extern void BTx_ISR_CAPIF_Clr(BT_Type* BTx);
extern FlagStatus BTx_ISR_CAPIF_Chk(BT_Type* BTx);
//Announce_End
 
#ifdef __cplusplus
}
#endif
 
#endif /*__FM33A0XXEV_BT_H */