历史上的今天
返回首页

历史上的今天

今天是:2024年09月26日(星期四)

正在发生

2021年09月26日 | STM32入门学习之ADC(STM32F030F4P6基于CooCox IDE)

2021-09-26 来源:eefocus

#include "stm32_lib/inc/stm32f0xx_rcc.h"

#include "stm32_lib/inc/stm32f0xx_adc.h"

#include "stm32_lib/inc/stm32f0xx_gpio.h"

 

int main(void)

{

//时钟配置

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

 

//ADC IO配置,此处定义PA0口为ADC端口

GPIO_InitTypeDef PORT_ADC;

PORT_ADC.GPIO_Pin=GPIO_Pin_0;

PORT_ADC.GPIO_Mode=GPIO_Mode_AN;

PORT_ADC.GPIO_PuPd=GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA,&PORT_ADC);

 

//ADC 参数配置

ADC_InitTypeDef ADC_InitStuctrue;

ADC_InitStuctrue.ADC_Resolution=ADC_Resolution_12b;//12位精度

ADC_InitStuctrue.ADC_ContinuousConvMode=DISABLE;//单次ADC

ADC_InitStuctrue.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;

ADC_InitStuctrue.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐

ADC_InitStuctrue.ADC_ScanDirection=ADC_ScanDirection_Backward;//数据覆盖

ADC_Init(ADC1,&ADC_InitStuctrue);

 

//配置ADC采样的通道和采样周期

//PA0对应ADC通道0

//注意,采集的数据是否准确与采样时间有关系

ADC_ChannelConfig(ADC1,ADC_Channel_0,ADC_SampleTime_239_5Cycles);

//如果采集系统内部温度,则通道为16,同时要使能温度传感器

//ADC_ChannelConfig(ADC1,ADC_Channel_16,ADC_SampleTime_239_5Cycles);

//ADC_TempSensorCmd(ENABLE);

 

//校准

ADC_GetCalibrationFactor(ADC1);

//使能

ADC_Cmd(ADC1,ENABLE);

//等待ADC准备

while(ADC_GetFlagStatus(ADC1,ADC_FLAG_ADEN)==RESET);

//软件启动ADC转换

ADC_StartOfConversion(ADC1);

//等待ADC完成

while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);

//所得数据即为ADC数据

unsigned short adc_data=ADC_GetConversionValue(ADC1);

 

/*

//如果采集的是16通道,即芯片温度,则温度的值如下

//下面这段代价,参考STM32F030数据手册(寄存器版)A.7.16

//出厂校准数据所存储的地址,30°C和110°C的ADC值

#define TEMP110_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7C2))

#define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7B8))

#define VDD_CALIB ((uint16_t) (330))

#define VDD_APPLI ((uint16_t) (300))

int32_t temperature;

temperature = (((int32_t) ADC1->DR * VDD_APPLI / VDD_CALIB)- (int32_t) *TEMP30_CAL_ADDR );

temperature = temperature * (int32_t)(110 - 30);

temperature = temperature / (int32_t)(*TEMP110_CAL_ADDR- *TEMP30_CAL_ADDR);

temperature = temperature + 30;

*/

while(1)

{

}

}

推荐阅读

史海拾趣

Hong Kong X'Tals Ltd公司的发展小趣事
在必要时,可以加入保护电路(如过流保护、过压保护等),以提高电路的可靠性和安全性。
AUSTIN公司的发展小趣事

随着汽车行业的竞争日益激烈,奥斯汀汽车开始寻求与其他公司的技术合作。1952年,奥斯汀与诺菲尔德车厂合并,组成了英国汽车公司(BMC),旗下包括莫里斯、沃尔斯利、莱利及MG等多个品牌。此外,奥斯汀汽车还积极与国际汽车公司展开合作,如与日产汽车在1952年签署了技术合作协议,共同开发新的车型。这些合作使得奥斯汀汽车的技术水平得到了显著提升,同时也推动了公司的国际化发展。

BOOKLY公司的发展小趣事

在电子行业的激烈竞争中,BOOKLY公司以其卓越的技术创新能力脱颖而出。公司初创时,仅是一个由几位电子工程师组成的小团队,专注于研发高效能、低功耗的芯片技术。经过数年的艰苦努力,BOOKLY成功推出了一款颠覆性的芯片产品,被广泛应用于智能手机和电脑领域,迅速赢得了市场份额。此后,公司不断投入研发,拓展产品线,逐渐在电子行业建立了自己的品牌地位。

Eagle Plastic Devices公司的发展小趣事

