stm32f407数模转换三角波的问题

2019-07-20 14:39发布

为什么我的PA4口出不来三角波呀 求大神解答  急求呀  用T2定时器触发三角波产生,代码如下;
void DAC1_Init(void)
{  
        GPIO_InitTypeDef  GPIO_InitStructure;
        DAC_InitTypeDef DAC_InitType;
        DAC_DeInit();

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);    //使能GPIOA时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);      //使能DAC时钟
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);   
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                //PA4
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;             //模拟功能
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;           //下拉
        GPIO_Init(GPIOA, &GPIO_InitStructure);                   //初始化

        DAC_InitType.DAC_Trigger=DAC_Trigger_T2_TRGO;                              
        DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_Triangle;          //
        DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;//
        DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;              //DAC1输出缓存关闭 BOFF1=1
        DAC_Init(DAC_Channel_1,&DAC_InitType);                                  //初始化DAC通道1

        DAC_Cmd(DAC_Channel_1, ENABLE);           //使能DAC通道1
        DAC_SetChannel1Data(DAC_Align_12b_R, 0);         //12位右对齐数据格式设置DAC值
        DAC_WaveGenerationCmd(DAC_Channel_1,DAC_Wave_Triangle,ENABLE);  //是能三角波发生

}
void TIM2_Int_Init(u16 arr,u16 psc)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);  ///使能TIM2时钟

  TIM_TimeBaseInitStructure.TIM_Period = arr;   //自动重装载值
    TIM_TimeBaseInitStructure.TIM_Prescaler=psc;  //定时器分频
    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//初始化TIM2
    TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);
    TIM_Cmd(TIM2,ENABLE); //使能定时器2

}

int main(void)
{        

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init();                    //延时初始化
        Usart1_init(115200);        //串口初始化波特率为115200
        DAC1_Init();         //初始化DAC
        TIM2_Int_Init(5000-1,8400-1);
        DAC1_Init();         //初始化DAC
        while(1)
        {}


}





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
xuande
1楼-- · 2019-07-20 17:01
 精彩回答 2  元偷偷看……
jizhendong1994
2楼-- · 2019-07-20 17:24
求不沉
xuande
3楼-- · 2019-07-20 19:36

定时器和DA是怎么关联的?
双方一定得互动起来。

jizhendong1994
4楼-- · 2019-07-20 23:22
 精彩回答 2  元偷偷看……
xuande
5楼-- · 2019-07-21 02:05
jizhendong1994 发表于 2017-1-12 20:55
谢谢 三角波已生成,请问你知道如何才能生成任意波形吗??比如说一个幅度不同的方波。


和生成三角波差不多。

这个方法有很多。


jizhendong1994
6楼-- · 2019-07-21 03:24
 精彩回答 2  元偷偷看……

一周热门 更多>