1 /******************************************************************************
2 *Copyright(C)2017, Huada Semiconductor Co.,Ltd All rights reserved.
3 *
4 * This software is owned and published by:
5 * Huada Semiconductor Co.,Ltd("HDSC").
6 *
7 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
8 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
9 *
10 * This software contains source code for use with HDSC
11 * components. This software is licensed by HDSC to be adapted only
12 * for use in systems utilizing HDSC components. HDSC shall not be
13 * responsible for misuse or illegal use of this software for devices not
14 * supported herein. HDSC is providing this software "AS IS" and will
15 * not be responsible for issues arising from incorrect user implementation
16 * of the software.
17 *
18 * Disclaimer:
19 * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
20 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
21 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
22 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
23 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
24 * WARRANTY OF NONINFRINGEMENT.
25 * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
26 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
27 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
28 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
29 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
30 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
31 * SAVINGS OR PROFITS,
32 * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
33 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
34 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
35 * FROM, THE SOFTWARE.
36 *
37 * This software may be replicated in part or whole for the licensed use,
38 * with the restriction that this Disclaimer and Copyright notice must be
39 * included with each copy of this software, whether used in part or whole,
40 * at all times.
41 */
42
43 /** \file pca.c
44 **
45 ** Common API of PCA.
46 ** @link pcaGroup Some description @endlink
47 **
48 ** - 2018-04-16 Husj First version
49 **
50 ******************************************************************************/
51
52 /*******************************************************************************
53 * Include files
54 ******************************************************************************/
55 #include "pca.h"
56 /**
57 *******************************************************************************
58 ** \addtogroup PcaGroup
59 ******************************************************************************/
60 //@{
61
62 /*******************************************************************************
63 * Local pre-processor symbols/macros ('#define')
64 ******************************************************************************/
65 #define IS_VALID_MODULE(x) (Module0 == (x) ||\
66 Module1 == (x) ||\
67 Module2 == (x) ||\
68 Module3 == (x) ||\
69 Module4 == (x))
70
71 /*******************************************************************************
72 * Global variable definitions (declared in header file with 'extern')
73 ******************************************************************************/
74
75 /*******************************************************************************
76 * Local type definitions ('typedef')
77 ******************************************************************************/
78
79 /*******************************************************************************
80 * Local variable definitions ('static')
81 ******************************************************************************/
82
83 /*******************************************************************************
84 * Local function prototypes ('static')
85 ******************************************************************************/
86 static func_ptr_t pfnPcaCallback = NULL;
87
88 /*******************************************************************************
89 * Function implementation - global ('extern') and local ('static')
90 ******************************************************************************/
91 /**
92 *****************************************************************************
93 ** \brief PCA中断标志获取
94 **
95 **
96 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
97 **
98 ** \retval TRUE or FALSE
99 *****************************************************************************/
Pca_GetIntFlag(en_pca_module_t enModule)100 boolean_t Pca_GetIntFlag(en_pca_module_t enModule)
101 {
102 boolean_t bRetVal = FALSE;
103
104 ASSERT(IS_VALID_MODULE(enModule));
105
106 switch (enModule)
107 {
108 case Module0:
109 bRetVal = M0P_PCA->CCON_f.CCF0 ? TRUE : FALSE;
110 break;
111 case Module1:
112 bRetVal = M0P_PCA->CCON_f.CCF1 ? TRUE : FALSE;
113 break;
114 case Module2:
115 bRetVal = M0P_PCA->CCON_f.CCF2 ? TRUE : FALSE;
116 break;
117 case Module3:
118 bRetVal = M0P_PCA->CCON_f.CCF3 ? TRUE : FALSE;
119 break;
120 case Module4:
121 bRetVal = M0P_PCA->CCON_f.CCF4 ? TRUE : FALSE;
122 break;
123 default:
124 bRetVal = FALSE;
125 break;
126 }
127
128 return bRetVal;
129 }
130
131 /**
132 *****************************************************************************
133 ** \brief PCA计数中断标志获取
134 **
135 **
136 **
137 ** \retval TRUE or FALSE
138 *****************************************************************************/
Pca_GetCntIntFlag(void)139 boolean_t Pca_GetCntIntFlag(void)
140 {
141 boolean_t bRetVal = FALSE;
142
143 bRetVal = M0P_PCA->CCON_f.CF ? TRUE : FALSE;
144
145 return bRetVal;
146 }
147
148 /**
149 *****************************************************************************
150 ** \brief PCA中断标志清除
151 **
152 **
153 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
154 **
155 ** \retval Ok or Error
156 *****************************************************************************/
Pca_ClearIntFlag(en_pca_module_t enModule)157 en_result_t Pca_ClearIntFlag(en_pca_module_t enModule)
158 {
159 en_result_t enResult = Error;
160
161 ASSERT(IS_VALID_MODULE(enModule));
162
163 switch (enModule)
164 {
165 case Module0:
166 M0P_PCA->ICLR_f.CCF0 = FALSE;
167 enResult = Ok;
168 break;
169 case Module1:
170 M0P_PCA->ICLR_f.CCF1 = FALSE;
171 enResult = Ok;
172 break;
173 case Module2:
174 M0P_PCA->ICLR_f.CCF2 = FALSE;
175 enResult = Ok;
176 break;
177 case Module3:
178 M0P_PCA->ICLR_f.CCF3 = FALSE;
179 enResult = Ok;
180 break;
181 case Module4:
182 M0P_PCA->ICLR_f.CCF4 = FALSE;
183 enResult = Ok;
184 break;
185 default:
186 enResult = Error;
187 break;
188 }
189
190 return enResult;
191 }
192
193 /**
194 *****************************************************************************
195 ** \brief PCA计数中断标志清除
196 **
197 **
198 **
199 ** \retval Ok or Error
200 *****************************************************************************/
Pca_ClearCntIntFlag(void)201 en_result_t Pca_ClearCntIntFlag(void)
202 {
203 en_result_t enResult = Error;
204
205 M0P_PCA->ICLR_f.CF = FALSE;
206 enResult = Ok;
207
208 return enResult;
209 }
210
211 /**
212 *****************************************************************************
213 ** \brief PCA中断服务程序
214 **
215 **
216 ** \param [in] u8Param == 0
217 **
218 *****************************************************************************/
Pca_IRQHandler(uint8_t u8Param)219 void Pca_IRQHandler(uint8_t u8Param)
220 {
221 if(NULL != pfnPcaCallback)
222 {
223 pfnPcaCallback();
224 }
225 }
226
227 /**
228 *****************************************************************************
229 ** \brief PCA中断使能
230 **
231 **
232 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
233 **
234 ** \retval Ok or Error
235 *****************************************************************************/
Pca_EnableIrq(en_pca_module_t enModule)236 en_result_t Pca_EnableIrq(en_pca_module_t enModule)
237 {
238 en_result_t enResult = Error;
239
240 ASSERT(IS_VALID_MODULE(enModule));
241
242 switch (enModule)
243 {
244 case Module0:
245 M0P_PCA->CCAPM0_f.CCIE = TRUE;
246 enResult = Ok;
247 break;
248 case Module1:
249 M0P_PCA->CCAPM1_f.CCIE = TRUE;
250 enResult = Ok;
251 break;
252 case Module2:
253 M0P_PCA->CCAPM2_f.CCIE = TRUE;
254 enResult = Ok;
255 break;
256 case Module3:
257 M0P_PCA->CCAPM3_f.CCIE = TRUE;
258 enResult = Ok;
259 break;
260 case Module4:
261 M0P_PCA->CCAPM4_f.CCIE = TRUE;
262 enResult = Ok;
263 break;
264 default:
265 enResult = Error;
266 break;
267 }
268
269 return enResult;
270 }
271
272 /**
273 *****************************************************************************
274 ** \brief PCA计数中断使能
275 **
276 **
277 **
278 **
279 ** \retval Ok or Error
280 *****************************************************************************/
Pca_EnableCntIrq(void)281 en_result_t Pca_EnableCntIrq (void)
282 {
283 en_result_t enResult = Error;
284
285 M0P_PCA->CMOD_f.CFIE = TRUE;
286 enResult = Ok;
287
288 return enResult;
289 }
290
291 /**
292 *****************************************************************************
293 ** \brief PCA中断禁止
294 **
295 **
296 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
297 **
298 ** \retval Ok or Error
299 *****************************************************************************/
Pca_DisableIrq(en_pca_module_t enModule)300 en_result_t Pca_DisableIrq(en_pca_module_t enModule)
301 {
302 en_result_t enResult = Error;
303
304 ASSERT(IS_VALID_MODULE(enModule));
305
306 switch (enModule)
307 {
308 case Module0:
309 M0P_PCA->CCAPM0_f.CCIE = FALSE;
310 enResult = Ok;
311 break;
312 case Module1:
313 M0P_PCA->CCAPM1_f.CCIE = FALSE;
314 enResult = Ok;
315 break;
316 case Module2:
317 M0P_PCA->CCAPM2_f.CCIE = FALSE;
318 enResult = Ok;
319 break;
320 case Module3:
321 M0P_PCA->CCAPM3_f.CCIE = FALSE;
322 enResult = Ok;
323 break;
324 case Module4:
325 M0P_PCA->CCAPM4_f.CCIE = FALSE;
326 enResult = Ok;
327 break;
328 default:
329 enResult = Error;
330 break;
331 }
332
333 return enResult;
334 }
335
336 /**
337 *****************************************************************************
338 ** \brief PCA计数中断禁止
339 **
340 **
341 **
342 **
343 ** \retval Ok or Error
344 *****************************************************************************/
Pca_DisableCntIrq(void)345 en_result_t Pca_DisableCntIrq(void)
346 {
347 en_result_t enResult = Error;
348
349 M0P_PCA->CMOD_f.CFIE = FALSE;
350 enResult = Ok;
351
352 return enResult;
353 }
354
355
356 /**
357 *****************************************************************************
358 ** \brief PCA初始化配置
359 **
360 **
361 ** \param [in] pstcConfig PCA模块配置结构体指针
362 **
363 ** \retval Ok or Error
364 *****************************************************************************/
Pca_Init(stc_pca_config_t * pstcConfig)365 en_result_t Pca_Init(stc_pca_config_t* pstcConfig)
366 {
367 en_result_t enResult = Error;
368
369 M0P_PCA->CMOD_f.CIDL = pstcConfig->enCIDL;
370 M0P_PCA->CMOD_f.WDTE = pstcConfig->enWDTE;
371 M0P_PCA->CMOD_f.CPS = pstcConfig->enCPS;
372
373 pfnPcaCallback = pstcConfig->pfnPcaCb;
374
375 enResult = Ok;
376
377 return enResult;
378 }
379
380 /**
381 *****************************************************************************
382 ** \brief PCA模式配置
383 **
384 **
385 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
386 ** \param [in] pstcCapMod PCA模式配置结构体指针
387 **
388 ** \retval Ok or Error
389 *****************************************************************************/
Pca_CapModConfig(en_pca_module_t enModule,stc_pca_capmodconfig_t * pstcCapMod)390 en_result_t Pca_CapModConfig(en_pca_module_t enModule, stc_pca_capmodconfig_t* pstcCapMod)
391 {
392 en_result_t enResult = Error;
393
394 ASSERT(IS_VALID_MODULE(enModule));
395
396 switch (enModule)
397 {
398 case Module0:
399 {
400 M0P_PCA->CCAPM0_f.ECOM = pstcCapMod->enECOM;
401 M0P_PCA->CCAPM0_f.CAPP = pstcCapMod->enCAPP;
402 M0P_PCA->CCAPM0_f.CAPN = pstcCapMod->enCAPN;
403 M0P_PCA->CCAPM0_f.MAT = pstcCapMod->enMAT;
404 M0P_PCA->CCAPM0_f.TOG = pstcCapMod->enTOG;
405 M0P_PCA->CCAPM0_f.PWM = pstcCapMod->en8bitPWM;
406 enResult = Ok;
407 }
408 break;
409 case Module1:
410 {
411 M0P_PCA->CCAPM1_f.ECOM = pstcCapMod->enECOM;
412 M0P_PCA->CCAPM1_f.CAPP = pstcCapMod->enCAPP;
413 M0P_PCA->CCAPM1_f.CAPN = pstcCapMod->enCAPN;
414 M0P_PCA->CCAPM1_f.MAT = pstcCapMod->enMAT;
415 M0P_PCA->CCAPM1_f.TOG = pstcCapMod->enTOG;
416 M0P_PCA->CCAPM1_f.PWM = pstcCapMod->en8bitPWM;
417 enResult = Ok;
418 }
419 break;
420 case Module2:
421 {
422 M0P_PCA->CCAPM2_f.ECOM = pstcCapMod->enECOM;
423 M0P_PCA->CCAPM2_f.CAPP = pstcCapMod->enCAPP;
424 M0P_PCA->CCAPM2_f.CAPN = pstcCapMod->enCAPN;
425 M0P_PCA->CCAPM2_f.MAT = pstcCapMod->enMAT;
426 M0P_PCA->CCAPM2_f.TOG = pstcCapMod->enTOG;
427 M0P_PCA->CCAPM2_f.PWM = pstcCapMod->en8bitPWM;
428 enResult = Ok;
429 }
430 break;
431 case Module3:
432 {
433 M0P_PCA->CCAPM3_f.ECOM = pstcCapMod->enECOM;
434 M0P_PCA->CCAPM3_f.CAPP = pstcCapMod->enCAPP;
435 M0P_PCA->CCAPM3_f.CAPN = pstcCapMod->enCAPN;
436 M0P_PCA->CCAPM3_f.MAT = pstcCapMod->enMAT;
437 M0P_PCA->CCAPM3_f.TOG = pstcCapMod->enTOG;
438 M0P_PCA->CCAPM3_f.PWM = pstcCapMod->en8bitPWM;
439 enResult = Ok;
440 }
441 break;
442 case Module4:
443 {
444 M0P_PCA->CCAPM4_f.ECOM = pstcCapMod->enECOM;
445 M0P_PCA->CCAPM4_f.CAPP = pstcCapMod->enCAPP;
446 M0P_PCA->CCAPM4_f.CAPN = pstcCapMod->enCAPN;
447 M0P_PCA->CCAPM4_f.MAT = pstcCapMod->enMAT;
448 M0P_PCA->CCAPM4_f.TOG = pstcCapMod->enTOG;
449 M0P_PCA->CCAPM4_f.PWM = pstcCapMod->en8bitPWM;
450 enResult = Ok;
451 }
452 break;
453 default:
454 enResult = Error;
455 break;
456 }
457
458 return enResult;
459 }
460
461 /**
462 *****************************************************************************
463 ** \brief PCA启动运行
464 **
465 **
466 **
467 **
468 ** \retval Ok or Error
469 *****************************************************************************/
Pca_Run(void)470 en_result_t Pca_Run(void)
471 {
472 en_result_t enResult = Error;
473
474 M0P_PCA->CCON_f.CR = TRUE;
475 enResult = Ok;
476
477 return enResult;
478 }
479
480 /**
481 *****************************************************************************
482 ** \brief PCA停止运行
483 **
484 **
485 **
486 **
487 ** \retval Ok or Error
488 *****************************************************************************/
Pca_Stop(void)489 en_result_t Pca_Stop(void)
490 {
491 en_result_t enResult = Error;
492
493 M0P_PCA->CCON_f.CR = FALSE;
494 enResult = Ok;
495
496 return enResult;
497 }
498
499 /**
500 *****************************************************************************
501 ** \brief PCA16位比较数据设置
502 **
503 **
504 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
505 ** \param [in] u16Data PCA捕获数据
506 **
507 ** \retval Ok or Error
508 *****************************************************************************/
Pca_CmpData16Set(en_pca_module_t enModule,uint16_t u16Data)509 en_result_t Pca_CmpData16Set(en_pca_module_t enModule, uint16_t u16Data)
510 {
511 en_result_t enResult = Error;
512
513 ASSERT(IS_VALID_MODULE(enModule));
514
515 switch (enModule)
516 {
517 case Module0:
518 M0P_PCA->CCAP0_f.CCAP0 = u16Data;
519 enResult = Ok;
520 break;
521 case Module1:
522 M0P_PCA->CCAP1_f.CCAP1 = u16Data;
523 enResult = Ok;
524 break;
525 case Module2:
526 M0P_PCA->CCAP2_f.CCAP2 = u16Data;
527 enResult = Ok;
528 break;
529 case Module3:
530 M0P_PCA->CCAP3_f.CCAP3 = u16Data;
531 enResult = Ok;
532 break;
533 case Module4:
534 M0P_PCA->CCAP4_f.CCAP4 = u16Data;
535 enResult = Ok;
536 break;
537 default:
538 enResult = Error;
539 break;
540 }
541
542 return enResult;
543 }
544
545
546 /**
547 *****************************************************************************
548 ** \brief PCA16位捕获数据获取
549 **
550 **
551 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
552 **
553 ** \retval u16Data
554 *****************************************************************************/
Pca_CapData16Get(en_pca_module_t enModule)555 uint16_t Pca_CapData16Get(en_pca_module_t enModule)
556 {
557 uint16_t u16Data = 0;
558
559 ASSERT(IS_VALID_MODULE(enModule));
560
561 switch (enModule)
562 {
563 case Module0:
564 u16Data = M0P_PCA->CCAP0_f.CCAP0;
565 break;
566 case Module1:
567 u16Data = M0P_PCA->CCAP1_f.CCAP1;
568 break;
569 case Module2:
570 u16Data = M0P_PCA->CCAP2_f.CCAP2;
571 break;
572 case Module3:
573 u16Data = M0P_PCA->CCAP3_f.CCAP3;
574 break;
575 case Module4:
576 u16Data = M0P_PCA->CCAP4_f.CCAP4;
577 break;
578 default:
579 u16Data = 0;
580 break;
581 }
582
583 return u16Data;
584 }
585
586 /**
587 *****************************************************************************
588 ** \brief PCA高8位比较数据设置
589 **
590 **
591 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
592 ** \param [in] u8Data PCA高8位捕获数据
593 **
594 ** \retval Ok or Error
595 *****************************************************************************/
Pca_CmpDataHSet(en_pca_module_t enModule,uint8_t u8Data)596 en_result_t Pca_CmpDataHSet(en_pca_module_t enModule, uint8_t u8Data)
597 {
598 en_result_t enResult = Error;
599
600 ASSERT(IS_VALID_MODULE(enModule));
601
602 switch (enModule)
603 {
604 case Module0:
605 M0P_PCA->CCAP0H_f.CCAP0 = u8Data;
606 enResult = Ok;
607 break;
608 case Module1:
609 M0P_PCA->CCAP1H_f.CCAP1 = u8Data;
610 enResult = Ok;
611 break;
612 case Module2:
613 M0P_PCA->CCAP2H_f.CCAP2 = u8Data;
614 enResult = Ok;
615 break;
616 case Module3:
617 M0P_PCA->CCAP3H_f.CCAP3 = u8Data;
618 enResult = Ok;
619 break;
620 case Module4:
621 M0P_PCA->CCAP4H_f.CCAP4 = u8Data;
622 enResult = Ok;
623 break;
624 default:
625 enResult = Error;
626 break;
627 }
628
629 return enResult;
630 }
631
632 /**
633 *****************************************************************************
634 ** \brief PCA低8位比较数据设置
635 **
636 **
637 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
638 ** \param [in] u8Data PCA低8位捕获数据
639 **
640 ** \retval Ok or Error
641 *****************************************************************************/
Pca_CmpDataLSet(en_pca_module_t enModule,uint8_t u8Data)642 en_result_t Pca_CmpDataLSet(en_pca_module_t enModule, uint8_t u8Data)
643 {
644 en_result_t enResult = Error;
645
646 ASSERT(IS_VALID_MODULE(enModule));
647
648 switch (enModule)
649 {
650 case Module0:
651 M0P_PCA->CCAP0L_f.CCAP0 = u8Data;
652 enResult = Ok;
653 break;
654 case Module1:
655 M0P_PCA->CCAP1L_f.CCAP1 = u8Data;
656 enResult = Ok;
657 break;
658 case Module2:
659 M0P_PCA->CCAP2L_f.CCAP2 = u8Data;
660 enResult = Ok;
661 break;
662 case Module3:
663 M0P_PCA->CCAP3L_f.CCAP3 = u8Data;
664 enResult = Ok;
665 break;
666 case Module4:
667 M0P_PCA->CCAP4L_f.CCAP4 = u8Data;
668 enResult = Ok;
669 break;
670 default:
671 enResult = Error;
672 break;
673 }
674
675 return enResult;
676 }
677
678 /**
679 *****************************************************************************
680 ** \brief PCA计数器初值设置
681 **
682 **
683 **
684 ** \param [in] u16Data PCA计数器初值
685 **
686 ** \retval Ok or Error
687 *****************************************************************************/
Pca_Cnt16Set(uint16_t u16Data)688 en_result_t Pca_Cnt16Set(uint16_t u16Data)
689 {
690 en_result_t enResult = Error;
691
692 M0P_PCA->CNT_f.CNT = u16Data;
693 enResult = Ok;
694
695 return enResult;
696 }
697
698 /**
699 *****************************************************************************
700 ** \brief PCA16位计数器值获取
701 **
702 **
703 **
704 ** \retval 16位计数器值
705 *****************************************************************************/
Pca_Cnt16Get(void)706 uint16_t Pca_Cnt16Get(void)
707 {
708 uint16_t u16CntData = 0;
709
710 u16CntData = M0P_PCA->CNT_f.CNT;
711
712 return u16CntData;
713 }
714
715 /**
716 *****************************************************************************
717 ** \brief PCA周期重载值设置
718 **
719 **
720 **
721 ** \param [in] u16Data PCA周期重载值
722 **
723 ** \retval Ok or Error
724 *****************************************************************************/
Pca_CARRSet(uint16_t u16Data)725 en_result_t Pca_CARRSet(uint16_t u16Data)
726 {
727 en_result_t enResult = Error;
728
729 M0P_PCA->CARR_f.CARR = u16Data;
730 enResult = Ok;
731
732 return enResult;
733 }
734
735 /**
736 *****************************************************************************
737 ** \brief PCA周期重载值获取
738 **
739 **
740 **
741 ** \retval PCA周期重载值
742 *****************************************************************************/
Pca_CARRGet(void)743 uint16_t Pca_CARRGet(void)
744 {
745 uint16_t u16CntData = 0;
746
747 u16CntData = M0P_PCA->CARR_f.CARR;
748
749 return u16CntData;
750 }
751
752 /**
753 *****************************************************************************
754 ** \brief PCA增强PWM 使能
755 **
756 **
757 **
758 **
759 ** \retval Ok or Error
760 *****************************************************************************/
Pca_Enable16bitPWM(void)761 en_result_t Pca_Enable16bitPWM(void)
762 {
763 en_result_t enResult = Error;
764
765 M0P_PCA->EPWM_f.EPWM = TRUE;
766 enResult = Ok;
767
768 return enResult;
769 }
770
771 /**
772 *****************************************************************************
773 ** \brief PCA增强PWM 禁止
774 **
775 **
776 **
777 **
778 ** \retval Ok or Error
779 *****************************************************************************/
Pca_Disable16bitPWM(void)780 en_result_t Pca_Disable16bitPWM(void)
781 {
782 en_result_t enResult = Error;
783
784 M0P_PCA->EPWM_f.EPWM = FALSE;
785 enResult = Ok;
786
787 return enResult;
788 }
789
790 /**
791 *****************************************************************************
792 ** \brief PCA比较高速输出标志获取
793 **
794 **
795 ** \param [in] enModule PCA模块选择(Module0、Module1、Module2、Module3、Module4)
796 **
797 ** \retval TRUE or FALSE
798 *****************************************************************************/
Pca_GetCmpHighFlag(en_pca_module_t enModule)799 boolean_t Pca_GetCmpHighFlag(en_pca_module_t enModule)
800 {
801 boolean_t bRetVal = FALSE;
802
803 ASSERT(IS_VALID_MODULE(enModule));
804
805 switch (enModule)
806 {
807 case Module0:
808 bRetVal = M0P_PCA->CCAPO_f.CCAPO0 ? TRUE : FALSE;
809 break;
810 case Module1:
811 bRetVal = M0P_PCA->CCAPO_f.CCAPO1 ? TRUE : FALSE;
812 break;
813 case Module2:
814 bRetVal = M0P_PCA->CCAPO_f.CCAPO2 ? TRUE : FALSE;
815 break;
816 case Module3:
817 bRetVal = M0P_PCA->CCAPO_f.CCAPO3 ? TRUE : FALSE;
818 break;
819 case Module4:
820 bRetVal = M0P_PCA->CCAPO_f.CCAPO4 ? TRUE : FALSE;
821 break;
822 default:
823 bRetVal = FALSE;
824 break;
825 }
826
827 return bRetVal;
828 }
829
830 //@} // PcaGroup
831
832 /*******************************************************************************
833 * EOF (not truncated)
834 ******************************************************************************/
835