STM32F103VET6——ADC单通道中断读取实验讲解

发布者:乘风翻浪最新更新时间:2019-01-29 来源: eefocus关键字:STM32F103VET6  ADC  单通道  中断读取 手机看文章 扫描二维码
随时随地手机看文章

编程要点

Define

GPIO

ADC_InitTypeDef

ADC时钟

通道的转换顺序和采样时间

使能ADC转换完成中断

使能ADC转换开始

校准ADC

选取ADC转化触发源

配置中断优先级

编写中断服务函数

main函数

/*-----GPIO-----*/

static void ADC_GPIO_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    ADC_GPIO_APBxClock_FUN ( ADC_GPIO_CLK, ENABLE );


    GPIO_InitStructure.GPIO_Pin = ADC_PIN;  //必须为模拟输入

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

    GPIO_Init(ADC_PORT, &GPIO_InitStructure);               

}



/*-----ADC_InitTypeDef-----*/

static void ADCx_Mode_Config(void)

{

    ADC_InitTypeDef ADC_InitStructure;  


    // 打开ADC时钟

    ADC_APBxClock_FUN ( ADC_CLK, ENABLE );


    // ADC 模式配置

    // 只使用一个ADC,属于独立模式

    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;


    // 禁止扫描模式,多通道才要,单通道不需要

    ADC_InitStructure.ADC_ScanConvMode = DISABLE ; 


    // 连续转换模式

    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;


    // 不用外部触发转换,软件开启即可

    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;


    // 转换结果右对齐

    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;


    // 转换通道1个

    ADC_InitStructure.ADC_NbrOfChannel = 1; 


    // 初始化ADC

    ADC_Init(ADCx, &ADC_InitStructure);


    // 配置ADC时钟为PCLK2的8分频,即9MHz

    RCC_ADCCLKConfig(RCC_PCLK2_Div8); 


    // 配置 ADC 通道转换顺序和采样时间

    ADC_RegularChannelConfig(ADCx, ADC_CHANNEL, 1, 

                             ADC_SampleTime_55Cycles5);


    // ADC 转换结束产生中断,在中断服务程序中读取转换值

    ADC_ITConfig(ADCx, ADC_IT_EOC, ENABLE);


    // 开启ADC ,并开始转换

    ADC_Cmd(ADCx, ENABLE);


    // 初始化ADC 校准寄存器  

    ADC_ResetCalibration(ADCx);

    // 等待校准寄存器初始化完成

    while(ADC_GetResetCalibrationStatus(ADCx));


    // ADC开始校准

    ADC_StartCalibration(ADCx);

    // 等待校准完成

    while(ADC_GetCalibrationStatus(ADCx));


    // 由于没有采用外部触发,所以使用软件触发ADC转换 

    ADC_SoftwareStartConvCmd(ADCx, ENABLE);

}



/*-----NVIC-----*/

static void ADC_NVIC_Config(void)

{

  NVIC_InitTypeDef NVIC_InitStructure;

  // 优先级分组

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


  // 配置中断优先级

  NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQ;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

}


/*-----Init-----*/

void ADCx_Init(void)

{

    ADCx_GPIO_Config();

    ADCx_Mode_Config();

    ADC_NVIC_Config();

}



/*-----中断服务子函数-----*/

void ADC_IRQHandler(void)

{   

    if (ADC_GetITStatus(ADCx,ADC_IT_EOC)==SET) 

    {

        // 读取ADC的转换值

        ADC_ConvertedValue = ADC_GetConversionValue(ADCx);

    }

    ADC_ClearITPendingBit(ADCx,ADC_IT_EOC);

}


关键字:STM32F103VET6  ADC  单通道  中断读取 引用地址:STM32F103VET6——ADC单通道中断读取实验讲解

上一篇:STM32基础设计(1)---点亮LED灯
下一篇:基于STM32F103 的电压显示

推荐阅读最新更新时间:2024-03-16 16:23

