2021-11-24 00:33:04 索炜达电子 927
项目编号:E2434
文件大小:573K
源码说明:带中文注释
开发环境:C编译器
简要概述
内容:在显示屏上通过按键产生正弦波、三角波、矩形波、锯齿波,并且能通过按键来暂停波形,显示静态波形,并且显示波形电压的峰峰值。
一、波形图显示
生成正弦波、三角波、矩形波、锯齿波数据
将这些数据显示到 TFT 2.4 寸液晶屏上
思路:用数组 1,2,3,4 分别保存正弦波、三角波、矩形波、锯齿波数据,写按键函数分别打印不同的数组内容,然后再将数组内容打印到 TFT 液晶屏上。
二、峰峰值显示
从数组中采集最大和最小值,然后做差求得峰峰值,显示到 TFT 液晶屏上。
优化:使用 DMA 来减轻 CPU 的负担,提高数据传输速度。
STM32 使用 DMA+DAC+TIMER 输出正弦波
那么对于使用 DMA+DAC+TIMER 产生正弦波的原理或过程,我有这样一个简单的理解:先将一个可以生成正弦波的数据表保存在静态内存中,然后在 DAC 以及这块内存中间使用 DMA 建立一个通道,经过以上步骤之后,DAC 模块就可以通过 DMA 通道拿取静态内存中可以生成正弦波的数据,拿取数据,然后经过数模准换,在引脚进行输出就可以得到正弦波了。那么当然,这个速度是非常快的,如果没有一定的延时,那么得到的估计就是一个变化很快的模拟量。所以这个时候就需要使用定时器 TIMER 了。DAC 在初始化的时候,可以设置成使用定时器触发,这就意味着,当定时器溢满的时候,就会触发 DAC 工作。这样一来,就可以通过改变定时器的定时时间来改变正弦波的周期了。电压大小的显示用 DAC 来处理。(PA4 和 PA5 短接,DAC 与 ADC 结合。)
目录│文件列表:
└ stm32f407-oscilloscope
├ CORE
│ │ core_cm4.h
│ │ core_cm4_simd.h
│ │ core_cmFunc.h
│ │ core_cmInstr.h
│ └ startup_stm32f40_41xxx.s
├ FWLIB
│ ├ inc
│ │ │ misc.h
│ │ │ stm32f4xx_adc.h
│ │ │ stm32f4xx_can.h
│ │ │ stm32f4xx_crc.h
│ │ │ stm32f4xx_cryp.h
│ │ │ stm32f4xx_dac.h
│ │ │ stm32f4xx_dbgmcu.h
│ │ │ stm32f4xx_dcmi.h
│ │ │ stm32f4xx_dma.h
│ │ │ stm32f4xx_dma2d.h
│ │ │ stm32f4xx_exti.h
│ │ │ stm32f4xx_flash.h
│ │ │ stm32f4xx_flash_ramfunc.h
│ │ │ stm32f4xx_fmc.h
│ │ │ stm32f4xx_fsmc.h
│ │ │ stm32f4xx_gpio.h
│ │ │ stm32f4xx_hash.h
│ │ │ stm32f4xx_i2c.h
│ │ │ stm32f4xx_iwdg.h
│ │ │ stm32f4xx_ltdc.h
│ │ │ stm32f4xx_pwr.h
│ │ │ stm32f4xx_rcc.h
│ │ │ stm32f4xx_rng.h
│ │ │ stm32f4xx_rtc.h
│ │ │ stm32f4xx_sai.h
│ │ │ stm32f4xx_sdio.h
│ │ │ stm32f4xx_spi.h
│ │ │ stm32f4xx_syscfg.h
│ │ │ stm32f4xx_tim.h
│ │ │ stm32f4xx_usart.h
│ │ └ stm32f4xx_wwdg.h
│ └ src
│ │ misc.c
│ │ stm32f4xx_adc.c
│ │ stm32f4xx_can.c
│ │ stm32f4xx_crc.c
│ │ stm32f4xx_cryp.c
│ │ stm32f4xx_cryp_aes.c
│ │ stm32f4xx_cryp_des.c
│ │ stm32f4xx_cryp_tdes.c
│ │ stm32f4xx_dac.c
│ │ stm32f4xx_dbgmcu.c
│ │ stm32f4xx_dcmi.c
│ │ stm32f4xx_dma.c
│ │ stm32f4xx_dma2d.c
│ │ stm32f4xx_exti.c
│ │ stm32f4xx_flash.c
│ │ stm32f4xx_flash_ramfunc.c
│ │ stm32f4xx_fmc.c
│ │ stm32f4xx_fsmc.c
│ │ stm32f4xx_gpio.c
│ │ stm32f4xx_hash.c
│ │ stm32f4xx_hash_md5.c
│ │ stm32f4xx_hash_sha1.c
│ │ stm32f4xx_i2c.c
│ │ stm32f4xx_iwdg.c
│ │ stm32f4xx_ltdc.c
│ │ stm32f4xx_pwr.c
│ │ stm32f4xx_rcc.c
│ │ stm32f4xx_rng.c
│ │ stm32f4xx_rtc.c
│ │ stm32f4xx_sai.c
│ │ stm32f4xx_sdio.c
│ │ stm32f4xx_spi.c
│ │ stm32f4xx_syscfg.c
│ │ stm32f4xx_tim.c
│ │ stm32f4xx_usart.c
│ └ stm32f4xx_wwdg.c
├ HARDWARE
│ ├ ADC
│ │ │ adc.c
│ │ └ adc.h
│ ├ BEEP
│ │ │ beep.c
│ │ └ beep.h
│ ├ DAC
│ │ │ dac.c
│ │ └ dac.h
│ ├ KEY
│ │ │ key.c
│ │ └ key.h
│ ├ LCD
│ │ │ FONT.H
│ │ │ lcd.c
│ │ └ lcd.h
│ ├ LED
│ │ │ led.c
│ │ └ led.h
│ ├ TIMER
│ │ │ timer.c
│ │ └ timer.h
│ └ TOUCH
│ │ rtouch.c
│ └ rtouch.h
├ OBJ
│ └ LCD.hex
├ SYSTEM
│ ├ delay
│ │ │ delay.c
│ │ └ delay.h
│ ├ sys
│ │ │ sys.c
│ │ └ sys.h
│ └ usart
│ │ usart.c
│ └ usart.h
└ USER
│ JLinkSettings.ini
│ LCD.uvoptx
│ LCD.uvprojx
│ main.c
│ stm32f4xx.h
│ stm32f4xx_conf.h
│ stm32f4xx_it.c
│ stm32f4xx_it.h
│ system_stm32f4xx.c
│ system_stm32f4xx.h
│ waveform.c
└ waveform.h