乱劈材 发表于 2017-9-22 09:16:41

CUBEMx中STM32,DAC没有输出值,始终0.062V

CUBEMx中STM32,DAC没有输出值,始终0.062V,但是直接赋值2048有1.66输出
HAL库很是抓狂,代码如下:


while (1)
{
         uint32_t i=0;
         uint32_t Data=0;
               
                for(i=0;i<=5;i++)
                {
                        Data=i*500;

      HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Data );
                       
                HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
                         
      HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, Data );
                       
                HAL_DAC_Start(&hdac, DAC_CHANNEL_2);

      printf ("a=%f v\r\n",3.3*(Data/4095));
                       
                        HAL_Delay(1000);
                        HAL_Delay(1000);
                        HAL_Delay(1000);
                        HAL_Delay(1000);
                        HAL_Delay(1000);
                }
}




MrJiu 发表于 2017-9-22 09:24:39

静下心来,看看参考手册,或许可以帮你,看看hal内部的源码也是可以嘀!!!!

feiante 发表于 2017-9-22 09:41:55

参考一下例程吧,先把一个通道弄对了,然后在弄2个通道

乱劈材 发表于 2017-9-22 22:53:27

feiante 发表于 2017-9-22 09:41
参考一下例程吧,先把一个通道弄对了,然后在弄2个通道

现在知道了要用软件触发,HAL 中 DAC_TRIGGER_SOFTWARE 这个函数如何实现?

乱劈材 发表于 2017-9-22 23:50:59

feiante 发表于 2017-9-22 09:41
参考一下例程吧,先把一个通道弄对了,然后在弄2个通道

#define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */

头文件中,这句的uint32_t不能理解,应该怎样写

feiante 发表于 2017-9-23 17:10:49

软件触发不用写代码,直接在stm32cubeMX中配置就好了,它会自动生成初始化代码的

乱劈材 发表于 2017-9-26 19:36:40

这个程序不需要软件触发,sConfig.DAC_Trigger = DAC_TRIGGER_NONE;

只需要加一句__HAL_RCC_GPIOA_CLK_ENABLE();

页: [1]
查看完整版本: CUBEMx中STM32,DAC没有输出值,始终0.062V