[资料分享与下载] 【YL-KL26Z开发】+ CMP简单功能实现

[复制链接]
778|1
 楼主| cowboy2014 发表于 2015-10-17 21:04 | 显示全部楼层 |阅读模式
本次所做实验为KL26Z的CPM功能,这个功能貌似被ADC里面的比较功能给覆盖了,但是ADC的比较功能只能是相应的两个AD通道,而CPM可以实现多通道进行比较,可以相互比较,也可以由自带的DAC产生基准电压与之比较,非常方便。

这次直接用到例程上的源程序,没有做更改,只是标注了一些地方。
  1. #include "includes.h"

  2. void gpioInit(void)                                             //配置需要点亮的LED的IO
  3. {
  4.     SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;                                
  5.     PORTB_PCR18 |= (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK);              
  6.     FGPIOB_PSOR |= 1<<18;                                            
  7.     FGPIOB_PDDR |= 1<<18;                                               
  8. }


  9. void cmpInit(INT8U ucdacOut)
  10. {
  11.     SIM_SCGC4 |= SIM_SCGC4_CMP_MASK;                                    //使能时钟
  12.     SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;                                 
  13.         /*
  14.      *  CMP DAC配置
  15.      */
  16.     CMP0_DACCR |= CMP_DACCR_DACEN_MASK | CMP_DACCR_VOSEL_MASK | CMP_DACCR_VOSEL(ucdacOut);
  17.     PORTC_PCR6 |= PORT_PCR_MUX(0);                                 /* 这里并不是源程序所说的模拟输入,而是PTC6的默认配置(MUX(0))就是DMP0输入*/
  18.     /*
  19.      *  选择通道为CMP0和DA产生的通道7
  20.      */
  21.     CMP0_MUXCR |= CMP_MUXCR_PSTM_MASK | CMP_MUXCR_MSEL(7) | CMP_MUXCR_PSEL(0);
  22.     CMP0_CR1 |=  CMP_CR1_COS_MASK | CMP_CR1_EN_MASK;                    /* 使能CMP为直通模式 */

  23. }


  24. BOOLEAN cmpOutput(void)
  25. {
  26.     if(CMP0_SCR & CMP_SCR_COUT_MASK) {                                  /* 判断CMP输出情况          */
  27.         return 1;
  28.     } else {
  29.         return 0;
  30.     }
  31. }



 楼主| cowboy2014 发表于 2015-10-17 21:04 | 显示全部楼层
  1. void redLedSet(BOOLEAN bMode)                       //判断并决定LED现在应该是什么状态{
  2.     if(bMode == True) {
  3.         FGPIOB_PCOR |= 1<<18;                                          
  4.     } else {
  5.         FGPIOB_PSOR |= 1<<18;                                          
  6.     }
  7. }



  8. int  main (void)
  9. {
  10.     INT8U ucdacOut = 1.50 * 64 / 2.90;                               //设置DA输出的值,即输入值与其比较(通道7)
  11.     SystemCoreClockUpdate();
  12.     gpioInit();                                                     
  13.     cmpInit(ucdacOut);                                                
  14.     while(1){
  15.         redLedSet(cmpOutput());                                       
  16.     };
  17. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

821

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部