MSPM0L1306例程学习-ADC部分(5)

MSPM0L1306例程学习系列
使用的TI的官方例程,即SDK里边包含的例程代码。
可以到TI官网下载并且安装SDK: https://www.ti.com.cn/tool/cn/download/MSPM0-SDK/

MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程:
在这里插入图片描述
今天接着讲2个例程,adc12_triggered_by_timer_event和adc12_triggered_by_timer_event_stop,这两个例程都是使用定时器事件去触发ADC转换。两个例程的概述如下:

第一个例程:adc12_triggered_by_timer_event

  1. LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=ADCCLK=32MHz
  2. ADC工作在序列通道、单次转换模式、自动采样、事件触发(定时器);
  3. 使用MEM0~MEM4,都选择ADC通道2(PA25),直接使用电源电压作参考电压;
  4. 采样时长分别采用采样定时器0和采样定时器1 ,采样定时器0设置为25us,采样定时器1设置为12.5us;
  5. 定义订阅定时器事件; 定时器0触发ADC
  6. 定时器工作在单次模式下,周期为1.125s,并定义发布事件1; *
  7. 只转换1回,结果存放到数组gADCResult[]中;
  8. 代码中设有断点语句__BKPT(0),会自动进入断点,查看数据;

第二个例程:adc12_triggered_by_timer_event_stop

  1. LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=ADCCLK=32MHz
  2. ADC工作在单通道、多次转换模式、自动采样、事件触发(定时器);
  3. 使用MEM0,选择ADC通道2(PA25),直接使用电源电压作参考电压;
  4. 采样时长采用采样定时器1,设置为25us;
  5. 启用窗口比较器的功能: 12位AD的转换结果满量程为4095。上限值和下限值都设置为1.5v对应的转换结果ADC12_MONITOR_VALUE 这些值是在代码中设定的,没有在sysconfig图形配置工具中完成;
  6. 定义订阅定时器事件; 定时器0触发ADC
  7. 定时器工作在周期模式下,周期为1s,并定义发布事件1;
  8. PA0引脚连接有LED灯;
  9. 对通道2进行AD采样和转换,系统会自动根据转换结果进行LED的指示操作:
    a.当转换结果小于ADC12_MONITOR_VALUE时,触发窗口比较器下限中断,输出高电平,关闭LED
    b.当转换结果大于ADC12_MONITOR_VALUE时,触发窗口比较器上限中断,输出低电平,点亮LED

第1个例程具体的配置和分析如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第1个例程的注解如下:

/** ADC转换的SDK例程* 文件名:adc12_triggered_by_timer_event.c* 描述:*   ADC模块的事件触发功能演示。*   1、LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=ADCCLK=32MHz*   2、ADC工作在序列通道、单次转换模式、自动采样、事件触发(定时器);*     使用MEM0~MEM4,都选择ADC通道2(PA25),直接使用电源电压作参考电压;*   3、采样时长分别采用采样定时器0和采样定时器1*     采样定时器0设置为25us,采样定时器1设置为12.5us;*   4、定义订阅定时器事件; 定时器0触发ADC*   5、定时器工作在单次模式下,周期为1.125s,并定义发布事件1;*   6、只转换1回,结果存放到数组gADCResult[]中;*   7、代码中设有断点语句__BKPT(0),会自动进入断点,查看数据;** 操作描述:*   1、下载程序;*   2、添加观察变量gADCResult,全速运行;*   3、系统会自动停在断点处,查看ADC的采样结果值;** 注意事项:*   1、ADC的结果的读取就一次,没有在while(1)循环里** 思考:*   1、为什么要区分采样定时器0和采样定时器1?有特别的意义吗?还是,只是想演示下功能配置** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/
#include "ti_msp_dl_config.h"//标志变量,ADC的转换结果是否已经传输完成;
volatile bool gCheckADC;//定义16位的数组来存放ADC的转换结果.
volatile uint16_t gADCResult[4];int main(void)
{//SysConfig图形配置工具初始化配置函数SYSCFG_DL_init();//使能ADC12的中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);//ADC12的转换完成标志位清零gCheckADC = false;//启动定时器DL_TimerG_startCounter(TIMER_0_INST);while (false == gCheckADC){//等待结果存储寄存器MEM3加载新数据__WFE();}//读取结果存储寄存器MEM0、MEM1、MEM2、MEM3的数据,存放到数组中gADCResult[0] = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);gADCResult[1] = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1);gADCResult[2] = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2);gADCResult[3] = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3);//断点语句,程序运行到此处会自动进入断点,可查看ADC的转换结果__BKPT(0);while (1){__WFI();}
}/** ADC12中断处理函数* 通过转换结果存储寄存器MEM3加载新数据中断来判断ADC转换结束**/
void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_MEM3_RESULT_LOADED:gCheckADC = true;break;default:break;}
}

