• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签:

资源简介

使用stm32f103可输出频率(在100HZ-10KHZ)可调的锯齿波形

资源截图

代码片段和文件信息

#include “sawtoothwave.h“
#include “delay.h“

#define DAC_DHR12R1 (DAC_base+0x08) //外设DAC通道1的基地址

#define DAC_DHR12R2 (DAC_base+0x14) //外设DAC通道2的基地址

#define N1 256

#define N2 512

/********生成锯齿波形输出表***********/
void SawTooth_Data( u16 cycle u16 *D)
{
u16 i;
for( i=0;i {
D[i]= (u16)(1.0*i/255*4095);
}
}


/********生成三角波形输出表***********/
void Triangle_Data( u16 cycle u16 *D)
{
u16 i;
for( i=0;i {
D[i]= (u16)(1.0*i/128*2047);
}
for( i=cycle/2;i {
D[i]= 2047 - (u16)(1.0*i/128*2047);

}

}

/******************三角波形表***********************/
#ifdef  Triangle_WaveOutput_Enable
     u16 TriangleWave_Value[256];  //已用函数代替
#endif



/******************锯齿波形表***********************/
#ifdef  SawTooth_WaveOutput_Enable
     u16 SawToothWave_Value[256];  //已用函数代替
#endif


/****************引脚初始化******************/
void SawtoothWave_GPIO_Config( FunctionalState NewState1 FunctionalState NewState2)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE);  //开时钟
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速率
  if( NewState1!=DISABLE)
{
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 ; //选择引脚
GPIO_SetBits(GPIOAGPIO_Pin_4) ; //拉高输出
}
if( NewState2!=DISABLE)
{
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5 ; //选择引脚
GPIO_SetBits(GPIOAGPIO_Pin_5) ; //拉高输出
}
GPIO_Init(GPIOA &GPIO_InitStructure); //初始化
}

/******************DAC初始化*************************/
void SawtoothWave_DAC_Config( FunctionalState NewState1 FunctionalState NewState2)
{
DAC_InitTypeDef            DAC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC ENABLE);//开DAC时钟

  /**************DAC结构初始化,很重要,否则无波形*******************/
DAC_StructInit(&DAC_InitStructure);
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;//不产生波形
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; //不使能输出缓存
if( NewState1!=DISABLE)
{
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;//选择DAC触发源为TIM2
  DAC_Init(DAC_Channel_1 &DAC_InitStructure);//初始化
  DAC_Cmd(DAC_Channel_1 ENABLE);    //使能DAC通道1
  DAC_DMACmd(DAC_Channel_1 ENABLE); //使能DAC通道1的DMA
}
if( NewState2!=DISABLE)
{
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;//选择DAC触发源为TIM6
DAC_Init(DAC_Channel_2 &DAC_InitStructure);//初始化
DAC_Cmd(DAC_Channel_2 ENABLE);    //使能DAC通道2
DAC_DMACmd(DAC_Channel_2 ENABLE); //使能DAC通道2的DMA
}
}
 
/*********定时器配置************/
void SawtoothWave_TIM_Config( u32 Wave1_Fre  )
{
TIM_TimebaseInitTypeDef    TIM_TimebaseStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM6 ENABLE);//开时钟

TIM_TimebaseStructInit(&TIM_TimebaseStructure);
TIM_TimebaseStructure.TIM_Period = Wave1_Fre; //正弦波1频率设置
  TIM_TimebaseStructure.TIM_Prescaler = 0x0;     //不预分频
TIM_TimebaseStructure.TIM_Clo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6738  2018-05-16 08:29  SAWTOOTHWAVE\sawtoothwave.c

     文件        589  2018-05-15 22:39  SAWTOOTHWAVE\sawtoothwave.h

     目录          0  2018-05-16 08:50  SAWTOOTHWAVE

----------- ---------  ---------- -----  ----

                 7327                    3


评论

共有 条评论

相关资源