【STM32H7教程】第44章 STM32H7的ADC基础知识和HAL库API
44.1 初学者重要提示 STM32H7虽然支持差分,但不支持负压测量。 STM32H7的ADC采集通道体验快速通道Fast Channels和低速通道Slow Channels的区别,详情看本章2.12小节的电气特性。 STM32H7的ADC支持过采样,通过过采样技术可以做到26位分辨率。 ADC的专业术语诠释文档,推荐大家看看: http://www.armbbs.cn/forum.php?mod=viewthread&tid=89414 。 44.2 ADC基础知识 ADC的几个关键知识点放在开头说: STM32H7支持三路ADC,分别是ADC1,ADC2和ADC3。其中ADC1和ADC2可以组成双ADC
[单片机]
【STM32H7教程】第44章 STM32H7的<font color='red'>ADC</font>基础知识和HAL库API
ADC0832数码管显示电压表汇编程序
;*********************************************************** ;* * ;* 数字电压表演示程序 * ;* * ;*********************************************************** ;功能: 数码管显示ADC0832采样值 ;适用于 MCS-51 开发板 ;创作人: Jihao ;===================================================== AD_CLK EQU P1.5 AD_DAT EQU P1.6 AD_CS EQU P1.4 DISSTART EQU 30H ;显示单
[单片机]
经典_STM32_ADC多通道采样的例子
STM32 ADC多通道转换 描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ。在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串口传输出最后转换的结果。 程序如下: #i nclude stm32f10x.h //这个头文件包括STM32F10x所有外围寄存器、位、内存映射的定义 #i nclude eval.h //头文件(包括串口、按键、LED的函数声明) #i nclude SysTickDelay.h #i nclude UART_INTERFACE.h #i nclude stdio.h #def
[单片机]
合理选择高速ADC实现欠采样
欠采样或违反奈奎斯特(Nyquist)准则是 ADC 应用上经常使用的一种技术。射频(RF)通信和诸如示波器等高性能测试设备就是其中的一些实例。在这个“灰色”地带中经常出现一些困惑,如是否有必要服从 Nyquist 准则,以获取一个信号的内容。对于 Nyquist 和 Shannon 定理的检验将证明:ADC采样频率的选择与最大输入信号频率对输入信号带宽的比率有很强的相关性。   原理分析   Nyquist 定理被表达成各种各样的形式,它的原意是:如果要从相等时间间隔取得的采样点中,毫无失真地重建模拟信号波形,则采样频率必须大于或等于模拟信号中最高频率成份的两倍。因而对于一个最大信号频率为 fMAX的模拟信号 fa,其最小采
[模拟电子]
合理选择高速<font color='red'>ADC</font>实现欠采样
STM32-(29):ADC模数转换(实验)
ADC的重要寄存器介绍 AWDEN:在规则通道上开启模拟看门狗 该位由软件设置和清除。 0:在规则通道上禁用模拟看门狗 1:在规则通道上使用模拟看门狗 DUALMOD :双模式选择 软件使用这些位选择操作模式 SCAN:扫描模式 该位由软件设置和清除,用于开启或关闭扫描模式。在扫描模式中,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。 0:关闭扫描模式 1:使用扫描模式 注:如果分别设置了EOCIE或JEOCIE位,只在最后一个通道转换完毕才会产生EOC或JEOC中断。 JEOCIE:允许产生注入通道转换结束中断 该位由软件设置和清除,用于禁止或允许所有注入通道转换结束后产生中断。 0:禁止JEOC中断 1:允
[单片机]
STM32-(29):<font color='red'>ADC</font>模数转换(实验)
51单片机的ADC0808数字电压表设计
摘要 近些年来,数字电压表逐渐进入人们的视线中,它主要采取数字化测量技术。与传统的指针式仪表相比,它的功能有了进一步的完善,并且精度也有了很大的提高。数字电压表主要采用单片机和模/数转换模块,这样不仅提高了测量速度,而且抗干扰能力强、使用便捷、可扩展性强、测量准确。 本文主要采用AT89C51单片机和ADC0808芯片制作的简易数字电压表,可以采集0~5V和5~10V的模拟直流电压进行测量,其测量结果在液晶LCD1602上显示。该设计硬件电路主要有三个模块组成:A/D转换模块、数据处理模块及输出显示模块。数据处理由单片机AT89C51来完成,它主要把ADC0808传送来的数值经一定的数据处理,然后送至显示模块进行显示,同时控制
[单片机]
51单片机的<font color='red'>ADC</font>0808数字电压表设计
基于PWM技术的模数转换器设计方法
1. 引言   本文提出一种采用PWM技术的新型的高性能模数转换器的设计方法,利用MCU内部的定时器,结合改进的逐次逼近的对分试探算法,只须采用普通元器件即可设计出具有高分辨率的A/D转换器,以实现对模拟电压的测量,通过实验证明该设计能够达到较高的精度和分辨率,电路简单、可靠、成本低、传输信号线少,便于远传或隔离,抗干扰能力强,具有较好的应用价值。   2. 基于PWM技术的A/D转换工作原理及接口电路设计   一般模数转换包括采样、保持、量化和编码四个过程。采样就是将一个连续变化的信号x (t) 转换成时间上离散的采样信号x (n) 。通常采样脉冲的宽度tw 是很短的,故采样输出是断续的窄脉冲。要把一个采样输出信号数字化
[模拟电子]
基于PWM技术的<font color='red'>模数转换器</font>设计方法
具突破性的 0.5ppm INL、1Msps、无延迟 SAR ADC实现了真正的 20 位精准度
加利福尼亚州米尔皮塔斯 (MILPITAS, CA) – 2013 年 5 月 28 日 – 凌力尔特公司 (Linear Technology Corporation) 推出 20 位、1Msps、无延迟逐次逼近寄存器 (SAR) 模数转换器 (ADC) LTC2378-20,该器件具有极低的 0.5ppm (典型值) 和 2ppm (最大值) 积分非线性 (INL) 误差。INL 是高精度应用 (例如:地震监测和半导体制造等) 的关键规格,标明了 ADC 传输函数与理想值的偏离程度。由于不能有效地在系统级校准线性度,ADC的 INL规格通常设定了整体系统的准确度。LTC2378-20具有同类最佳的 0.5ppm INL,实现了
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved