一、代码共享

1、cmp.h

#ifndef HSCMP_H
#define HSCMP_H //1 头文件
#include "common.h"
//2 宏定义
//2.1比较模块号宏定义
#define cmpch0 CMP0_BASE_PTR //2.2 比较模块中断号处理
#define CMP0irq 16 //3函数声明
//============================================================================
//函数名称:hw_cmp_init
//函数返回 无
//参数说明;reference:参考电压选择 0=VDDA 3.3V 1=VREF 1.2V
// plusChannel: 正比较通道号
// minusChannel:负比较通道号
//功能概要:CMP模块初始化
//============================================================================
void hw_cmp_init(uint8_t reference,uint8_t plusChannel,uint8_t minusChannel); //============================================================================
//函数名称:hw_enable_cmp_int
//函数返回:无
//参数说明:无
//功能概要:开比较中断。
//============================================================================
void hw_enable_cmp_int(); //============================================================================
//函数名称:hw_disable_cmp_int
//函数返回:无
//参数说明:无
//功能概要:关比较中断
//============================================================================
void hw_disable_cmp_int();

#endif  //__ISR_H

2、cmp.c

#include "cmp.h"

//============================================================================
//函数名称:hw_cmp_init
//函数返回 无
//参数说明 reference:参考电压选择 0=VDDA 3.3V 1=VREF 1.2V
// plusChannel: 正比较通道号
// minusChannel:负比较通道号
// 通道0,1,2,3 对应 PTC6, PTC7, PTC8, PTC9
//功能概要:CMP模块初始化
//============================================================================
void hw_cmp_init(uint8_t reference,uint8_t plusChannel,uint8_t minusChannel)
{
//通过获取模块号选择比较器基址
CMP_MemMapPtr cmpch = CMP0_BASE_PTR; if(plusChannel>7)
plusChannel = 7;
if(plusChannel<=0)
plusChannel = 0; if(minusChannel>7)
minusChannel = 7;
if(minusChannel<=0)
minusChannel = 0; //使能比较模块时钟
SIM_SCGC4 |=SIM_SCGC4_CMP_MASK; //初始化寄存器
CMP_CR0_REG(cmpch) = 0;
CMP_CR1_REG(cmpch) = 0;
CMP_FPR_REG(cmpch) = 0;
//如果设置了标志清除中断标志
CMP_SCR_REG(cmpch) = 0x06;
CMP_DACCR_REG(cmpch) = 0;
CMP_MUXCR_REG(cmpch) = 0; //配置寄存器
//过滤,数字延时禁止
CMP_CR0_REG(cmpch) = 0x00;
//连续模式,高速比较,无过滤输出,输出引脚禁止
CMP_CR1_REG(cmpch) = 0x16;
//过滤禁止
CMP_FPR_REG(cmpch) = 0x00;
//使能上升沿和下降沿中断,清标志位
CMP_SCR_REG(cmpch) = 0x1E; if(reference==0)//参考电压选择VDD3.3V
{
//6位参考DAC使能,选择VDD作为DAC参考电压
CMP_DACCR_REG(cmpch) |= 0xC0;
}
else//参考电压选择VREF OUT 1.2V
{
//6位参考DAC使能,选择VREF作为DAC参考电
CMP_DACCR_REG(cmpch) |= 0x80;
} CMP_MUXCR_REG(cmpch) = CMP_MUXCR_PSEL(plusChannel)//正通道选择
| CMP_MUXCR_MSEL(minusChannel);//负通道选择 //选择输出引脚
PORTC_PCR5=PORT_PCR_MUX(6);
//CMP使能
CMP_CR1_REG(cmpch) |= CMP_CR1_EN_MASK; } //============================================================================
//函数名称:hw_enable_cmp_int
//函数返回:无
//参数说明:无
//功能概要:开比较中。
//============================================================================
void hw_enable_cmp_int()
{
//通过获取模块号选择比较器基址
CMP_MemMapPtr cmpch = CMP0_BASE_PTR;
//开放cmp接收中断,上升沿下降沿均触发
CMP_SCR_REG(cmpch)|= CMP_SCR_IEF_MASK | CMP_SCR_IER_MASK;
enable_irq(16);
} //============================================================================
//函数名称:hw_disable_cmp_int
//函数返回:无
//参数说明:无
//功能概要:关比较中断
//============================================================================
void hw_disable_cmp_int()
{
//通过获取模块号选择比较器基址
CMP_MemMapPtr cmpch = CMP0_BASE_PTR;
//关闭cmp接收中断,上升沿下降沿均关闭
CMP_SCR_REG(cmpch)&=(~CMP_SCR_IEF_MASK) | (~CMP_SCR_IER_MASK );
//关接收引脚的IRQ中断
disable_irq(16); }

