OpenEdv-开源电子网

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

用定时器触发adc转换,然后改变定时器时间的问题,求大神

[复制链接]

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
发表于 2015-11-13 09:30:12 | 显示全部楼层 |阅读模式
5金钱
我用定时器触发adc转换,然后进去中断,在主函数里面显示波形。我想通过按键中断改变定时器时间也就是采样频率,按下a增加频率,按下b减小频率,但是初始化tme后,如何改变它的时间呢?

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 09:30:13 | 显示全部楼层
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 09:47:59 | 显示全部楼层
能重复初始化么
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2015-11-13 11:10:18 | 显示全部楼层
不外乎就是修改寄存器,和设置一样。

只是要注意何时修改,何时生效的问题。
回复

使用道具 举报

3

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-4-14
在线时间
0 小时
发表于 2015-11-13 13:53:15 | 显示全部楼层
不用重新初始化,可以直接修改定时的值的
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 16:11:47 | 显示全部楼层
回复【4楼】chy712:
---------------------------------
不对啊,改了值,ad转换值就不对了
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 16:15:25 | 显示全部楼层
回复【3楼】xuande:
---------------------------------
老师问一下,第二次改变time时候我是这样设置的:先关了adc,time,dma,重新初始化time 然后打开adc,dma,可是现实adc转换不对,这是怎么回事ADC_DMACmd(ADC1, DISABLE);
  ADC_Cmd(ADC1, DISABLE);
//  TIM_Cmd(TIM2,DISABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

    TIM_TimeBaseStructInit(&TIM_BaseInitStructure); 
    TIM_BaseInitStructure.TIM_Period=6;//83
    TIM_BaseInitStructure.TIM_Prescaler=5;//9
    TIM_BaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_BaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2,&TIM_BaseInitStructure);
    TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_Update);
   
         DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE);//开启传输完成中断
      DMA_Cmd(DMA2_Stream0, ENABLE);
         ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_3Cycles);//指定采样时间

 /* Enable DMA request after last transfer (Single-ADC mode) */
  ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);

  /* Enable ADC3 DMA */
//   ADC_DMACmd(ADC1, ENABLE);
ADC_SoftwareStartConv(ADC1);
        ADC_Cmd(ADC1, ENABLE);
  ADC_DMACmd(ADC1, ENABLE); 
  TIM_Cmd(TIM2,ENABLE);
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 16:24:03 | 显示全部楼层
回复【3楼】xuande:
---------------------------------
我又加了一个,就是先关了adc,time,dma,重新初始化time ,再重新初始化adc,dma,中断,但是第二次初始化以后就卡死了,这是怎么回事,老师,初学者好痛苦
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-11-13 16:26:25 | 显示全部楼层
回复【3楼】xuande:
---------------------------------
第一个方法adc值全是相同的,我输入是正旋波,第二个方法,直接卡死,adc就不转换了,应该怎么改程序呀
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 14:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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