历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2019年01月29日 | STM32F103VET6——ADC单通道中断读取实验讲解

2019-01-29 来源:eefocus

编程要点

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);

}


推荐阅读

史海拾趣

AEMC Instruments公司的发展小趣事

除了提供优质的产品外,AEMC Instruments公司还注重服务升级和客户关怀。公司建立了完善的客户服务体系,提供售前咨询、售后技术支持等全方位服务。同时,公司还定期举办技术培训和交流活动,帮助客户更好地使用和维护产品。这些举措不仅提高了客户的满意度和忠诚度,也促进了公司与客户的长期合作关系。

以上五个故事是基于AEMC Instruments公司的发展情况所做出的概括性描述,旨在展示公司在电子行业中的成长历程和取得的成就。当然,具体的发展故事还需要根据公司的实际情况和历史记录来深入挖掘和呈现。

COTO TECHNOLOGY公司的发展小趣事

近年来,随着全球电子产业的快速发展,中国市场的重要性日益凸显。COTO TECHNOLOGY也看到了这一机遇,开始深耕中国市场,寻求与当地企业的合作。通过与成都迈极芯科技等公司的战略合作,COTO不仅将先进的技术和产品引入中国,还为中国半导体测试产业提供了更优质的产品和服务。这一系列的合作不仅促进了COTO在中国市场的发展,也推动了中国电子产业的进步。

这五个故事只是COTO TECHNOLOGY发展历程中的一部分,但它们充分展示了这家公司在电子行业中的成长与变迁。从初创时期的线圈绕组制造商,到后来的干簧继电器领导者,再到全球范围内的扩张与战略合作,COTO始终保持着对技术的追求和对市场的敏锐洞察。这些故事不仅反映了COTO的发展历程,也见证了整个电子行业的变革与进步。

ATM [Advanced Technical Materials]公司的发展小趣事

随着科技的进步,ATM也在不断进行技术创新和升级。从最初的简单取款功能,到现在的存款、转账、查询等多种功能,ATM的功能日益丰富。同时,随着移动支付和互联网金融的兴起,ATM也在逐渐与这些新技术融合,提供更加便捷、安全的金融服务。

远东福斯特公司的发展小趣事

20世纪60年代,英国人谢泼德·巴伦产生了发明一款“随时可以取钞票的机器”的想法,并付诸实践。1967年6月27日,世界上第一台ATM在英国伦敦北部的巴克莱银行亮相。这台机器的成功推出,标志着ATM开始进入公众的视野,并逐渐在全球范围内得到广泛应用。

维峰电子(WCON)公司的发展小趣事

为了进一步扩大市场份额,维峰电子积极开拓国内外市场。公司通过与国内外知名企业的合作,成功进入了多个领域,包括工业控制、汽车和新能源等。特别是新能源领域,维峰电子凭借其在电子连接器方面的技术优势,成功开发出多款适用于新能源领域的产品,受到了市场的广泛认可。

Hartmann Codier GmbH公司的发展小趣事

质量是企业的生命线。维峰电子始终将质量管理作为公司发展的重中之重。公司建立了完善的质量管理体系,从原材料采购、生产过程到产品检验等各个环节都进行严格把控。同时,公司还引入了先进的检测设备和技术,确保产品的质量和性能达到最高标准。这些措施的实施不仅提升了产品的竞争力,也赢得了客户的信任和好评。

问答坊 | AI 解惑

高精度微安表制作

纳安,微安,毫安电流测量…

查看全部问答>

无线网络构件化协议研究

摘要: 层次化网络体系结构设计本身存在缺陷,如冗余、各层之间无交互等。由于这些缺陷,在应用过程中会遇到 诸多问题,如QoS保障、网络安全等,层次化网络体系结构运用于无线网络除了会遇到上述问题外,还面临资源不足、 间歇链路等限制。为消 ...…

查看全部问答>

]LED芯片制造流程

replyreload += \',\' + 368860;Timson,如果您要查看本帖隐藏内容请回复随着技术的发展,LED的效率有了非常大的进步。在不久的未来LED会代替现有的照明灯泡。近几年人们制造LED芯片过程中首先在衬底上制作氮化鎵(GaN)基的外延片(外延片),外延片 ...…

查看全部问答>

请教下 关于隔行信号 缩放 问题

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 请教下各位大大, 为什么将隔行信号的高度缩放到比输入信号小的时候,图像就会抖?~ 比如,输入是1080i 输出是1024*500,图像就会抖呀抖的? (用ST/Genesis的FLI32626芯片). …

查看全部问答>

ce 5.0 USB驱动 默认EndPoint0

CE 5.0 MFB200的USB驱动 MFB200(指纹识别仪 FujiStu) 已经完成了USBInstallDriver写入了正确的PID\\VIP,USB_DRIVER_SETTINGS 由厂商指定的 在USBDeviceAttach里调用USBD函数(lpGetDeviceInfo(hDevice))的结果USB_DEVICE打印出来: THIS LPC ...…

查看全部问答>

问个WINDOWS CE基本问题,入门者!

以前没做过CE,现在单位有一项目需要用到这个,但有几个实际问题想问大家,看这样是否可以行的通; 我现在是在XP下开发。NET 2。0的程序,现在需要把部分程序移到CE上: 1,我现在的程序是带数据库的,我可以把数据库放到CE下吗? 2,我引用了一 ...…

查看全部问答>

wifi跳频问题

请问wifi跳频是由软件协议操作完成的还是WIFI模块自己根据外界环境自己改变频道和发射功率?…

查看全部问答>

数位KPM感应程控之图文步骤

晒心得:数位KPM感应程控之图文步骤     串联谐振半桥带IGBT C工作原理 Q1 Q2 IGBT在这扮演是功率输出部分,利用相互切换对 LC谐振网充能,并利用C1 C2取得1/2VCC参考点来执行运作网络.C1/C2在这还充当电源滤波功能, ...…

查看全部问答>

针对2440的板子 100M的示波器好用吗

来自eeworld合作群:63762526指点下啊 我觉得100M不够用…

查看全部问答>

看门狗使程序自动复位

看门狗使程序自动复位程序,这个程序执行下来应该是LED等周期闪烁的吧,但我测试的结果是灯一直亮,也不知道问题出在哪里了,各位大侠帮忙看看啊。 程序如下: #include <msp430x44x.h>void main (void ){unsigned i;WDTCTL=WDTPW+WDTHOLD; / ...…

查看全部问答>