随着技术创新的不断推进,Eagle Plastic Devices公司开始积极拓展国内外市场。公司通过参加国际电子展会、与知名电子制造商建立战略合作关系等方式,不断提高品牌知名度和市场份额。同时,公司还注重产品质量的提升和售后服务的完善,赢得了客户的信任和好评。在短短几年内,Eagle Plastic Devices公司便成为了电子行业内知名的塑料电子部件供应商。

静芯微电子(ElecSuper)公司的发展小趣事

作为一家有远见的企业,静芯微电子不仅关注自身的发展,还积极履行社会责任。公司积极参与环保公益活动和社会责任项目,致力于推动电子行业的可持续发展。同时,静芯微电子还注重员工的培训和发展,为员工提供良好的工作环境和晋升机会。这些举措不仅增强了企业的凝聚力和向心力,也为企业的长期发展奠定了坚实的基础。

芯联(CHIPLINK)公司的发展小趣事

在稳固了车规级IGBT芯片和模组代工市场地位的基础上,芯联集成开始积极拓展新的市场领域。公司凭借其在半导体制造领域的丰富经验和技术优势,成功进军碳化硅芯片和模块市场,并为多家头部新能源车企提供代工服务。此外,公司还计划向AI领域延伸,加强在AI领域的技术布局和市场拓展。这一举措将进一步拓宽芯联集成的业务范围,实现多元化发展。

问答坊 | AI 解惑

详谈如何“轻松”的开发和应用Zigbee

一、 突破ZigBee应用系统设计的瓶颈 对于一个实际ZIGBEE应用系统的设计,设计者主要面对的技术难点有三个,通讯距离,高频设计技术和无线软件技术,这也是ZigBee技术走向应用的主要瓶颈。 1、通讯距离问题,由于一般的ZigBee前端RF部 ...…

查看全部问答>

Q&A:PCI Express技术之设计高性能桥接

Q1:从嵌入式领域到服务器,你认为PCIx能够覆盖所有这些领域吗?同时带来出色的性能? A1:基本上,PCIe技术在设计的时候其标准由PCISIG这一组织来制定标准的,而这个组织在制定标准的时候已经考虑到了从服务器到PC端,到工业领域的所有需求。所 ...…

查看全部问答>

奥迪采用车载电子设备新技术 汽车可避开红灯

德国大众旗下奥迪(Audi)进一步扩大了Travolution车载电子系统的测试范围,并在15辆测试汽车和25处红绿灯上安装了该系统,以帮助车辆避开红灯。安装Travolution系统后,当汽车行驶至红绿灯时,就会收到交通灯发射的信号,Travolution系统便根据此 ...…

查看全部问答>

招聘兼职 STM32项目

负责STM32 AD部分数据采集然后通过USB传送到pc. 2009-06-16 -------------------------------------------------------------------------------- 广州日普电子有限公司 梁先生 广州科学城玉树工业区H栋东座3楼 电话:020-82260121 传真:020 ...…

查看全部问答>

U盘插拔式的wince终端

新买了款终端机,和以前用的很不一样。在样机上做的程序也不能跑。有很多问题请教: 1。不能实现和activesync同步,插上数据线,就像U盘一样,只显示ce里面的flash disk。 2。不能安装netcf,不能识别。查看系统是wince5.0的,处理器类型是Inge ...…

查看全部问答>

KEIL C代码加密

大家好,我有个问题想请教,我的是嵌入式系统,KEIL C代码,怎么加密代码呢,可否提示一下!…

查看全部问答>

侃侃我的成果

本人长期从事单片机开发应用,积累了一定的经验。本人将毕生研究心得集成了文字,放在我的博客里,希望大家光临指导,并给点意见。我的博客地址;http://blog.mcuol.com/user/Article/500.html…

查看全部问答>

怎么用TB0模拟串口发送?下面程序有什么错?

void main( void ){  WDTCTL = WDTPW + WDTHOLD;  Init_CLK();  P1SEL=0x00;  P1DIR=0xff;  P1OUT=0x00;  Init_TB();//TB初始化  P4SEL=0x01;//P4.0作为外围模块引脚使用  P4OUT=0x01;  _EINT();//开 ...…

查看全部问答>

新人刚开始学51单片机

刚开始学单片机,经同学介绍来此论坛学习知识,希望大家能指点一下,我们现在在学51,不知道大家对51的学习有什么建议没呢 …

查看全部问答>

Beaglebone外围电路设计心得Opencv 无刷电机

开源人脸识别基本功能代码 OpenCV这方面各项目开发国外已经很开源了,我们虚拟公司也参考和学习修改运用在修改调试过来的知反反复复了多少遍。 一 如何使用OpenCV的人脸检测器检测到人脸: / /执行的输入图像上的人脸检测,使用给定的(Haar)级 ...…

查看全部问答>