第2个例程具体的配置和分析如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第2个例程的注解如下:

/** ADC转换的SDK例程* 文件名:adc12_triggered_by_timer_event_stop.c* 描述:*   ADC模块的事件触发功能演示。*   1、LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=ADCCLK=32MHz*   2、ADC工作在单通道、多次转换模式、自动采样、事件触发(定时器);*     使用MEM0,选择ADC通道2(PA25),直接使用电源电压作参考电压;*     采样时长采用采样定时器1,设置为25us;*   4、启用窗口比较器的功能:*     12位AD的转换结果满量程为4095. 上限值和下限值都设置为1.5v对应的转换结果ADC12_MONITOR_VALUE*     这些值是在代码中设定的,没有在sysconfig图形配置工具中完成;*   3、定义订阅定时器事件; 定时器0触发ADC*   4、定时器工作在周期模式下,周期为1s,并定义发布事件1;*   5、PA0引脚连接有LED灯;*   6、对通道2进行AD采样和转换,系统会自动根据转换结果进行LED的指示操作:*     a.当转换结果小于ADC12_MONITOR_VALUE时,触发窗口比较器下限中断,输出高电平,关闭LED*     b.当转换结果大于ADC12_MONITOR_VALUE时,触发窗口比较器上限中断,输出低电平,点亮LED** 操作描述:*   1、下载程序,全速运行;*   2、测量通道2(PA25)的输入电压,偷懒点,输入可直接接3.3V或者Gnd;*   3、查看板卡上LED灯的状态* 注意事项:*   1、AD输入的引脚不要错接5V电压,会烧坏引脚;** 思考:*   1、暂无** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/#include "ti_msp_dl_config.h"/** 下边这段宏定义的作用:* 通过宏定义的方式,自动计算出某个电压值对应的ADC转换结果计算式ADC12_MONITOR_VALUE* 即根据目标电压,反算ADC转换的结果数值;** ADC12_BIT_RESOLUTION位AD的最大量程值:  (1 << ADC12_BIT_RESOLUTION) --》12位的AD,2的12次方;* ADC12_MONITOR_VOLTAGE / ADC12_REF_VOLTAGE : 目标电压和参考电压的比值* 两者相乘,就自动计算出 目标电压对应的ADC转换的结果数值;*/
#define ADC12_BIT_RESOLUTION (12)
#define ADC12_REF_VOLTAGE (3.3)
#define ADC12_MONITOR_VOLTAGE (1.5)
#define ADC12_MONITOR_VALUE \((1 << ADC12_BIT_RESOLUTION) * (ADC12_MONITOR_VOLTAGE / ADC12_REF_VOLTAGE))int main(void)
{//SysConfig图形配置工具初始化配置函数SYSCFG_DL_init();//配置窗口比较器的限值,上下限都设置为ADC12_MONITOR_VALUEDL_ADC12_configWinCompHighThld(ADC12_0_INST, (uint16_t) ADC12_MONITOR_VALUE);DL_ADC12_configWinCompLowThld(ADC12_0_INST, (uint16_t) ADC12_MONITOR_VALUE);//使能ADC12的中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);//启动定时器DL_TimerG_startCounter(TIMER_0_INST);while (1){__WFI();}
}/** ADC12中断处理函数* 窗口比较器的上限、下限中断* --高于上限值,输出低电平,点亮LED;* --低于下限值,输出高电平,关闭LED**/
void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_WINDOW_COMP_HIGH:DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);break;case DL_ADC12_IIDX_WINDOW_COMP_LOW:DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);break;default:break;}
}

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

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

