| 亲 我用咱的例程(定时器触发ADC,DMA传输实验),程序只能ad转换出一次数据是咋弄的呢? |
| 采样周期和定时器触发频率和采样点数应该如何确定?假如我要采样一个1Khz的输入信号,采集256个点做FFT将ADC时钟六分频,设置成12M,那采样周期和定时器触发频率怎么选择? |
沉淀2010 发表于 2019-6-19 13:52 你好 我也遇到这个问题 请问您解决了吗 |
| 谢谢,正需要,学习学习 |
| 谢谢分享 |
| 为啥在屏幕上显示ad值不好使呀,在while的 for循环里面,我把串口的程序去掉了,换成屏幕显示ad值,只能开机测一次,连续撤就不好使,这是为什么呀? |
| 其实用CUBE配置相对简单,如果用标准库就得去查看调用那个库函数,每一个参数怎么配置,相对麻烦。但是现在我也被迫用标准库,借鉴了你的功能,省了不少事,十分感谢。 |
| 真是好资料,谢谢分享 |
| 666,刚好在学,看看,谢谢 |
| 资料很好,来学习下 |
| 您好,在您的程序里初始化定时器的时候,中断函数里面有这样的一句ADC1->CR2|=1<<1,请问这句的意思是什么,我看注释是启动连续转换,如果是的话该怎么理解呢? |
| 先拜再下! |
| 你好,我发现那个程序DMA中断只能进一次,Flag标志位从1改变为0之后就没用了,不能实现循环检测。不知道是不是我理解错误 |
| 谢谢分享 |
| 膜拜大佬 |
| 非常感谢,,非常实用。。。。。 |
段前进 发表于 2018-11-15 14:15 5通道的,,,最后数组里面是值是按通道五个五个划分的吗 |
老倪Kszyp 发表于 2018-9-1 16:00 你好,请问去掉可以吗 |
| 谢谢大佬无私的分享 |
| 多谢大佬的无私分享 |
这这这不合适吧 发表于 2020-8-4 14:38 是的 |
| 请问我是不是可以这样理解,使用定时器触发adc模式,当初始化都执行之后,这就是纯硬件的过程,也就是数这个并不叫中断,cpu也不会在这处理,他就是硬件的定时器触发,adc采样,dma传输循环下去。即cpu在处理其他语句是不受adc影响的,不会被打断。 |
|
为什么下载之后打开是乱码啊 |
| 谢谢分享! |
| 为什么不能下载 |
| 楼主,使用定时器是为了让ADC数据更新的更慢一些嘛?,感觉ADC+DMA然后用 连续转换模式,ADC不就一直在转换数据,然后DMA一直传输数据了不是? |
| 下载留名,正在学习这方面,及时雨,感谢! |
| 博主和各位大佬,问个小白问题,为什么只进一次DMA中断。 |
| 请问一下官方修改版本和定时器中断触发有什么区别吗 |
淘淘追梦 发表于 2019-10-15 15:09 可以,程序设置好就行 |
wasd123 发表于 2020-3-9 16:47 是的,用方式不同 |
| 楼主,三个压缩包用的实现方案都不同吗 |
| 楼主你好,现在你的pwm+adc+dma是连着的,不需要CPU参与。请问如果我想pwm+adc触发不变,dma传输是可以随意开断的吗 |
WFENG 发表于 2019-6-4 15:50 我也碰到串口只打印一次数据的情况,之后就没反应了,请问解决了吗 |
yanjuan 发表于 2019-8-2 15:59 了解下同步规则ADC,是由ADC1和ADC2共同实现的 |
yanjuan 发表于 2019-9-3 17:10 可以用双重(多通道)ADC同步规则:http://www.openedv.com/forum.php ... d=282189&extra= |
| 楼主,想请教您一下,这个用双通道的话,应该怎么来写?能指点一下嘛?刚接触这块 |
| 眼眼眼眼眼眼眼 |
poffy 发表于 2019-8-21 10:56 主函数里面 |
1208 发表于 2019-7-16 16:11 在哪里加while循环 |
| 菜鸡请教,我想问一下不应该每隔500ms一个数据吗,为什么只有32个数据 |
| 这个是把pwm的频率作为adc的采样频率了吗 |
|
本帖最后由 sqk 于 2019-8-9 13:20 编辑 刚学stm32想问这个程序里key0按键有用到吗 |
zifeiyu0921 发表于 2019-8-2 14:43 有设置定时器上升沿触发的,你看下定时器里面的 // TIM_TimeBaseStructure.TIM_Period = 1000;//50000; // TIM_TimeBaseStructure.TIM_Prescaler = (720-1); // TIM_TimeBaseStructure.TIM_ClockDivision = 0; // TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // TIM_DMAConfig(TIM1, TIM_DMABase_CCR1, TIM_DMABurstLength_2Bytes ); // TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); // TIM_Cmd(TIM1, ENABLE); // TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2 // TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 // TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 // TIM_OCInitStructure.TIM_Pulse = 500; //设置待装入捕获比较寄存器的脉冲值,高于脉冲值就会产生高电平 // TIM_OC2Init(TIM2, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM2 OC2 |
zifeiyu0921 发表于 2019-8-2 15:36 你用的是板子,引脚对应不 |
zifeiyu0921 发表于 2019-8-2 18:46 一种是TIM2 CH2对应PA1,一种是TIM1_CH1对应PA8 程序写了两种触发模式,任选一种都可以,你看下我定时器注释掉的 |
zifeiyu0921 发表于 2019-8-6 10:59 这个在别的函数里面有用if来判断每次接收的数据,你可以将它去掉,再改下就可以一直测量 |
| 楼主,你这个程序为什么只测量一遍啊,在while循环里面不是应该一直测量嘛? |
| 楼主,刚刚又试了最后代码,得到了正确的数据,但是在void TIM2_PWM_Init(u16 arr,u16 psc)函数中,有这样一行代码RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB2Periph_GPIOA, ENABLE); //使能定时器1时钟 但是查阅数据手册可知,GPIOA是挂在APB2下的,不知道为什么你这样使能没有报错并且程序还得到了正确的结果 |
dyy哟 发表于 2019-3-4 14:13 大神,这个程序怎么改成双通道呀,就是你这个思路,怎么改的?小白,不懂,很着急 |
/1
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2026-8-17 07:02
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网