历史上的今天
今天是: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)
{
}
}
史海拾趣
|
一、 突破ZigBee应用系统设计的瓶颈 对于一个实际ZIGBEE应用系统的设计,设计者主要面对的技术难点有三个,通讯距离,高频设计技术和无线软件技术,这也是ZigBee技术走向应用的主要瓶颈。 1、通讯距离问题,由于一般的ZigBee前端RF部 ...… 查看全部问答> |
|
Q1:从嵌入式领域到服务器,你认为PCIx能够覆盖所有这些领域吗?同时带来出色的性能? A1:基本上,PCIe技术在设计的时候其标准由PCISIG这一组织来制定标准的,而这个组织在制定标准的时候已经考虑到了从服务器到PC端,到工业领域的所有需求。所 ...… 查看全部问答> |
|
德国大众旗下奥迪(Audi)进一步扩大了Travolution车载电子系统的测试范围,并在15辆测试汽车和25处红绿灯上安装了该系统,以帮助车辆避开红灯。安装Travolution系统后,当汽车行驶至红绿灯时,就会收到交通灯发射的信号,Travolution系统便根据此 ...… 查看全部问答> |
|
负责STM32 AD部分数据采集然后通过USB传送到pc. 2009-06-16 -------------------------------------------------------------------------------- 广州日普电子有限公司 梁先生 广州科学城玉树工业区H栋东座3楼 电话:020-82260121 传真:020 ...… 查看全部问答> |
|
新买了款终端机,和以前用的很不一样。在样机上做的程序也不能跑。有很多问题请教: 1。不能实现和activesync同步,插上数据线,就像U盘一样,只显示ce里面的flash disk。 2。不能安装netcf,不能识别。查看系统是wince5.0的,处理器类型是Inge ...… 查看全部问答> |
|
void main( void ){ WDTCTL = WDTPW + WDTHOLD; Init_CLK(); P1SEL=0x00; P1DIR=0xff; P1OUT=0x00; Init_TB();//TB初始化 P4SEL=0x01;//P4.0作为外围模块引脚使用 P4OUT=0x01; _EINT();//开 ...… 查看全部问答> |
|
开源人脸识别基本功能代码 OpenCV这方面各项目开发国外已经很开源了,我们虚拟公司也参考和学习修改运用在修改调试过来的知反反复复了多少遍。 一 如何使用OpenCV的人脸检测器检测到人脸: / /执行的输入图像上的人脸检测,使用给定的(Haar)级 ...… 查看全部问答> |