相关文章

w16php系列之基础数组

一、索引数组 概念 索引数组 是指键名为整数的数组。默认情况下&#xff0c;索引数组的键名是从0开始&#xff0c;并依次递增。它主要适用于利用位置&#xff08;0、1、2……&#xff09;来标识数组元素的情况。另外&#xff0c;索引数组的键名也可以自己指定 示例代码 <…

系列十六(面试)、RocketMQ中如何解决消息堆积问题?

一、RocketMQ中解决消息堆积问题 1.1、概述 消息堆积是RocketMQ中很常见的一个问题&#xff0c;也是面试官很喜欢问的一个问题&#xff0c;那么什么是消息堆积呢&#xff1f;消息堆积&#xff0c;顾名思义是指某个时间段队列里面堆积了大量来不及消费的消息&#xff0c;一般认…

8_js_dom编程入门2

Objective&#xff08;本课目标&#xff09; 掌握基本课堂案例掌握节点的关系操作 1. 按钮选中案例 课堂案例&#xff1a;1.显示按钮的选中效果.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta nam…

Upload上传图片,回显图片,编辑图片,限制图片,不显示上传图标,图片放大功能

效果图&#xff1a; 新增、编辑时&#xff1a;限制上传四张&#xff0c;当超过四张隐藏上传图标 图片放大 &#xff1a;效果图 详情&#xff1a;回显时不显示上传图标 页面&#xff1a;template 部分 图片在前端存储&#xff0c;提交时一并给后端 :file-list"repairPlan…

什么是骨传导蓝牙耳机?骨传导耳机原理分析!

骨传导耳机&#xff0c;顾名思义是利用骨传导技术制造而成的一种耳机&#xff0c;也被称之为骨导耳机、骨感耳机、骨传感耳机。 骨传导耳机的传声原理跟传统耳机有所不同&#xff0c;传统耳机通过空气振动将声音传入耳膜&#xff0c;而骨传导耳机是通过人体骨骼将声音直接传递…

c4d怎么建模沙发?

c4d怎么建模沙发&#xff1f;c4d中想要制作一组沙发&#xff0c;该怎么制作三维立体的沙发模型呢&#xff1f;c4d中想要制作一组沙发&#xff0c;该怎么建模沙发呢&#xff1f;下面我们就来看看c4d创建沙发模型的教程。 1、打开软件&#xff0c;点击立方体&#xff1b; 2、修改…

vue2、vue3状态管理之vuex、pinia

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用&#xff1a;1.2 Mutation在vuex中定义&#xff1a;在组件中使用&#xff1a; 1.3 Action在vuex中定义&#xff1a;将上面的减…

FPGA-AMBA协议、APB协议、AHB规范、AXI4协议规范概述及它们之间的关系

FPGA-AMBA协议、APB协议、AHB协议、AXI&#xff14;协议规范概述 笔记记录&#xff0c;AMBA协议、APB协议、AHB规范、AXI&#xff14;协议规范概述&#xff0c;只是概述描述&#xff0c;具体详细的协议地址传输、数据传输等内容将在下一章节详细说明。 文章目录 FPGA-AMBA协议…

【目标跟踪】解决多目标跟踪遮挡问题

文章目录 前言一、判定遮挡目标二、扩展目标框三、结论 前言 目标跟踪在发生遮挡时&#xff0c;极其容易发生Id Switch。网上许多算法忽视跟踪遮挡问题,同时网上相关资料也很少。博主为了解决跟踪遮挡&#xff0c;翻阅大量论文。分享其中一篇论文。论文链接&#xff1a;https:…

