12位ADC是一种逐次逼近型模拟数字数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。
ADC的输入时钟不得超过14MHZ,它是由PCLK2经分频产生。
如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。
ADC通常要与DMA一起使用 这里只是简单的用库配置ADC 不断扫描来实现ADC的应用。
首先配置GPIO与ADC的时钟:
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AIN;
GPIO_Init(GPIOB,&GPIO_InitStructure); //默认速度为两兆
配置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; //右对齐
ADC_InitStructure.ADC_NbrOfChannel =1; //扫描通道数
ADC_Init(ADC1,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_9, 1,ADC_SampleTime_1Cycles5); //通道X,采样时间为1.5周期,1代表规则通道第1个这个1是啥意思我不太清楚只有是1的时候我的ADC才正常。
ADC_Cmd (ADC1,ENABLE); //使能或者失能指定的ADC
ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能或者失能指定的ADC的软件转换启动功能
也用一些默认的配置函数同GPIO 的一样例如: ADC_StructInit
ADC_InitTypeDef structureADC_InitTypeDef定义于文件“stm32f10x_adc.h”:
typedef struct
{
u32 ADC_Mode; FunctionalState ADC_ScanConvMode; FunctionalStateADC_ContinuousConvMode; u32 ADC_ExternalTrigConv; u32ADC_DataAlign; u8 ADC_NbrOfChannel;
} ADC_InitTypeDef
注意:为了能够正确地配置每一个ADC通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig()来配置每个所使用通道的转换次序和采样时间。
然后就是不停的读;
u16 TestAdc(void)
{
u16 adc;
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET); //检查制定ADC标志位置1与否 ADC_FLAG_EOC 转换结束标志位
adc=ADC_GetConversionValue(ADC1);
returnadc;//返回最近一次ADCx规则组的转换结果
}
这个程序的8位单片机风格很重,真正的ADC一定要放在DMA或是中断之中。
上一篇:STM32开发板基础教程(七) - ADC with DMA
下一篇:STM32F103和STM32F401的ADC多通道采集DMA输出
推荐阅读
史海拾趣
AntennaHome公司深知技术创新是企业持续发展的根本动力。因此,公司始终坚持将研发作为企业的核心战略。公司不断加大对研发的投入力度,引进先进的研发设备和人才,同时积极与高校和研究机构开展合作。这些举措使得公司在天线技术领域始终保持领先地位,为公司的长远发展提供了有力保障。
这五个故事展示了AntennaHome公司在电子行业中的发展历程,从创业初期的技术创新到与国际大厂的合作,再到应对行业变革的挑战、参与国际展会以及持续投入研发,每一步都体现了公司的努力和坚持。
1985年,库柏工业收购了Bussmann公司,成立了新的事业部——“Cooper Bussmann熔断器”。这一收购为Bussmann带来了更广阔的市场和更多的资源,同时也带来了新的挑战和机遇。在库柏工业的支持下,Bussmann开始了更加积极的创新和市场拓展,逐渐成为了全球熔断器行业的领导者。
Burr-Brown公司,成立于1956年,初期仅有两名雇员,并得益于房地产开发商的支持。公司起初专注于制造模拟集成电路,第一年的销售总额为1600美元。创始人布朗怀揣雄心壮志,提出在一年内将厂房扩大到1200平方英尺,并期望销售收入能增长到7200美元。随着销售的稳步增长,公司不断迁往更大的设施,最终在1965年购买了附近的机场,为公司未来的成长奠定了坚实的基础。
随着电子技术的不断进步,Fischer Elektronik始终走在行业前沿,不断推出创新产品。公司研发的散热系统、散热半导体和散热器等产品,不仅性能卓越,而且设计精良,满足了各种复杂应用场景的需求。此外,Fischer Elektronik还不断拓展产品线,增加了连接器、外壳等系列产品,进一步巩固了其在电子元件市场的地位。这些创新和技术突破,为公司的持续发展提供了强大动力。
在XXXX年12月,EMBEST成为了Microsoft银牌合作伙伴。这一荣誉的获得标志着EMBEST在软件开发和服务方面得到了业界的广泛认可。作为Microsoft银牌合作伙伴,EMBEST将能够更好地利用Microsoft的技术和资源,为客户提供更优质的服务和解决方案。
AdTech公司深知人才是企业发展的核心动力。因此,公司一直致力于培养和引进高素质的人才,打造了一支具有丰富经验和专业技能的团队。公司通过提供良好的工作环境和福利待遇,吸引了一批优秀的研发、市场和管理人才。同时,公司还注重员工的培训和成长,为员工的职业发展提供了广阔的空间。这些措施使得公司的团队更加稳定和高效,为公司的持续发展提供了有力保障。
处理器: ATMega128L 系统时钟: 外部16M晶体震荡器 通信终端: RS-232 <-----> USART0 溶丝描述: [EESAVE=0][CKOPT=0][BODLEVEL=1][BODEN=0][CKSEL=1111 SUT=10] 软件平台: ICCA ...… 查看全部问答∨ |
|
C系列中文模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供 三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所 有的功能,包含显示RAM,字型产生器,都包含在一 ...… 查看全部问答∨ |
报名页面:https://www.eeworld.com.cn/formguide/index.php?formid=90 (请在备注中注明自己所参与的部分) DIY示波器活动QQ群:16254999 在整体方案上参考<无线电>上的示波器设计方案,采用STM32F103RBT6作为主控CPU,LPC2103作为辅助CPU,对 ...… 查看全部问答∨ |
用热电偶测温,经单片机pid调节,触发固态继电器实现线性升温 但当电网电压变化时,升温曲线不稳定,很不线性 原因到底出在哪里呢,高次谐波?继电器?pid参数?还是其它因素,希望大家各抒己见,十分希望能得到各位的帮助,谢谢!… 查看全部问答∨ |
给分虽然少,但已经是本人分数的多一半了,不好意思哈 现在具体说一下问题的内容: 核心是把mp3文件烧录到arm7板的片外nor flash中,如果没有操作系统,也没有文件系统的话,我应该怎么考虑呢?按照字节串口传输吗?我该如何把mp3文件转成字节的 ...… 查看全部问答∨ |
VC6编的程序,想在ARM9模块上运行,程序是关于串口输入输出的,还有同上位机数据库连接的内容,用了MFC。 请问一下,我这个程序转为EVC4程序,要作些什么,难度几何?… 查看全部问答∨ |
|
做一个程序 需在WinCE系统.net 1.0 上运行,有什么方法用.net 2.0里实现的功能吗?比如实现WebBrowser功能,能否引用System.Windows.Forms.dll来实现? 虽然几乎不可能,但我还是要问,想知道为什么不行?… 查看全部问答∨ |