OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 130|回复: 0

下面程序DAC通道二怎么不能输出波形

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2025-5-3
在线时间
2 小时
发表于 7 天前 | 显示全部楼层 |阅读模式
#include "./BSP/DAC/dac.h"
extern uint16_t g_dac_sin_buf[4096];
DAC_HandleTypeDef g_dac_dma_handle;
DMA_HandleTypeDef g_dma1_dac_handle;

void dac1_dma_wave_init(void)
{
          DAC_ChannelConfTypeDef dac_ch_conf;
          __HAL_RCC_DMA1_CLK_ENABLE();
          g_dma1_dac_handle.Instance = DMA1_Stream6;                             
    g_dma1_dac_handle.Init.Channel = DMA_CHANNEL_7;                        
    g_dma1_dac_handle.Init.Direction = DMA_MEMORY_TO_PERIPH;               
    g_dma1_dac_handle.Init.PeriphInc = DMA_PINC_DISABLE;                  
    g_dma1_dac_handle.Init.MemInc = DMA_MINC_ENABLE;                        
    g_dma1_dac_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;  
    g_dma1_dac_handle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;      
    g_dma1_dac_handle.Init.Mode = DMA_CIRCULAR;           
    g_dma1_dac_handle.Init.Priority = DMA_PRIORITY_MEDIUM;                  
    g_dma1_dac_handle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;                  

          HAL_DMA_Init(&g_dma1_dac_handle);
          __HAL_LINKDMA(&g_dac_dma_handle, DMA_Handle1, g_dma1_dac_handle);      
    g_dac_dma_handle.Instance = DAC;
    HAL_DAC_Init(&g_dac_dma_handle);
         dac_ch_conf.DAC_Trigger=DAC_TRIGGER_T6_TRGO  ;
         dac_ch_conf.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE;
         HAL_DAC_ConfigChannel(&g_dac_dma_handle,&dac_ch_conf,DAC_CHANNEL_2);
         HAL_DMA_Start_IT(&g_dma1_dac_handle,(uint32_t)g_dac_sin_buf,(uint32_t)&DAC->DHR12RD,0);
}

void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
{
        if(hdac->Instance==DAC)
        {
                GPIO_InitTypeDef gpio_init_struct;
          __HAL_RCC_SPI1_CLK_DISABLE();
          __HAL_RCC_GPIOA_CLK_ENABLE();
                        __HAL_RCC_TIM2_CLK_DISABLE() ;
                __HAL_RCC_TIM6_CLK_ENABLE() ;
                __HAL_RCC_DAC_CLK_ENABLE();
          gpio_init_struct.Pin =GPIO_PIN_5;
          gpio_init_struct.Mode = GPIO_MODE_ANALOG;
                gpio_init_struct.Pull=GPIO_NOPULL;
          HAL_GPIO_Init(GPIOA, &gpio_init_struct);
        }
}
void dac1_dma_wave_enable( uint16_t ndtr1, uint16_t arr1, uint16_t psc1)
{
       
        TIM_MasterConfigTypeDef master_config={0};
        TIM_HandleTypeDef g_timx_chy_handle={0};
        __HAL_RCC_TIM6_CLK_ENABLE() ;
        g_timx_chy_handle.Instance = TIM6;
        g_timx_chy_handle.Init.Prescaler=psc1;
        g_timx_chy_handle.Init.Period=arr1;
        g_timx_chy_handle.Init.CounterMode=TIM_COUNTERMODE_UP;
        HAL_TIM_Base_Init(&g_timx_chy_handle);
        master_config.MasterOutputTrigger = TIM_TRGO_UPDATE;
  master_config.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&g_timx_chy_handle, &master_config);
        HAL_DAC_Stop_DMA(&g_dac_dma_handle,  DAC_CHANNEL_2 );
  HAL_DAC_Start_DMA(&g_dac_dma_handle,  DAC_CHANNEL_2,(uint32_t *)g_dac_sin_buf, ndtr1, DAC_ALIGN_12B_R );
               
        HAL_TIM_Base_Start_IT(&g_timx_chy_handle);
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 13:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表