找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5925|回复: 6
打印 上一主题 下一主题
收起左侧

STM32F407定时器触发ADC采样并通过DMA传输的源程序

  [复制链接]
跳转到指定楼层
楼主
ID:588281 发表于 2019-7-22 17:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我使用标准库写的,通过定时器触发ADC采样,然后通过DMA进行传输的例程。例程已在STM32F407上验证通过

单片机源程序如下:
  1. /*需要按下复位键才能正常打印数据,原因不明
  2. 定时器1s触发一次ADC转换,然后通过DMA将ADC转换的数据搬运到内存中,然后在dma中断中判断搬运是否完成,在main
  3. 的循环中不断读取转换的值-----取采样数据的平均值的代码可以参考原子的
  4. 要注意的是,这里采用的是定时器1通道1上升沿触发,而数据有8个,若每1s触发一次,则需要每8s才能显示一次转换的数据,因此将定时器触发时间改为了1/8s*/
  5. //#include "stm32f4xx.h"
  6. #include "usart_printf.h"
  7. #include "bsp_systick.h"
  8. #include "bsp_led.h"
  9. #include "ADC.h"
  10. #include "DMA.h"
  11. #include "Timer.h"
  12. RCC_ClocksTypeDef get_rcc_clock;
  13. __IO uint16_t ADC_RegularConvertedValueTab[8] = {0};

  14. //这里可以使用两种定时器触发模式,一种是TIM2 CH2对应PA1,一种是TIM_CH1对应PA8
  15. u8 flag=0;
  16. /*软件复位*/
  17. //void mcuRestart(void)
  18. //{
  19. //__set_FAULTMASK(1); //关闭所有中断
  20. //NVIC_SystemReset(); //复位
  21. //}

  22. int main(void)
  23. {
  24. //        mcuRestart();
  25.         usart_Init ();
  26.         delay_init();                     //延时函数初始化
  27.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  28.         TIM1_PWM_Init();
  29.   ADC_Configuration();
  30.         DMA2_Init();
  31.         printf("这是一个测试\r\n");
  32.         RCC_GetClocksFreq(&get_rcc_clock);
  33.   while (1)
  34.   {
  35.                 if(flag)
  36.                  {
  37.                          flag=0;
  38.                                          for(int i=0;i<8;i++)
  39.                                         {
  40.                                                 printf("%d ",ADC_RegularConvertedValueTab[i]);                        
  41.                                         }

  42.                  }
  43.   }
  44. }
复制代码

所有资料51hei提供下载:
TIM+ADC+DMA实验.7z (592.7 KB, 下载次数: 322)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:588726 发表于 2019-7-23 15:29 | 只看该作者
没有资源下载!
回复

使用道具 举报

板凳
ID:376348 发表于 2019-8-7 15:31 | 只看该作者
请问楼主,我把定时器触发AD改成1us触发一次为什么就传输不了数据了??
回复

使用道具 举报

地板
ID:609954 发表于 2019-12-13 12:08 | 只看该作者
AD采集精度如何呢
回复

使用道具 举报

5#
ID:359762 发表于 2020-1-19 12:52 | 只看该作者
下载来看看。。希望有用
回复

使用道具 举报

6#
ID:783744 发表于 2020-6-19 02:47 | 只看该作者
下载看看
回复

使用道具 举报

7#
ID:591382 发表于 2020-8-17 18:36 | 只看该作者
STM32F407中的AD采样模块、DMA模块,我这几天都有在学,今天参考了这个程序代码,确实很有用。希望自己能坚持学习下去。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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