• 大小: 13.05MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-13
  • 语言: 其他
  • 标签: stm32  示波器  

资源简介

基于stm32开发的简易示波器,使用了stm32自带的adc采样所以速率只能到达几十K。但是对于刚学习示波器使用的孩子,很有借鉴意义。

资源截图

代码片段和文件信息

#include “adc.h“
#include “math.h“
#include “tim.h“
#include “stm32f10x_it.h“

#define ADC1_DR_Address    ((u32)0x4001244C)

u16 a[640];
u16 index = 0;
u16 index1 = 0;


void DMA1_Init(void)
{
DMA_InitTypeDef  DMA_InitTypeStruct;

DMA_DeInit(DMA1_Channel1); //ADC1的DMA通道

DMA_InitTypeStruct.DMA_PeripheralbaseAddr = ADC1_DR_Address;
DMA_InitTypeStruct.DMA_MemorybaseAddr = (u32)a;
DMA_InitTypeStruct.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitTypeStruct.DMA_BufferSize = 640;
DMA_InitTypeStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitTypeStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitTypeStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitTypeStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitTypeStruct.DMA_Mode = DMA_Mode_Normal;
DMA_InitTypeStruct.DMA_Priority = DMA_Priority_VeryHigh;
DMA_InitTypeStruct.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel1&DMA_InitTypeStruct); //DMA初始化,ADC结果寄存器存入SRAM中

DMA_Cmd(DMA1_Channel1ENABLE); //DMA使能
}

void AD_Init(void)
{
ADC_InitTypeDef  ADC_InitTypeStruct;

ADC_DeInit(ADC1);  //复位ADC1

ADC_InitTypeStruct.ADC_Mode = ADC_Mode_Independent;//ADC工作在独立模式
ADC_InitTypeStruct.ADC_ScanConvMode = DISABLE;    //单通道模式
ADC_InitTypeStruct.ADC_ContinuousConvMode = DISABLE; //单次模式
ADC_InitTypeStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;//选择定时器1来触发
ADC_InitTypeStruct.ADC_DataAlign = ADC_DataAlign_Right; //数据右对齐
ADC_InitTypeStruct.ADC_NbrOfChannel = 1;   //通道数目为1
ADC_Init(ADC1 &ADC_InitTypeStruct);   //ADC初始化

ADC_ExternalTrigConvCmd(ADC1ENABLE);   //ADC外部触发使能
ADC_RegularChannelConfig(ADC1 ADC_Channel_2 1 ADC_SampleTime_1Cycles5);//配置ADC1,通道1等
}

void ADC1_Init(void)  //adc初始化
{
DMA1_Init();
AD_Init();
ADC_DMACmd(ADC1 ENABLE);    //ADC DMA使能

ADC_Cmd(ADC1 ENABLE);  //ADC使能
ADC_ResetCalibration(ADC1);  //ADC校准复位
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);  //ADC开始校准
while(ADC_GetCalibrationStatus(ADC1));
}

void ADC_Get_Value(void)  //得到数据,
{

float gao_pin_period = 0;
DMA1_Init();                   
TIM_SetCounter(TIM10);    //清空寄存器
if(num_shao_miao>7)
{
TIM_PrescalerConfig(TIM171TIM_PSCReloadMode_Immediate);
TIM_SetCompare1(TIM1 (shao_miao_shu_du/25)-1);
TIM_SetAutoreload(TIM1 (shao_miao_shu_du/25)-1); //设定扫描速度
}
else
{
TIM_PrescalerConfig(TIM10TIM_PSCReloadMode_Immediate);

gao_pin_period = 288000000.0/frequency +gao_pin_palus-1;

TIM_SetCompare1(TIM1 gao_pin_period);
TIM_SetAutoreload(TIM1gao_pin_period);
}

TIM_Cmd(TIM1ENABLE);
while(!DMA_GetFlagStatus(DMA1_FLAG_TC1));
DMA_ClearFlag(DMA1_FLAG_TC1);
if(DMA_GetFlagStatus(DMA1_FLAG_TE1))
{
DMA_ClearFlag(DMA1_FLAG_TE1);
ADC_Get_Value();
}
TIM_Cmd(TIM1DISABLE);
}

u16 ADC_Get_Vpp(void)    
{
u32 max_data=a[0];
u32 min_data=a[0];
u32 n=0;
float pp=0;
for(n = 1;n<320;n++)
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-11-24 15:57  简易示波器\
     目录           0  2016-11-24 15:57  简易示波器\SYSTEM\
     目录           0  2016-11-24 15:57  简易示波器\SYSTEM\delay\
     文件        6020  2015-09-25 11:29  简易示波器\SYSTEM\delay\delay.c
     文件         209  2015-09-25 14:07  简易示波器\SYSTEM\delay\delay.h
     目录           0  2016-11-24 15:57  简易示波器\SYSTEM\sys\
     文件         166  2015-11-26 21:07  简易示波器\SYSTEM\sys\sys.c
     文件        2227  2015-11-26 21:06  简易示波器\SYSTEM\sys\sys.h
     目录           0  2016-11-24 15:57  简易示波器\SYSTEM\usart\
     文件        4151  2015-09-25 11:29  简易示波器\SYSTEM\usart\usart.c
     文件         431  2015-09-25 14:07  简易示波器\SYSTEM\usart\usart.h
     目录           0  2016-11-24 15:56  简易示波器\app\
     目录           0  2016-11-24 15:56  简易示波器\app\AT24Cxx\
     文件        3580  2015-11-26 14:49  简易示波器\app\AT24Cxx\AT24CXX.c
     文件         695  2015-11-26 14:49  简易示波器\app\AT24Cxx\AT24CXX.h
     目录           0  2016-11-24 15:56  简易示波器\app\DHT11\
     文件        2685  2015-11-12 12:14  简易示波器\app\DHT11\dht11.c
     文件         447  2015-11-12 12:01  简易示波器\app\DHT11\dht11.h
     目录           0  2016-11-24 15:56  简易示波器\app\DS18B20\
     文件        4925  2015-11-12 10:16  简易示波器\app\DS18B20\ds18b20.c
     文件         526  2015-11-12 10:16  简易示波器\app\DS18B20\ds18b20.h
     目录           0  2016-11-24 15:56  简易示波器\app\IIC(24C02)\
     文件        2466  2014-12-16 17:16  简易示波器\app\IIC(24C02)\iic.c
     文件         675  2015-11-05 16:13  简易示波器\app\IIC(24C02)\iic.h
     目录           0  2016-11-24 15:56  简易示波器\app\Tetris\
     文件       22983  2015-11-26 19:41  简易示波器\app\Tetris\Tetris.c
     文件        1108  2015-11-26 16:21  简易示波器\app\Tetris\Tetris.h
     文件        4321  2015-11-26 09:23  简易示波器\app\Tetris\model.h
     目录           0  2016-11-24 15:56  简易示波器\app\W25QXX\
     文件        8907  2015-11-07 09:25  简易示波器\app\W25QXX\w25qxx.c
     文件        1755  2015-11-06 12:37  简易示波器\app\W25QXX\w25qxx.h
............此处省略411个文件信息

评论

共有 条评论