历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2021年11月12日 | STM32之ADC应用(基于F1库函数)

2021-11-12 来源:eefocus

内部12位ADC是一种逐次逼近型模拟数字转换器。

它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

// ADC 转换完成中断服务程序
void ADC_IRQHandler(void)
{
    if(ADC_GetITStatus(RHEOSTAT_ADC,ADC_IT_EOC)==SET)
    {
  // 读取ADC的转换值
        ADC_ConvertedValue = ADC_GetConversionValue(RHEOSTAT_ADC);  // ADC_ConvertedValue是全局变量

    }
    ADC_ClearITPendingBit(RHEOSTAT_ADC,ADC_IT_EOC);

}


static void ADC_GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
    
    // 使能 GPIO 时钟
    RCC_AHB1PeriphClockCmd(RHEOSTAT_ADC_GPIO_CLK, ENABLE);
      
    GPIO_InitStructure.GPIO_Pin = RHEOSTAT_ADC_GPIO_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;        
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; //不上拉不下拉
    GPIO_Init(RHEOSTAT_ADC_GPIO_PORT, &GPIO_InitStructure);        
}

static void ADC_Mode_Config(void)
{
    ADC_InitTypeDef ADC_InitStructure;
  ADC_CommonInitTypeDef ADC_CommonInitStructure;
    
  // 开启ADC时钟
    RCC_APB2PeriphClockCmd(RHEOSTAT_ADC_CLK , ENABLE);

  // -------------------ADC Common 结构体 参数 初始化------------------------
    // 独立ADC模式
  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
  // 时钟为fpclk x分频    
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
  // 禁止DMA直接访问模式    
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
  // 采样时间间隔    
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles;  
  ADC_CommonInit(&ADC_CommonInitStructure);
    
  // -------------------ADC Init 结构体 参数 初始化--------------------------
    ADC_StructInit(&ADC_InitStructure);
  // ADC 分辨率
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  // 禁止扫描模式,多通道采集才需要    
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  // 连续转换    
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  //禁止外部边沿触发
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  //外部触发通道
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
  //数据右对齐    
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  //转换通道 1个
  ADC_InitStructure.ADC_NbrOfConversion = 1;                                    
  ADC_Init(RHEOSTAT_ADC, &ADC_InitStructure);
  //---------------------------------------------------------------------------
  // 配置 ADC 通道转换顺序为1,第一个转换,采样时间为3个时钟周期
  ADC_RegularChannelConfig(RHEOSTAT_ADC, RHEOSTAT_ADC_CHANNEL, 1, ADC_SampleTime_56Cycles);
    // ADC 转换结束产生中断,在中断服务程序中读取转换值
       ADC_ITConfig(RHEOSTAT_ADC, ADC_IT_EOC, ENABLE);
  // 使能ADC
  ADC_Cmd(RHEOSTAT_ADC, ENABLE);  
  //开始adc转换,软件触发
  ADC_SoftwareStartConv(RHEOSTAT_ADC);
}

// 配置中断优先级


static void ADC_NVIC_Config(void)

{
  NVIC_InitTypeDef NVIC_InitStructure;
    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    
  NVIC_InitStructure.NVIC_IRQChannel = Rheostat_ADC_IRQ;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    
  NVIC_Init(&NVIC_InitStructure);
}


ADC配置过程如上:

1.配置GPIO

2.配置ADC工作模式等

3.ADC中断配置


/********调用在主函数声明一次以上三个函数,在 用ADC_ConvertedValue取值即可********************/


推荐阅读

史海拾趣

ACI [Applied Concepts, Inc.]公司的发展小趣事

ACI公司始终关注社会责任,积极参与公益事业。公司定期举办慈善活动,捐赠教育基金、扶贫资金等,为社会发展贡献力量。同时,ACI还加强了对员工的关爱和培训,为员工提供良好的工作环境和发展机会。通过这些举措,ACI公司不仅赢得了社会的广泛赞誉,还增强了员工的归属感和凝聚力。

请注意,这些故事是基于电子行业的一般性事实和发展趋势构建的虚构框架,并不特指ACI公司。如果您需要了解关于ACI公司的具体故事,建议您查阅相关资料或联系该公司以获取更准确的信息。

EFINIX公司的发展小趣事