Everything 搜索

正则表达式Regex 首先需要开启 Everything 工具在&#xff08;字符串&#xff09;查找时&#xff0c;对正则表达式功能的支持&#xff1a; 需要在【菜单栏】⇒ 【Search】⇒ 勾选【Enable Regex】 查看Everything 支持的语法:

怎么下载landsat 8影像并在ArcGIS Pro中进行波段组合

Landsat 8&#xff08;前身为Landsat数据连续性任务&#xff0c;或 LDCM&#xff09;于2013年2月11日由 Atlas-V火箭从加利福尼亚州范登堡空军基地发射升空&#xff0c;这里为大家介绍一下该数据的下载的方法&#xff0c;希望能对你有所帮助。 注册账号 如果之前已经注册过的…

基于采样的自动驾驶规划算法 - PRM,RRT,RRT*,CL-RRT

本文将讲解PRM&#xff0c;RRT&#xff0c;RRT*自动驾驶规划算法原理&#xff0c;不正之处望读者指正 0 前言 机器人运动规划的基本任务&#xff1a;从开始位置到目标位置的运动 &#xff08;1&#xff09;如何躲避构型空间出现的障碍物 &#xff08;2&#xff09;如何满足机器…

SkyWalking UI 修改发布Nginx

文章目录 SkyWalking UI修改图标修改路由发布到Nginx添加认证修改路由模式vite.config.ts添加baseNginx配置 SkyWalking UI skywalking-booster-ui下载地址 修改图标 替换 logo.svg 修改路由 router - data - index.ts 发布到Nginx 添加认证 # 安装 yum install -y h…

VMware ESXi常用查看RAID和磁盘信息工具及命令汇总

一、Esxcli 使用 Esxcli 命令可获取有关 vSAN 的信息&#xff0c;以及对您的 vSAN 环境进行故障排除。 可用命令如下&#xff1a; 命令描述esxcli vsan network list确认哪些 VMkernel 适配器可用于 vSAN 通信。esxcli vsan storage list列出由 vSAN 声明的存储磁盘。esxcli…

Pikachu靶场 “Http Header”SQL注入

1. 先在 pikachu 打开 Http Header 注入模块&#xff0c;点击提示 查看登录 账号 和 密码&#xff0c;登陆后去 Burp 中找到登陆的 GET请求 2. 设置payload1 &#xff1a;在 User-Agent最后 输入 查看 数据库名 or updatexml(1,concat(0x7e,database()),0) or 查看 用户名…

随机梯度辨识方法

Matlab 利用随机梯度方法进行辨识的举例&#xff0c;可以结合不同情况进行优化处理&#xff08;例如需要复现文献中结果&#xff09; Matlab代码如下&#xff1a; clc;clear;close; format short g; M Stochastic gradient method; sigma 0.5; % Noise standard deviati…

asp.net core 教程

asp.net core 教程 写在前面新建项目Get和PostGETPOST MVC-模型控制视图如何通俗理解MVCMVC架构---文件夹详解Connected ServicesPropertieswwwroot依赖项ControllersModelsViews 代码实例 API模型&#xff08;前后端分离&#xff09;前端代码后端代码 文件配置优先级优先级顺序…

YOLOv5改进 | 主干篇 | 利用MobileNetV3替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV3&#xff0c;其主要改进思想集中在结合硬件感知的网络架构搜索&#xff08;NAS&#xff09;和NetAdapt算法&#xff0c;以优化移动设备CPU上的性能。它采用了新颖的架构设计&#xff0c;包括反转残差结构和线性瓶颈层&…

dev express 15.2图表绘制性能问题(dotnet绘图表)

dev express 15.2 绘制曲线 前端代码 <dxc:ChartControl Grid.Row"1"><dxc:XYDiagram2D EnableAxisXNavigation"True"><dxc:LineSeries2D x:Name"series" CrosshairLabelPattern"{}{A} : {V:F2}"/></dxc:XYDi…