F407标准库之定时器触发AD转换

这篇具有很好参考价值的文章主要介绍了F407标准库之定时器触发AD转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于ADC转换,正点原子的标准库开发中讲的是:软件触发一次转换,然后获取一个数据,没提及外部触发,也没提及ADC中断。

如果要多次读取数据,可以通过循环+延时来实现。

F407标准库之定时器触发AD转换

这种情况就是通过多次调用,轮询读取。

其实,可以结合定时器来触发ADC转换,然后在ADC中断函数中读取数据。

要如何操作呢?

奇了怪了,网上几乎找不到这块的有用资料。

明明实际中应该有不少的应用场景呀。

想到一种间接的思路,就是在定时器里不断地调用读取函数。

但是ADC是可以直接外部通过定时器触发的

F407标准库之定时器触发AD转换

F407标准库之定时器触发AD转换  

定时器定时触发AD开始转换,转换完成后,转换结果将被存在 ADC_DR 寄存器中,EOC(转换结束)标志将被置位。如果设置了 EOCIE,则会产生中断。我们在中断中去读取数据即可。

这里有几个地方需要配置。

定时器基本配置,并且使用函数

void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource)

来配置触发输出

比如

TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update);

TIM8更新时会触发。

同时,在ADC初始化时,配置的触发方式为:

//不去禁止触发检测

ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;

//定时器TIM8触发

ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T8_TRGO;

这样,就建立了定时器和ADC的触发联系。定时器会根据配置的间隔定期触发ADC采样和转换,在转换完成时,就可以进入中断函数里读取采样数据

void ADC_IRQHandler(void)

{
     if(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)!=RESET)//等待转换结束

     {

        ……ADC_GetConversionValue(ADC1)……

        ADC_ClearITPendingBit(ADC1,ADC_FLAG_EOC);//清除中断标志位

    }

}

别忘了使能ADC中断

ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel=ADC_IRQn;  //选择TIM3的定时器中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x03; //抢占优先级为3

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; //子优先级为2

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

这里面有个问题,定时器要定多长时间呢?

是不是应该留有ADC一个转换周期的时间?

或者,根据需要的采样频率来定。

比如1kHz采样率,则1ms触发一次采样。文章来源地址https://www.toymoban.com/news/detail-477586.html

到了这里,关于F407标准库之定时器触发AD转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F407高级定时器-死区时间研究-STM32CubeMX

    距离上次写笔记,已经过去好长时间了 中间也折腾过不少东西,但是都没咋整理,主要是这中间都是在干活儿,不是自己想要研究的,也没想着要写。 从去年10月份开始想要学习FOC,10月份研究了一个月,到11月初,实现了SVPWM驱动BLDC电机,使用串口实现开环下转速和力矩调

    2023年04月23日
    浏览(53)
  • stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

    STM32F40x系列总共最多有14个定时器 三种(4)STM32定时器区别 STM3 F4 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 16 /32 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系

    2024年02月12日
    浏览(40)
  • STM32F407单一定时器输出4路不同频率及占空比的PWM波

    程序效果演示 STM32单一定时器输出四路不同频率及占空比的PWM波 一、程序思路 因为定时器只有一个CNT计数器所以只能有一个输出频率,若要实现多路不同频率波形,只能通过在当前CNT计数器的基础上不断累加自身CCR寄存器的值来触发中断在中断中翻转波形的方式,此时中断

    2024年02月05日
    浏览(55)
  • 基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

    定时器有三种,基本定时器,通用定时器,以及高级定时器。 这篇博客以最简单的基本定时器为例,实现LED的闪烁。 后面两种定时器的用法后面再写。 实现功能: TIM6控制LED每隔0.5s变一次状态。 TIM7控制LED1常量2s后熄灭。 因为都是用到LED,所以和上一篇基于STM32CubeMX与keil采

    2024年02月04日
    浏览(59)
  • 【正点原子STM32连载】第二十三章 高级定时器互补输出带死区控制实验 摘自【正点原子】APM32F407最小系统板使用指南

    本章将介绍使用APM32F407输出带死区和刹车控制的两路互补PWM。通过本章的学习,读者将学习到高级定时器的互补输出、死区插入和刹车的功能的使用。 本章分为如下几个小节: 23.1 硬件设计 23.2 程序设计 23.3下载验证 23.1 硬件设计 23.1.1 例程功能 定时器8通道1及其互补通道输

    2024年02月09日
    浏览(61)
  • STM32F系列项目定时器配置-中断触发源详解

    1.以高级定时器为例:  2.触发源选择与极性选择:   3.触发源介绍 (282条消息) 【STM32技巧】(1)STM32定时器8种触发源之ITR0~ITR3说明_stm32 定时器触发定时器_小石头有大内涵的博客-CSDN博客 ITR0 内部触发0 ITR1 内部触发1 ITR2 内部触发2 ITR3 内部触发3 ITR3  

    2024年02月11日
    浏览(48)
  • foc配置篇——ADC注入组使用定时器触发采样的配置

    foc驱动板都会用到电流采样,本篇就针对三电阻低测采样来讲一讲如何配置ADC。 在此之前,或许大家使用ADC都是建立一个大数组,然后DMA无脑开着将数据搬到数组里,等到要用到时候就取出来做一个均值滤波。 ​ 这种方法用在foc电流采样上行不行呢?答案是看情况,如果你

    2024年02月01日
    浏览(40)
  • STM32 HAL库定时器触发DMA并口数据传输

    STM32与FPGA通讯,通过8位并口线进行通讯,16byte的数据在10us之内通过8位并口数据线传给FPGA,FPGA读取该数据。 时钟采用80MHz,由于16byte的数据要在10us之内传完,那么10/(16*2)=0.3125us/次,也就是传输频率得≥3.2MHz。 定时器设置:为了方便起见,先选用了4MHz的传输频率。80MHz

    2024年02月02日
    浏览(70)
  • STM32标准库通用定时器输入捕获

    输入捕获为STM32定时器的一个功能,可以用来测量输入信号的频率和占空比。 具体原理:当输入信号经过比较捕获通道时,STM32会依据通道的极性设置决定是否触发捕获中断TIM_IT_CCx。此时定时器会将当前计数值TIMx-CNT的值保存在TIMx-CCRx中,通过计算两次捕获中断的时间差便可

    2024年03月11日
    浏览(41)
  • STM32F103:ADC采样——定时器触发+DMA传输

    实现ADC多通道采样,采用DMA传输,采样由定时器触发 初始化代码:

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包