【STC库函数】Compare比较器的使用

news2025/1/7 6:13:44

如果我们需要比较两个点的电压,当A点高于B点的时候我们做一个操作,当B点高于A点的时候做另一个操作。

我们除了加一个运放或者比较器,还可以直接使用STC内部的一个比较器。

正极输入端可以是P37、P50、P51,或者从ADC的十六个通道里选一个,但是要开ADC。

负极输入端可以是P36或者内部的1.19V。

中间可以选择模拟滤波和数字滤波。

比较的结果可以选择从P34或者P41输出,同时还可以有上升沿和下降沿的中断,也可以通过读取CMPRES来查询结果,是一个只读位。

接下来直接看库函数。

把这个文件包含进工程里STC32G_Compare.c,如果需要中断的话这个STC32G_Compare_Isr.c也包含进去。

用下面的函数对比较器进行初始化。

结构体的成员从上往下依次是

EN使能,我们直接给ENABLE。

P_Select正极输入端,有四个可以选择。

如果用ADC的话,记得把ADC_CONTR这个寄存器里的ADC电源和模拟通道输入给配置了,等等示例代码里我会演示。

N_Select负极输入端,有两个可以选择。

Outpt_EN输出使能,我们给ENABLE。

InvCMPO输出取反,这个看具体情况选择ENABLE或者DISABLE。

100nsFilter是否开启模拟滤波,一般是开启ENABLE。

OutDelayDuty数字滤波延时的时间周期,范围是0~63,官方示例代码里是16。

如果我们需要中断的话,在NVIC里选择上升沿或者下降沿,也可以用位或|来都要。

下面的代码中,我使用的ADC通道0作为比较器输入的正极,负极就用的内部1.19V。

ADC通道0是P10,我接了个光敏电阻,它是光照强度越大,电压就越小,反之越大。所以就是光强到了一定程度,电压小于1.19V了,比较器输出低电平,光强弱到一定程度,电压大于1.19V,那么比较器输出高电平,我在输出端接了个LED,这样看的结果就很明显了。

#include <STC32G.H>
#include "STC32G_GPIO.h"
#include "STC32G_Delay.h"
#include "STC32G_Compare.h"

void GPIO_Init(void){
    P1_MODE_IN_HIZ(GPIO_Pin_0);
    P3_MODE_IO_PU(GPIO_Pin_4);
}

void Compare_Init(void){
    CMP_InitDefine initer;
    initer.CMP_100nsFilter = ENABLE;        // 开启100ns模拟滤波
    initer.CMP_EN = ENABLE;                 // 比较器使能
    initer.CMP_InvCMPO = DISABLE;           // 不取反输出
    initer.CMP_N_Select = CMP_N_GAP;        // 选择1.19V
    initer.CMP_OutDelayDuty = 16;           // 数字滤波16个时钟周期
    initer.CMP_Outpt_En = ENABLE;           // 输出使能
    initer.CMP_P_Select = CMP_P_ADC;        // 选择ADC模拟通道
    CMP_Inilize(&initer);

    ADC_CONTR = 0x80;       // 1000 0000 开启ADC电源,选择通道0  P10
    CMPO_S = 0;             // 选择比较器输出引脚为P34
}


void main(void){
    WTST = 0;		//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXSFR();		//扩展SFR(XFR)访问使能 
    CKCON = 0;      //提高访问XRAM速度
    
    GPIO_Init();
    Compare_Init();

    while(1){

    }
    return ;
}

需要注意的是,我们选择比较器输出端引脚以及打开ADC和选择ADC通道都需要去操作寄存器,上述代码中我有注释,可供小伙伴们参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postgresql 命令还原数据库

因为PgAdmin打不开&#xff0c;但是数据库已经安装成功了&#xff0c;这里借助Pg命令来还原数据库 C:\Program Files\PostgreSQL\15\bin\psql.exe #链接数据库 psql -U postgres -p 5432#创建数据库 CREATE DATABASE "数据库名称"WITHOWNER postgresENCODING UTF8…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 &#xff08;1&#xff09;常见的日志级别优先级 &#xff08;2&…

急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击

僵尸网络活动增加 &#xff1a;新的“FICORA”和“CAPSAICIN”僵尸网络&#xff08;Mirai 和 Kaiten 的变体&#xff09;的活动激增。 被利用的漏洞 &#xff1a;攻击者利用已知的 D-Link 路由器漏洞&#xff08;例如 CVE-2015-2051、CVE-2024-33112&#xff09;来执行恶意命…

[ubuntu-22.04]ubuntu不识别rtl8153 usb转网口

问题描述 ubuntu22.04插入rtl8153 usb转网口不识别 解决方案 安装依赖包 sudo apt-get install libelf-dev build-essential linux-headers-uname -r sudo apt-get install gcc-12 下载源码 Realtek USB FE / GBE / 2.5G / 5G Ethernet Family Controller Softwarehttps:/…

WinForm开发-自定义组件-1. 工具栏: UcompToolStrip

