stm32 adc1 adc2区别的adc1和adc2的区别

STM32F103的ADC总结_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32F103的ADC总结
上传于||文档简介
&&S​T​M2​F0的​A​D​C​总​结
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢STM32单片机之ADC学习总结
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
STM32单片机之ADC学习总结
&&& 因为公司的产品上需要使用AD来检测电池电压,要求不是很高,突然想用下DMA+ADC+TIM,以前以为很简单,实际使用中让我觉得很惭愧,遇到的问题让我一下子蒙了,不停的查资料,不停的测试,终于一个一个的问题都解决了,同时对stm32的ADC有了新的认识,并且打算再闲暇时间内将stm32的资源尽量的实践下。
& & & &我用的是STM32F4 来调试ADC3+DMA+TIM1(单通道),首先我先查看了下DMA的资料,之后参考官方提供的ADC3+DMA很快可以正常读取数据,之后我直接添加定时器触发AD转换,结果失败,我开始查资料看手册,逐渐对这三者之间的关系有了一个认识
& & & 首先定时器产生触发信号,AD检测到转换信号后开始转换,每转换一次就通过DMA将数据放到指定的内存地址中,直到达到DMA设定的DMA_BufferSize设定值后DMA置位相应的标志位,从而完成一次DMA传输。
& & & &由上面的关系的可以得知ADC转换是一次一次即单次非扫描模式(我测试的是AD单通道),因为连续模式一旦触发就会不停的转换,这样的话定时器触发转换就失去了意义,之后DMA设置成普通模式,即完成一次DMA传输后,停止传输,之后的DMA请求不被响应,因为DMA传输完成后以为着可以进行数据处理了,这个时候为了防止数据被覆盖(网上还有其他方法防止数据被覆盖)。
1&关于定时器的PWM输出
一开始我用定时器1的CH1来作为AD的触发信号对应的管脚是PA8,管脚配置的时候配置成复用模式没有调用 GPIO_PinAFConfig,将PA8复用成TIM1的输出脚,关于定时器的时钟我忽略了一个重要的因素,所以设置的频率一直不对
查看stmf4的参考手册 如果APBx_PRESC为1则定时器的时钟为PCLKx的时钟 &否则为2倍的PCLKx
-如果是定时器1和定时器8 需要调用TIM_CtrlPWMOutputs来开启pwm输出之后通过示波器可以正确查看PA8的的波形输出。
-ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_D
我对这句一点都不懂,通过查资料发现stm32F4的ADC的DMA有4种模式,主要是为了通过联合使用ADC模块提升采样速度,其中默认模式和模式1差不多,
DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)
//从依次取ADC的值,分辨率为12位,
DMA mode 2 enabled (2 / 3 half-words by pairs - 2&1 then 1&3 then 3&2)
//可以联合使用这三个ADC模块进行采样,采样速度也是单独的三倍(2.4*3Msps),分辨率是12位,完成两次转换后,将值取走应该是
//ADC2+ADC1 ,ADC1+ADC3 ,ADC3+ADC2
DMA mode 3 enabled (2 / 3 bytes by pairs - 2&1 then 1&3 then 3&2)
//模式3和模式2差不多 但是分辨率要求是8位或6位,虽然分辨率降低了但是转换时间相对12位的要短。
-ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
//连续模式必须被禁止,不然定时器触发就失去了意义
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_R
//查看寄存器,发现需要使能外部触发,上面就是开启并制定触发信号的极性
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
//选择触发时间
-一旦使用外部触发,那么 软件触发就不需要再调用。
3& DMA的传输
-ADC每转换一次,DMA搬运一次,达到指定的次数后,完成一次传输。
-DMA重启,看了网上很多人说DMA关闭后再开启后无法实现DMA传输,在stm32研讨会的演讲稿上有关于DMA重启的解决办法,
我按照第二种方法测试,发现如果处理数据时间长就会有问题,之后我吧定时器和ADC一起关闭之后处理数据,再配置DMA,在开启AD和定时器,就正常了。不太清楚哪里的问题。
-stm32f4的DMA分为数据流和通道,其中通道与stm32f1的触发源类似,F4的数据流与F1的通道类似
这样ADC+DMA+TIM就正常工作了。
我想用内部ADC把采集的波形通过ucgui显示出来,从而加强对AD的运用与认识,我用stm32采集信号发生器的法波信号进行采集,一次采集300个点,之后通过ucgui将其显示在TFT屏上,为了让波形好看一些,我查了下网上的一些例程和示波器的资料,里面讲到可以通过数字内插的方法将波形重现和回放,数字内插的方法常用的有两种,一种是线性内插一种是sinx/x内插,线性内插比较好了解,关于sinx/x内插就复杂的多,仅仅是理解就很麻烦,数学功底严重不足的悲剧,原理都不懂想用c语言描述就别想了,所以只能用线性内插了,不过网上有关于sinx/x内插的c语言实例,使用线性内插后,波形比之前好看多了,通过调整TIM1的触发信号的频率达到了t/div 的作用如何算频率,一开始我打算把AD采集的结果的最大值和最小值的下标做个差,之后绝对值再乘tim1的周期 &后来果断放弃,原因很明显。后来我查询最大值和最小值 之后求平均值,然后一次查询(前一个AD值比均值小且其后一个值比均值大)记录下标,之后查询前一个AD值比均值大且其后一个值比均值小 记录下标,将两次下标做差求绝对值之后与触发信号的频率运算可以求出采集的波形的频率。目前我仅仅测试了占空比为50%的方波信号,效果还好,不过还要完善,比如占空比不为50%的情况。
& & & 折腾了几个晚上,我发现stm32的资源很丰富,而我只掌握了很少很少的一部分基础的东西。以后要不断的完善和实践。将折腾的过程中遇到的问题和理解写出来与大家分享,其中有误的地方希望大家提出来交流。
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights ReservedSTM32之ADC - 单片机干货 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
STM32之ADC
助理工程师
14:51:09  
STM32的ADC模块,请允许我用如此通俗的语言:普通话&&来介绍STM32ADC模块的特色& && &1、1MHz转换速率、12位转换结果(12位、记住这个12位哈、因为2^12=4096 ,也请记住4096哈)& && && &&&STM32F103系列:在56MHz时转换时间为:1μs& && && && && && && && && && && && &在72MHz时转换时间为:1.17μs& && &2、转换范围:0~3.6V&&(3.6v----&当你需要将采集的数据用电压来显示的话:设你采集的数据为:x[0~4095],此时的计算公式就为:(x / 4096) * 3.6))& && &3、ADC供电要求:2.4V~3.6 V(可千万别接到 5V 的石榴裙子底下呀)& && &4、ADC输入范围:VREF-≤ VIN ≤VREF+ (VREF+和VREF-只有LQFP100封装才有)& && &5、双重模式(带2个ADC的设备): 8种转换模式& && &6、最多有18个通道:16个外部通道& && && && && && && && && && && &&&2个内部通道:连接到温度传感器和内部参考电压(VREFINT = 1.2V)& && &......(略,请看参考手册哈,由于篇幅,就不过多的列出来了、、说到略、让我想起了月光宝盒诸葛亮的:略懂略懂、、其实我也是略懂略懂而已、、)& && &12、DMA功能(仅ADC1有)& && &本博客里,由于篇幅、所以就以独立模式下的单次转换为例哈、打开参考手册可以看到这段话:& && & 单次转换模式下,ADC只执行一次转换。& && & 该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。& && & 一旦选择通道的转换完成:& && & ● 如果一个规则通道被转换: ─ 转换数据被储存在16位ADC_DR寄存器中 ─ EOC(转换结束)标志被设置 ─ 如果设置了EOCIE,则产生中断。& && & ● 如果一个注入通道被转换: ─ 转换数据被储存在16位的ADC_DRJ1寄存器中 ─ JEOC(注入转换结束)标志被设置 ─ 如果设置了JEOCIE位,则产生中断。& && & 然后ADC停止。& && &
251.png (40.05 KB, 下载次数: 2)
14:49 上传
此图形象的表明了其背后那不为人知的秘密转换关系。。虽然单凭看文字就能想象出来、但是、有图片是不是更加形象呢???
& &&&对于以上的寄存器、在此我稍微提提:免得寄存器大神们产生怨气:好不容易等到你讲我老大ADC,却不把我这些背后的勤劳者给导出来& &&&好了,那就恕小弟容禀:& &&&1、ADC状态寄存器(ADC_SR) & &&&
063.png (29.16 KB, 下载次数: 2)
14:49 上传
& & 2、ADC控制寄存器1(ADC_CR1)
688.png (49.73 KB, 下载次数: 4)
14:49 上传
& & 3、ADC控制寄存器2(ADC_CR2)& && & EXTSEL[2:0]:选择启动规则通道组转换的外部事件 (External event select for regular group)& && & ALIGN:数据对齐 (Data alignment)& && & RSTCAL:复位校准 (Reset calibration)& && & CAL:A/D校准 (A/D Calibration)& && & CONT:连续转换 (Continuous conversion)& && & ADON:开/关A/D转换器 (A/D converter ON / OFF)& & 4、ADC采样时间寄存器1(ADC_SMPR1)& && & SMPx[2:0]:选择通道x的采样时间 (Channel x Sample time selection)& & 5、ADC规则序列寄存器1(ADC_SQR1)& && & L[3:0]:规则通道序列长度 (Regular channel sequence length)& && & SQ1[4:0]:规则序列中的第1个转换 (1st conversion in regular sequence)(ADC规则序列寄存器3(ADC_SQR3))& & 6、ADC规则数据寄存器(ADC_DR)& & & & DATA[15:0]:规则转换的数据 (Regular data)
(由于寄存器过于多,我们就不在这一一列举了哈、、因为我主要是用库,所以寄存器相关的位都不具体介绍了哈、请大家参照中文手册)& &在这里,向大家介绍下:数据对齐:& && && && && && && && && && && && && && && & ALIGN位用于设置对齐方式:右或左;& && && && && && && && && && && && && && && & 对于注入通道,转换结果是减去偏移量的值,可以为一个负数,在右对齐时扩展位位符号位。
349.png (30.57 KB, 下载次数: 6)
14:49 上传
& & 那我们现在要怎么来实现呢??这个问题、相信大家在看了那么多的寄存器之后急迫想要知道的吧、、前面的只是个热身、、接下来步骤如下:& & 1、开启ADC1的时钟,由于ADC1是在PA1上,所以同时也要打开PA的时钟,并进行相关的配置、对于这个配置,要把PA1设置成模拟输入,为什么呢??大家打开中文参考手册可以看到& &
258.png (38.56 KB, 下载次数: 4)
14:49 上传
啊哈、、这下子清楚了吧、& &2、复位ADC1,(本人觉得没必要、为什么,待会我会跟你说,留下悬念先),设置ADC1的分频因子,(记住,这里的ADC的时钟不能超过14MHZ),而且其采样周期长点会好点,& && &&&ADCCLK---最快可达14MHz, 时钟来自经过分频器的PCLK2(2、4、6、8分频)& && &&&整个转换时间 = 采样时间 + 12.5个周期(固定时间)& && & 在14MHz和采样时间位1.5周期时 ? 转换时间:1μs (14个周期 cycles)当ADCCLK=14MHz和1.5周期的采样时间:& && &&&TCONV = 1.5 + 12.5 = 14周期 = 14×(1 / (14 × 1000000)) = 1μs& && & 其采样周期一览表:
925.png (26.73 KB, 下载次数: 6)
14:49 上传
& & 涉及到采样周期、这里来看看转换序列:& & 最多达16个转换通道且可以采样不同的顺序排列,不同的采样时间和过采样的可能性。例如:- 转换通道:1、2、8、4、7、3、11
& && && && && && && && && & - 不同的采样时间;
& && && && && && && && && & - Oversampling of channel 7。
250.png (51.15 KB, 下载次数: 4)
14:49 上传
3、初始化ADC1的参数、设置ADC1的工作模式和规则序列的相关信息;& && & 大家通过打开&stm32f10.adc.h&可以看到:&font color=&rgb(64, 50, 38)&&&font face=&verdana,&&&i&typedef struct
{
&&uint32_t ADC_M& && && && && && && & //设置ADC模式--&独立模式
&&FunctionalState ADC_ScanConvM& && & //设置是否开启扫描模式 ---&否
&&FunctionalState ADC_ContinuousConvM //设置是否开启连续转换模式 ----&否
&&uint32_t ADC_ExternalTrigC& && && & //设置启动规则转换组转换模式----&软件触发& && && && &&&
&&uint32_t ADC_DataA& && && && && &&&//设置数据对齐方式-----&右对齐
&&uint8_t ADC_NbrOfC& && && && && &//设置规则序列的长度----&顺序进行规则转换的ADC通道数目1
}ADC_InitTypeD&/i&&/font&&/font&复制代码
&&4、使能ADC并校准注:在设置完了以上信息后,使能AD转换器,执行复位校准和AD校准(这两步校准一定要,否则数据将不准)还有记住,每次进行校准之后都要等待校准结束,但是通过什么方式知道校准结束呢?这里是通过获取校准状态来判断是否校准结束,相关的库函数请看代码& && &分别的库函数请看待会的代码。(请用比较老外的方式去看,也就是用英语啦,为什么呢?请看下文)& &&&5、读取AD的值& & 当然,这里说读取AD值并不是那么的简单,以上我们只是准备好了AD,还没有设置相关的规则序列通道,采样顺序,以及采样周期,设置完之后启动AD转换就行了、然后才直接读取哈、、
& && &相关的库函数请看代码、&font color=&rgb(64, 50, 38)&&&font face=&verdana,&&void Adc_Init(void)
{
& & ADC_InitTypeDef ADC_InitS
& & GPIO_InitTypeDef GPIO_InitS
& &/* Enable ADC1 and GPIOA clock */
& & RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
& & RCC_ADCCLKConfig(RCC_PCLK2_Div6);//12MHZ
&&/* Configure PA.1 (ADC Channel) as analog input -------------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
&&GPIO_Init(GPIOA, &GPIO_InitStructure);
& &
& & //ADC_DeInit(ADC1);//在这里复位被我注释掉了、至于为什么,我待会会说
& &
& && &/* ADC1 configuration ------------------------------------------------------*/
&&ADC_InitStructure.ADC_Mode = ADC_Mode_I//这里对应上面所讲的配置,在这里就不给出注释了
&&ADC_InitStructure.ADC_ScanConvMode = DISABLE;
&&ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
&&ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_N
&&ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_R
&&ADC_InitStructure.ADC_NbrOfChannel = 1;
&&ADC_Init(ADC1, &ADC_InitStructure);
& &
& & /* Enable ADC1 *///知道我为啥要在上面提醒大家要用老外的方式来看了吧、因为这里的注释都是用英文的
&&//请不要以为我装逼,我这样做是有原因的、、原因我待会会说、你也会明白我最初的标题为何那样写
&&ADC_Cmd(ADC1, ENABLE);
&&/* Enable ADC1 reset calibration register */& &
&&ADC_ResetCalibration(ADC1);
&&/* Check the end of ADC1 reset calibration register */
&&while(ADC_GetResetCalibrationStatus(ADC1));
&&/* Start ADC1 calibration */
&&ADC_StartCalibration(ADC1);
&&/* Check the end of ADC1 calibration */
&&while(ADC_GetCalibrationStatus(ADC1));
}&/font&&/font&复制代码
u16 Get_val(u8 ch)
{
& & u16 DataV //又是英文注释、、啊哈& &
/* ADC1 regular channel14 configuration */
&&ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5);
& &
& & /* Start ADC1 Software Conversion */
&&ADC_SoftwareStartConvCmd(ADC1, ENABLE);
& &
& & /* Test if the ADC1 EOC flag is set or not */
& & while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
& & //FlagStatus S
& & //Status = ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC);
& & //while(!Status);----&这样做实现不了、请注意
/*Returns the ADC1 Master data value of the last converted channel*/
DataValue = ADC_GetConversionValue(ADC1);
return DataV
u16 ADC_Get_aveg(u8 ch,u8 n)
u32 ad_sum = 0;
for(i=0;i&n;i++)
ad_sum += Get_val(ch);
delay_ms(5);
return (ad_sum / n);
adcx=ADC_Get_aveg(ADC_Channel_1,10);//获取AD数值(0~4095)
temp=(float)adcx*(3.3/4096);//获取相应的电压值复制代码
&&到了这一步,我们已经完成了AD采集数据的任务、接下来,有人可能有时候会觉得很纳闷,为什么有些人知道要完成特定的功能,它的步骤是怎么样的、为什么我就不知道??这个问题嘛、、接下来我讲的希望能稍微帮你,也希望你能好好的借鉴、& &&&步骤小技巧:其实也没啥的、大家知道下载库的文件的时候,里面都有包含每个模块的例子和一个模版、拿ADC这个模块来举例:& &
901.png (180.15 KB, 下载次数: 4)
14:49 上传
点击main.c可以看到神奇的一幕:
369.png (32.12 KB, 下载次数: 6)
14:49 上传
& &大家仔细看看,可以发现在官方给的历程中的步骤里并没有复位ADC的函数,个人觉得所以没有必要去复位当然复位也不是什么坏事哈、看你个人、、看到这、应该明白了我前面的说法了吧、还有、大家应该也注意到了、都是英文的注释、、所以看到这大家也清楚了,前面不是我装逼、、所以呢、其实英语对于我们来说还是很重要的、、那有人问,时钟的分频因子呢?怎么没有设置??不急哈、、请看:对于分频因子的设置,也在这个函数里:而这个RCC_Configuration()在最开始已经使用 了、、
&&所以大家要好好利用官方给的历程、说到这、你猜我词穷了吗?
12:33:10  
很好的资料,以前ADC还有不明白的地方,这下有点懂了,感谢楼主。
23:17:00  
我也是搞电子的,学习了,谢谢,可以加你吗?告诉我QQ
23:02:53  
不错啊,不错啊,不错啊,不错啊,不错啊,不错啊,
21:02:52  
全面细致,深入剖析
16:59:38  
很好的学习资料 感谢分享
等待验证会员
15:17:54  
全面细致,深入剖析
23:22:31  
解释详细,楼主辛苦,学习了
15:29:48  
感谢 楼主 分享!!!!!!!!!!!!!
20:15:51  
多谢楼主的分享
21:46:50  
很好的学习资料多谢楼主的分享
15:54:19  
不错,多谢,最好也写一下多路采集
13:01:48  
谢谢分享谢谢分享谢谢分享谢谢分享
22:22:40  
10:58:36  
全面细致,深入剖析,非常有用
15:23:36  
非常好 受用了 非常感谢&&
19:13:46  
ADI版本的Multisim
19:52:39  
很好,学习~!!!!!!!!!!!
08:41:28  
很想学习软件,STM32系列AD转换的精度???
17:24:45  
Powered byADC_stm32-double-ADC-model 的双ADC模式。 ADC2和ADC1共用DMA。 欢迎参考 SCM 单片机开发 261万源代码下载-
&文件名称: ADC_stm32-double-ADC-model& & [
& & & & &&]
&&所属分类:
&&开发工具: Others
&&文件大小: 1521 KB
&&上传时间:
&&下载次数: 261
&&提 供 者:
&详细说明:STM32的双ADC模式。。。ADC2和ADC1共用DMA。。。欢迎参考-The STM32 dual ADC mode. . . ADC2 ADC1 share the DMA. . . Welcome reference. . .
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&ADC之双ADC模式\CMSIS\core_cm3.c&&..............\.....\core_cm3.h&&..............\.....\startup\arm\startup_stm32f10x_cl.s&&..............\.....\.......\...\startup_stm32f10x_hd.s&&..............\.....\.......\...\startup_stm32f10x_hd_vl.s&&..............\.....\.......\...\startup_stm32f10x_ld.s&&..............\.....\.......\...\startup_stm32f10x_ld_vl.s&&..............\.....\.......\...\startup_stm32f10x_md.s&&..............\.....\.......\...\startup_stm32f10x_md_vl.s&&..............\.....\.......\...\startup_stm32f10x_xl.s&&..............\.....\.......\gcc_ride7\startup_stm32f10x_cl.s&&..............\.....\.......\.........\startup_stm32f10x_hd.s&&..............\.....\.......\.........\startup_stm32f10x_hd_vl.s&&..............\.....\.......\.........\startup_stm32f10x_ld.s&&..............\.....\.......\.........\startup_stm32f10x_ld_vl.s&&..............\.....\.......\.........\startup_stm32f10x_md.s&&..............\.....\.......\.........\startup_stm32f10x_md_vl.s&&..............\.....\.......\.........\startup_stm32f10x_xl.s&&..............\.....\.......\iar\startup_stm32f10x_cl.s&&..............\.....\.......\...\startup_stm32f10x_hd.s&&..............\.....\.......\...\startup_stm32f10x_hd_vl.s&&..............\.....\.......\...\startup_stm32f10x_ld.s&&..............\.....\.......\...\startup_stm32f10x_ld_vl.s&&..............\.....\.......\...\startup_stm32f10x_md.s&&..............\.....\.......\...\startup_stm32f10x_md_vl.s&&..............\.....\.......\...\startup_stm32f10x_xl.s&&..............\.....\.......\TrueSTUDIO\startup_stm32f10x_cl.s&&..............\.....\.......\..........\startup_stm32f10x_hd.s&&..............\.....\.......\..........\startup_stm32f10x_hd_vl.s&&..............\.....\.......\..........\startup_stm32f10x_ld.s&&..............\.....\.......\..........\startup_stm32f10x_ld_vl.s&&..............\.....\.......\..........\startup_stm32f10x_md.s&&..............\.....\.......\..........\startup_stm32f10x_md_vl.s&&..............\.....\.......\..........\startup_stm32f10x_xl.s&&..............\.....\stm32f10x.h&&..............\.....\system_stm32f10x.c&&..............\.....\system_stm32f10x.h&&..............\FWlib\inc\misc.h&&..............\.....\...\stm32f10x_adc.h&&..............\.....\...\stm32f10x_bkp.h&&..............\.....\...\stm32f10x_can.h&&..............\.....\...\stm32f10x_cec.h&&..............\.....\...\stm32f10x_crc.h&&..............\.....\...\stm32f10x_dac.h&&..............\.....\...\stm32f10x_dbgmcu.h&&..............\.....\...\stm32f10x_dma.h&&..............\.....\...\stm32f10x_exti.h&&..............\.....\...\stm32f10x_flash.h&&..............\.....\...\stm32f10x_fsmc.h&&..............\.....\...\stm32f10x_gpio.h&&..............\.....\...\stm32f10x_i2c.h&&..............\.....\...\stm32f10x_iwdg.h&&..............\.....\...\stm32f10x_pwr.h&&..............\.....\...\stm32f10x_rcc.h&&..............\.....\...\stm32f10x_rtc.h&&..............\.....\...\stm32f10x_sdio.h&&..............\.....\...\stm32f10x_spi.h&&..............\.....\...\stm32f10x_tim.h&&..............\.....\...\stm32f10x_usart.h&&..............\.....\...\stm32f10x_wwdg.h&&..............\.....\src\misc.c&&..............\.....\...\stm32f10x_adc.c&&..............\.....\...\stm32f10x_bkp.c&&..............\.....\...\stm32f10x_can.c&&..............\.....\...\stm32f10x_cec.c&&..............\.....\...\stm32f10x_crc.c&&..............\.....\...\stm32f10x_dac.c&&..............\.....\...\stm32f10x_dbgmcu.c&&..............\.....\...\stm32f10x_dma.c&&..............\.....\...\stm32f10x_exti.c&&..............\.....\...\stm32f10x_flash.c&&..............\.....\...\stm32f10x_fsmc.c&&..............\.....\...\stm32f10x_gpio.c&&..............\.....\...\stm32f10x_i2c.c&&..............\.....\...\stm32f10x_iwdg.c&&..............\.....\...\stm32f10x_pwr.c&&..............\.....\...\stm32f10x_rcc.c&&..............\.....\...\stm32f10x_rtc.c&&..............\.....\...\stm32f10x_sdio.c&&..............\.....\...\stm32f10x_spi.c&&..............\.....\...\stm32f10x_tim.c&&..............\.....\...\stm32f10x_usart.c&&..............\.....\...\stm32f10x_wwdg.c&&..............\USER\ADC.axf&&..............\....\ADC.hex&&..............\....\ADC.htm&&..............\....\ADC.lnp&&..............\....\ADC.map&&..............\....\ADC.plg&&..............\....\ADC.sct&&..............\....\ADC.tra&&..............\....\ADC.uvopt&&..............\....\ADC.uvproj&&..............\....\ADC_Target 1.dep&&..............\....\ADC_uvopt.bak&&..............\....\ADC_uvproj.bak&&..............\....\config.c&&..............\....\config.crf&&..............\....\config.d&&..............\....\config.h
&[]:和说明完全不符&[]:很好,推荐下载&[]:很好,推荐下载
&近期下载过的用户:
&&&&&&&&&&&&&&[]
&相关搜索:
&&&&&&&&&&
&输入关键字,在本站261万海量源码库中尽情搜索:
&[] - 代码使用C编写,平台为Cortex-M3 系列stm32F107VCT开发板。
用于将ARM ADC通道获取的5s 400Hz双通道信号,共2000*2个, 通过卡尔曼滤波,提取主成分,8组(共16个)个特征,最后将此信号分类成4种。 此源码为其中核心部分,VC测试通过。(不含信号文件和基础源
&[] - 如何使ADC1和ADC2工作于同步规则模式。
配置ADC1的通道14和通道17为连续同步规则通道。
配置ADC2的通道11和通道12为连续同步规则通道。
一旦通过软件启动规则通道组的转换,则ADC1的通道14和ADC2的通道11将同步转换。
&[] - 基于stm32的FSMC模块的T6963驱动程序,其中包括两级菜单的编程源代码。
&[] - stm32f407的双通道adc驱动主函数,由定时器触发,dma传输。
&[] - 基于stm32f103c8t6单片机的ADC-DMA源码,固件库为3.5版本
&[] - stm32F4系列实现的3ADC多通道采样程序,其中的UART未使用,读者可以忽略。
&[] - stm32中使用定时器最全的例子,包括基础定时器与pwm,比较输出,脉冲计数等}

我要回帖

更多关于 stm32 adc dma 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信