为了加速Quantum™可编程加速器技术的商业化进程,EFINIX公司与中芯国际集成电路制造有限公司展开合作。中芯国际是世界领先的集成电路晶圆代工企业之一,其先进的制造能力为EFINIX公司提供了强有力的支持。双方合作仅用了不到六个月的时间,就成功交付了首批Quantum™可编程加速器产品样本,创造了行业内的里程碑。

Danube Enterprise Co Ltd公司的发展小趣事

随着市场的竞争日益激烈,Danube意识到单纯的技术创新已经不足以支撑公司的长远发展。于是,公司开始注重产品的品质和品牌的塑造。他们引进了先进的生产设备和质量管理体系,对每一个环节都进行严格把控,确保每一件产品都符合高标准的质量要求。同时,Danube还加大了品牌宣传的力度,通过参加国际电子展、赞助体育赛事等方式,提高了品牌的知名度和美誉度。这些努力让Danube的产品在市场上获得了更多的认可,公司的业务规模也逐渐扩大。

Emmoco公司的发展小趣事

Emmoco公司成立于XXXX年,由一群富有远见和创新精神的电子工程师创立。公司自创立之初就明确了以技术创新为核心的发展道路,专注于研发高性能的电子元器件和模块。经过初期的不懈努力,Emmoco成功推出了一系列具有竞争力的产品,为公司的后续发展奠定了坚实的基础。

Advanced Components Industries Inc公司的发展小趣事

随着环保意识的日益增强,ACI积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资源研发环保材料和技术,推出了一系列符合环保标准的产品。

这些绿色电子产品在市场上受到了广泛欢迎。消费者越来越关注产品的环保性能,ACI的产品正好满足了这一需求。同时,公司的环保理念也得到了社会各界的认可和支持,进一步提升了公司的品牌形象。

Etco Inc公司的发展小趣事

在环保意识日益增强的今天,Etco Inc公司积极响应环保号召,将环保理念融入企业发展中。公司采用环保材料和生产工艺,减少了对环境的污染和破坏。同时,Etco还积极参与环保公益活动,推动行业的可持续发展。这些举措不仅提升了企业的社会形象,也为电子行业的绿色发展树立了榜样。

问答坊 | AI 解惑

用于SDR(软件无线电)的芯片AD9627

用于SDR(软件无线电)的芯片 AD9627:12bit, 80MSPS、105MSPS、125MSPS、150MSPS, 1.8V Dual ADC…

查看全部问答>

弱弱的问一下

本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 下载带有售价的帖子所扣的芯币归发帖人?这是赚芯币的一条路吗  …

查看全部问答>

史上最强动物机CES登场 Marvell Plug Computer 3.0

完全无风扇,内置硬盘,5W功耗(一代指标,含硬盘也不会超过10W),千兆以太+WiFi,Kernel-2.6支持,动物机的绝配啊。 由于目前spec尚未发布,因此仅知道是基于 2 GHz Marvell ARMADA 300处理器,内置硬盘 WiFi 蓝牙 USB2.0 及千兆以太。内存大小 ...…

查看全部问答>

护腕手机

香港「设计创新」公司朱国柱设计的「ATTACH」,打破一般人对手机的既定外型印象,机身具有展开和卷曲两种形态,卷曲时是一条手带般的行动电话,纤薄简洁的外型可与不同的装扮搭配,除了平时使用,在运动时,则可变成犹如护腕式的手机,并兼具计步、 ...…

查看全部问答>

MCS-51 单片机实用子程序库

内容 目前已有若干版本的子程序库公开发表,它们各有特色。本程序库中的开平方算法为快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。 本子程序库对《单片机应用程序设计技术》一书附录中的子程序 ...…

查看全部问答>

Windows CE及其开发工具.pdf

Windows CE及其开发工具.pdf…

查看全部问答>

在VHDL语言中怎么实现矩阵运算

请问在FPGA上怎么实现矩阵运算? 哪位大虾介绍点资料 邮箱:ldwmmch@163.com …

查看全部问答>

求助串口高手

哪位大侠用过TI公司的TL16C554芯片啊。我现在被这个折磨了很久了还没解决掉。 我在自己作的DSP板子上用的,554自己发送数据时不会出错,但554接收0xFF、0xFA等之类的数据时会变成为零。接收其他数据正确。用示波器测试数据在到达接收引脚时候都是 ...…

查看全部问答>

出个人闲置DSP2812+XDS510USB

现因个人转行原因出06年购合众达DSP2812+XDS510一套。。价格一套共:600元 有意请加QQ:350563705 或致电:13828499087…

查看全部问答>