这里写自定义目录标题 1. 工具栏: UcompToolStrip1.1 展示效果1.2 代码UcompToolStrip.csUcompToolStrip.Designer.cs 1. 工具栏: UcompToolStrip 自定义一些Winform组件 1.1 展示效果 1&#xff09;使用效果 2&#xff09;控件事件 1.2 代码 设计 编码 UcompToolStrip.…

Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架

1、什么是Hypium Hypium是华为官方为鸿蒙操作系统开发的一款以python为语言的自动化测试框架。 引用华为官网介绍如下&#xff1a; DevEco Testing Hypium(以下简称Hypium)是HarmonyOS平台的UI自动化测试框架&#xff0c;支持开发者使用python语言为应用编写UI自动化测试脚本…

基于Spring Boot微信小程序电影管理系统

一、系统背景与意义 随着移动互联网的普及和用户对个性化娱乐需求的不断增长&#xff0c;电影行业迎来了新的发展机遇。然而&#xff0c;传统的电影管理方式存在信息不对称、购票流程繁琐、用户体验不佳等问题。因此&#xff0c;开发一个基于Spring Boot微信小程序的电影管理系…

软件工程实验-实验2 结构化分析与设计-总体设计和数据库设计

一、实验内容 1. 绘制工资支付系统的功能结构图和数据库 在系统设计阶段&#xff0c;要设计软件体系结构&#xff0c;即是确定软件系统中每个程序是由哪些模块组成的&#xff0c;以及这些模块相互间的关系。同时把模块组织成良好的层次系统&#xff1a;顶层模块通过调用它的下层…

深度学习blog- 数学基础(全是数学)

矩阵‌&#xff1a;矩阵是一个二维数组&#xff0c;通常由行和列组成&#xff0c;每个元素可以通过行索引和列索引进行访问。 张量‌&#xff1a;张量是一个多维数组的抽象概念&#xff0c;可以具有任意数量的维度。除了标量&#xff08;0D张量&#xff09;、向量&#xff08;…

JMH338-剑侠情缘2【开服端】-2017版【剑荡三界】+服务端+客户端+登录器+外网

资源介绍&#xff1a; 激情服&#xff1b;剑荡三界基本上可以直接开服玩&#xff0c;总之每个服都有他的特色&#xff1b;云中&#xff0c;红莲山&#xff0c;葬雪城三大地图三种世界BOSS每个小时刷一次 云中押镖劫镖&#xff0c;出城就是PK模式 剑荡烟云副本分为普通和难度…

QML自定义滑动条Slider的样式

代码展示 import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.1Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Slider {id: controlvalue: 0.5background: Rectangle {x: control.leftPaddingy: control.topPadding …

什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系

我不知道有多少人和我一样&#xff0c;没学习过.netCore&#xff0c;想要学习&#xff0c;但是版本号太多就蒙了&#xff0c;不知道学什么了&#xff0c;这里解释下各个版本的关系 我们一般开始学习微软的时候&#xff0c;都是开始学习的.netframework&#xff0c;常用的就是4…

【2025最新计算机毕业设计】基于Spring Boot+Vue影院购票系统(高质量源码,提供文档,免费部署到本地)

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…

Linux第101步_了解LCD屏驱动“panel-simple.c”

了解LCD屏驱动“panel-simple.c”有助于修改屏驱动。自己另外单独写屏驱动&#xff0c;这是不现实的&#xff0c;所以学会在源程序的基础上修改&#xff0c;才是最佳的学习方法&#xff0c;这就是我们学习框架的主要原因。在Limux系统中&#xff0c;主流的显示框架有两种:DRM(D…

TI毫米波雷达原始数据解析之Lane数据交换

TI毫米波雷达原始数据解析之Lane数据交换 背景Lane 定义Lane 确认确认LVDS Lane 数量的Matlab 代码数据格式参考 背景 解析使用mmWave Studio 抓取的ADC Data Lane 定义 芯片与DCA100之间的数据使用LVDS接口传输&#xff0c;使用mmWave Studio 配置过程中有一个选项是LVDS L…

2-markdown转网页页面设计 --[制作网页模板]

页面设计 将Markdown转换为网页页面设计通常涉及以下几个步骤&#xff1a; 编写Markdown内容&#xff1a; 首先&#xff0c;你需要创建或已有以Markdown格式编写的文档。Markdown是一种轻量级的标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然…

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行&#xff0c;而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统&#xff0c;很容易理解&#xff0c;由于多个CPU同时执行&#xff0c;多个CPU同时读、写共享资源时很容易造成竞态。…

Elasticsearch: 高级搜索

这里写目录标题 一、match_all匹配所有文档1、介绍&#xff1a; 二、精确匹配1、term单字段精确匹配查询2、terms多字段精确匹配3、range范围查询4、exists是否存在查询5、ids根据一组id查询6、prefix前缀匹配7、wildcard通配符匹配8、fuzzy支持编辑距离的模糊查询9、regexp正则…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题&#xff0c;不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner&#xff0c;因为这类文章写得好的特别多&#xff0c;本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…