关键词:
前言
我们前面讲了输出了阶梯波实验
STM32CubeMX(07)定时器+ DAC+DMA输出阶梯波实验。
今天我们来输出正弦波,其实我们很容易发现其中的规律,就是输出相应的AD值就可以了。
一、练习
【功能】定时器触发DAC转换,使用DMA方式触发 ,在DAC通道1输出正弦波。
【参数计算&设置】 定时器6定时参数(APB1总线,84MHz):20.5KHz
== PSC=15, ARR=255,== 则定时器更新周期为 84MHz/(16*256)=20.5KHz 若正弦波每个周期32个采样点,则每个正弦波周期为 :20.5KHz/32=640Hz
二、思路
首先在数学上我们要理清楚
V=sin(t),t属于[0:2π],sin(t)的范围是[-1:1],因为DA不能输出所以我们要抬升V=sin(t)+1,范围是[0:2],
写到寄存器的值的范围是[0:4096],所以2048*(sin(t)+1)的范围就是[0:4096]
需要多少个点只需要把2π分成多少份就可以了
所以转化成C语言就是
== 2048*(sin((2.0PIi)/(Point_Num-1))+1)==
然后封装成一个函数就是
void SineWave_Data( uint16_t cycle ,uint16_t D)
uint16_t i;
for( i=0;i<cycle;i++)
D[i]=2048(sin((2.0PIi)/(Point_Num-1))+1);
三、参数修改
我们在tim.c的基础上修改一下就可以了,改一下分频系数和装载值。
然后在main.c中添加如下变量和函数
然后在main函数中初始化好,就可以了,编译,烧录
四、测试结果
可以看到我们的频率时符合我们的理论值,那为啥看起来这么离散,原因是点数太少了,一个正弦波用32个点来表示,其实已经很勉强了。
总结
那么方波,三角波,甚至是任意波,都是一样的道理。我这里就不着重讲了,只要推出数学表达式就可以了,今天的总结到此结束,希望能够帮助到大家。
void SineWave_Data( uint16_t cycle ,uint16_t *D) //正弦波
u16 i;
for( i=0;i<cycle;i++)
D[i]=2048*(sin((2.0*PI*i)/(Point_Num-1))+1);
void Triangle_Data(uint16_t cycle ,uint16_t *D) //三角波
u16 i;
for( i=0;i<cycle;i++)
if(i<=cycle/2)
D[i]=i*(4096.0/(cycle/2));
else
D[i]=i*(-4096.0/(cycle/2))+2*4096;
void Square_Data(uint16_t cycle ,uint16_t *D) //方波
u16 i;
for( i=0;i<cycle;i++)
if(i<=cycle/2)
D[i]=0;
else
D[i]=4095;
stm32cubemx教程dac+tim+dma(代码片段)
DAC+TIM+DMA前言本文主要讲解定时器触发DAC去输出任意信号,DMA负责数据数据搬移。所需工具:开发板:STM32F103RCT6STM32CubeMXIDE:Keil-MDK相关文章:文章目录DAC+TIM+DMA前言什么是DAC模式简介工程建立时钟配置DAC配置... 查看详情
stm32f103vet6基于stm32cubemx配置dac-三角波输出示例(代码片段)
STM32F103VET6基于STM32CubeMX配置DAC-三角波输出示例📽🎞🎬STM32CubeMX配置过程演示📍DAC输出引脚位:PA4🌷不同分频系数下的三角波频率分频系数越高,频率越低。htim2.Init.Prescaler=6-1;htim2.Init.Prescale 查看详情
stm32f4hal库cubemx(十五)--------dac实验(代码片段)
文章目录前言一、DAC是什么?二、DAC实验1.实验所需配置功能2.功能配置3.时钟配置4.生成代码前言STM32F4的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为8位或12位模式,也可以与DMA控制器... 查看详情
stm32g070rbt6基于stm32cubemx配置定时器pwm功能案例(代码片段)
STM32G070RBT6基于STM32CubeMX配置定时器PWM功能案例📺STM32CubeMX配置过程演示🛠根据定时时间的计算公式设置PWM频率📝定时时间为1ms,可设置Prescaler=64-1;Counter=1000-1;(TIM1时钟频率设置为64MHzÿ 查看详情
STM32 TIM DAC 和 DMA
...:我想通过使用DMA功能来卸载我的STM32G491的CPU。我想使用定时器2(TIM2)生成需要DMA传输的四个时刻。这样做时,我可以在一个周期内创建两个脉冲。使用定时器输出比较功能可以调整周期、占空比和延迟。intamplitude=0xFFF;uint16_tcurre... 查看详情
stm32f103vet6基于stm32cubemx创建定时器中断控制led闪烁(代码片段)
STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁🌼STM32CubeMX配置界面演示⚡需求是通过定时器1来控制LED灯1s亮灭。📌工程分为两部分组成:STM32CubeMX创建并配置工程和业务代码完善🍁STM32CubeMX创建并配置工程1.... 查看详情
stm32cubemx工程定时器配置
STM32CubeMX生成工程选择自己的芯片型号 配置RCC寄存器时钟为外部晶振单击芯片配置GPIO,选择输出方式,重命名标签等进入时钟配置,本人使用的为8M外部晶... 查看详情
小蜜蜂老师主讲基于stm32cubemx的嵌入式开发基础教程
...础教案资源链接,视频教程链接。【第05单元】:STM32的定时器开发基础教案资源链接,视频教程链接。【第06单元】:STM32的串口数据收发基础教案资源链接,视频教程链接。【第07单元】:STM32的定时器与串口综合训练教案资源... 查看详情
stm32cubemx开发05——定时器(代码片段)
这里面定时器的原理我就不多说了,在我以前的文章中间接的很清楚TIM定时器详解。本章主要讲解在CubeMx中如何配置定时器,如下图:一、main函数main.c/*USERCODEBEGINHeader*//*****************************************************************************... 查看详情
使用stm32cubemx生成stm32工程(代码片段)
...S的话,sys这里就不可以选取SysTick,要更换成其他定时器,这里我选用了TIM1,如果不跑操作系统那么也可以直接选择SysTick。在GPIO中选择自己使用的引脚 查看详情
stm32cubemx定时器中断(代码片段)
stm32cubemx定时器中断一、基础知识stm32f4:二、软件配置定时器时钟源:APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。所支持速度不同:APB2支持高速状态... 查看详情
stm32cubemx定时器中断(代码片段)
stm32cubemx定时器中断一、基础知识stm32f4:二、软件配置定时器时钟源:APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。所支持速度不同:APB2支持高速状态... 查看详情
stm32cubemx使用之通用定时器和系统定时器(代码片段)
目录一、概述二、Pinout&Configuration三、测试定时器四、系统定时器五、问题记录5.1定时器周期是设定的2倍一、概述本文记录下定时器的使用过程,主要是后续使用,能有个参考。遇到的定时器相关问题,也陆续记... 查看详情
stm32cubemx笔记--定时器生成pwm特定波形,控制舵机转动(代码片段)
定时器生成PWM特定波形,控制舵机转动1、舵机相关知识1.1相关舵机的知识点:1.2舵机的控制:2、STM32CubeMX引脚设置和代码生成2.1相关STM32CubeMX生成代码配置如下:3、编写相关的C函数文件3.1、相关PWM函数开启:... 查看详情
stm32h7教程第60章stm32h7的dac应用之定时器触发实现dma方式双通道波形(代码片段)
...tid=86980第60章 STM32H7的DAC应用之定时器触发实现DMA方式双通道波形本章节为大家讲解DAC采用定时器触发方式实现DMA双通道波形输出,实际输出效果也比较好,项目使用价值也比较大。60.1初学 查看详情
stm32cubemx(03)gpio口输出+定时器实验实现交通灯(代码片段)
文章目录前言一、GPIO口输出+定时器实验1、目的2、内容二、思路1.STM32CubeMX把IO口使能2.对相应引脚进行写操作3.使能溢出中断三、Keil编程3.1添加回调函数3.2编写用户函数3.3主函数调用总结前言前面我们学习了定时器,并且... 查看详情
stm32g070rbt6基于stm32cubemx创建定时器中断控制led闪烁(代码片段)
STM32G070RBT6基于STM32CubeMX创建定时器中断控制LED闪烁📍相关篇《【硬件开源电路】STM32G070RBT6开发板》🌺配置内容演示:📚功能介绍📑通过STM32CubeMX配置定时器1和定时器3分别作为两个led的定时闹钟。这里作为... 查看详情
stm32f103vet6基于stm32cubemx利用exti外部中断测量pwm频率(代码片段)
...断测量PWM频率📌相关篇《STM32G070RBT6基于STM32CubeMX配置定时器PWM功能案例》📍《STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程》🌼本篇利用上面两篇示例综合,利用STM32F103VET6引脚PB1测量STM32 查看详情