二、使用方法

hw_enable_cmp_int();

    while(1)
{
hw_cmp_init(0,PTC6,PTC7);
}

三、存在的问题:

代码能够执行,可以通过编译看结果,但是不知道是哪个管教进行输出的。

智能车学习(四)—— Cmp学习的更多相关文章

  1. SCARA——OpenGL入门学习四(颜色)

    OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...

  2. 智能车学习(十五)——K60野火2013版例程

    一.中断函数注册方法: 1.格式: 配置某个功能的中断 注册中断函数 开启中断 2.一个例子 pit_init_ms(PIT0,);//定时中断初始化 set_vector_handler(PIT0_ ...

  3. apue第四章学习总结

    apue第四章学习总结 4.1.若以stat函数去替换lstat函数,会发生: 原来的目录路径: $:~/workspace/apue2/include$ ls -l apue.h abc lrwxr ...

  4. TweenMax动画库学习(四)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  5. Factorization Machines 学习笔记(四)学习算法

      近期学习了一种叫做 Factorization Machines(简称 FM)的算法.它可对随意的实值向量进行预測.其主要长处包含: 1) 可用于高度稀疏数据场景:2) 具有线性的计算复杂度.本文 ...

  6. 《Linux内核设计与实现》第四章学习笔记

    <Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交 ...

  7. SVG 学习<四> 基础API

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  8. 《Linux内核设计与实现》第四章学习笔记——进程调度

                                                                        <Linux内核设计与实现>第四章学习笔记——进程调 ...

  9. Android JNI学习(四)——JNI的常用方法的中文API

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  10. Spring实战第四章学习笔记————面向切面的Spring

    Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我 ...

随机推荐

  1. 转:C++编程隐蔽错误:error C2533: 构造函数不能有返回类型

    C++编程隐蔽错误:error C2533: 构造函数不能有返回类型 今天在编写类的时候,出现的错误. 提示一个类的构造函数不能够有返回类型.在cpp文件里,该构造函数定义处并没有返回类型.在头文件里 ...

  2. glib-2.49.4-msys-x86-staticLib.7z

    glib-2.49.4 MSYS 静态库 编译 export LIBFFI_CFLAGS=" -I/usr/local/lib/libffi-3.2.1/include " \ e ...

  3. 欧洲杯 2016 高清直播 - 观看工具 UEFA-EURO-2016-Play.7z

    OnlineTV-MPlayer-nocache.exe 占 CPU 内存 较少 OnlineTV-FFPlay.exe 可截取图像 UEFA-EURO-2016-Play-v5.7z UEFA-EU ...

  4. codeforces 514B. Han Solo and Lazer Gun 解题报告

    题目链接:http://codeforces.com/problemset/problem/514/B 题目意思:给出双头枪的位置(x0, y0),以及 n 个突击队成员的坐标.双头枪射击一次,可以把 ...

  5. The certificate used to sign "XXX" has either expired or has been revoked

    在Xcode真机调试开发过程中,无论是使用个人证书或者是企业证书,经常会遇到这样的问题:The certificate used to sign "XXX" has either ...

  6. IIS7.0配置网站时,提示“ISAPI 和 CGI 限制”

    把网站配置到IIS上的时候,访问网站提示如下错误:  

  7. CUDA中并行规约(Parallel Reduction)的优化

    转自: http://hackecho.com/2013/04/cuda-parallel-reduction/ Parallel Reduction是NVIDIA-CUDA自带的例子,也几乎是所有C ...

  8. sql 查询最近30分钟或者自定义时间数据

    ) FROM dual; 30分钟或者自定义

  9. 20145206邹京儒《Java程序设计》第2周学习总结

    20145206 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型 Java可区分为基本类型和类类型两大类型系统,其中,类类型也称为参考类型. 在Java中的基本类型主要可区 ...

  10. JavaScript基础——数据类型

    JavaScript使用数据类型来确定如何处理被分配给一个变量的数据.变量的类型决定了你可以对变量进行什么操作,如循环或者执行.下面描述了最常用的变量类型. 字符串(String):此数据类型将字符数 ...