OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6803|回复: 8

怎么用定时器让ADC有一个250hz的电压

[复制链接]

8

主题

19

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-4-25
在线时间
17 小时
发表于 2017-5-11 02:03:35 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=applescript,true]#include "sys.h"
#include "delay.h"  
#include "usart.h"   
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "key.h"  
#include "usmart.h"  
#include "sram.h"   
#include "timer.h"
int main(void)
{      
        u16 adcx;
        float temp;
        u16 shao=0;
        u32 i=0;
        Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
        delay_init(168);                        //延时初始化  
        uart_init(84,115200);                //初始化串口波特率为115200   
        LED_Init();                                        //初始化LED
        LCD_Init();                                        //初始化LCD
        Adc_Init();                                 //初始化ADC
        KEY_Init();                                        //按键初始化
        FSMC_SRAM_Init();                        //初始化外部SRAM
        usmart_dev.init(84);                //初始化USMART   
        POINT_COLOR=RED;
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
        LCD_ShowString(30,70,200,16,16,"ADC TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/6");          
        POINT_COLOR=BLUE;//设置字体为蓝色
        LCD_ShowString(30,130,200,16,16,"ADC1_CH5_VAL:");             
        LCD_ShowString(30,150,200,16,16,"ADC1_CH5_VOL:0.000V");       

        for(i=0;i<2500;i+=2)
        {
                adcx=Get_Adc_Average(ADC_CH5,20);
                printf("%d\n", adcx);                       
                shao=adcx;
                SRAMWriteBuffer(&shao,i,1);

                LED0=!LED0;
                delay_ms(4);       
        }
for(i=0;i<2500;i+=2)
        {
                  SRAMReadBuffer(&shao,i,1);
                temp=(float)shao*(3.3/4096);  
                //printf("%lf\n", temp);       
        }
}

[/mw_shl_code]拜托高手们教教我怎么使用定时器写一个adc是250HZ的代码,我看了定时器的实验,但他只教怎么闪led灯,我把它改成 adcx=Get_Adc_Average(ADC_CH5,20);,但还是行不通

最佳答案

查看完整内容[请看2#楼]

我觉得吧,如果是指以250hz的频率采集的话,采用二楼的意见用定时器中断是可以的;如果是指输出250hz的电压,那应该是DAC的事吧?你也没说输出是什么波形,这个话你就得具体波形具体分析了。下次记得把问题说清楚。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2017-3-6
在线时间
35 小时
发表于 2017-5-11 02:03:36 | 显示全部楼层
我觉得吧,如果是指以250hz的频率采集的话,采用二楼的意见用定时器中断是可以的;如果是指输出250hz的电压,那应该是DAC的事吧?你也没说输出是什么波形,这个话你就得具体波形具体分析了。下次记得把问题说清楚。
回复

使用道具 举报

1

主题

31

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3419
金钱
3419
注册时间
2016-9-12
在线时间
374 小时
发表于 2017-5-11 07:13:31 | 显示全部楼层
定时器中断服务函数呢?
回复

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-4-29
在线时间
2 小时
发表于 2017-5-11 07:59:44 | 显示全部楼层
楼主 题目有问题的! 你说的ADC读到250HZ电压?  250HZ是频率的单位,结合你前后的语境,猜测你是 需要一个I/O输出250mV的电压到ADC的入口对吗?  如果是的话,可以 直接用I/O口的PWM模式,因为你的PWM输出高电平3.3V所以 你只需要调整输出的占空比D=0.25V/3.3V=0.076,然后根据你设置的PWM频率,在PWM输出口上增加一个RC低通滤波电路。即可得到输出直流电压随PWM占空比变化的直流电平!
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2017-5-11 09:14:32 | 显示全部楼层
简直莫名其妙
回复

使用道具 举报

8

主题

19

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-4-25
在线时间
17 小时
 楼主| 发表于 2017-5-11 10:13:12 来自手机 | 显示全部楼层
大家抱歉,我没讲清楚,我要的是250hz的sampling rate,就是每一秒钟我要读到250个adc的数据
回复

使用道具 举报

8

主题

19

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-4-25
在线时间
17 小时
 楼主| 发表于 2017-5-11 10:21:34 来自手机 | 显示全部楼层
我怎么调他都没办法到250hz顶多就是30hz,请问这是怎么了
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11551
金钱
11551
注册时间
2014-4-1
在线时间
1316 小时
发表于 2017-5-11 10:58:19 | 显示全部楼层
shaojim12 发表于 2017-5-11 10:21
我怎么调他都没办法到250hz顶多就是30hz,请问这是怎么了


物理过程:定时器设为250Hz,触发ADC。

两件事在内部关联的,不容易观察。

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11551
金钱
11551
注册时间
2014-4-1
在线时间
1316 小时
发表于 2017-5-11 10:58:33 | 显示全部楼层
shaojim12 发表于 2017-5-11 10:21
我怎么调他都没办法到250hz顶多就是30hz,请问这是怎么了


物理过程:定时器设为250Hz,触发ADC。

两件事在内部关联的,不容易观察。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表