打印
[STM32U3]

【每周分享】【STM32U385RG 测评】+DAC输出三角波

[复制链接]
183|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 LiuDW091 于 2025-7-22 15:56 编辑

#申请原创# #有奖活动# #申请开发板#[url=home.php?mod=space&uid=760190]@21小跑堂 [/url]
今天做个小实验,使用DAC输出三角波,示波器测量同时串口打印DAC数据
一、首先通原理图、数据手册,找到自己需要的DAC端口,以及连接到的外部管脚
我这边选了DAC1通道OUT1,即DAC1_OUT1,对应的通道PA4

二、IDE软件开始配置video/BV14cgpz7E
debug配置、RCC配置,正常配置就好,就不在累赘了
DAC1配置如下:



TIM2设置


INVC设置:


USART1配置:


三、代码调试
1、usart.c里面添加代码

#ifdef __GNUC__
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
  HAL_UART_Transmit(&huart3,(uint8_t *)&ch,1,0xFFFF);//阻塞方式打印
  return ch;
}



2、main.测里面添加代码
#include <stdio.h>



#ifndef HSEM_ID_0
#define HSEM_ID_0 (0U) /* HW semaphore 0*/
#endif


主函数里面添加


   HAL_TIM_Base_Start_IT(&htim6);   //Start TIM3 and trigger DAC1 to periodically output DAC value.

   HAL_DACEx_TriangleWaveGenerate(&hdac1, DAC_CHANNEL_1, DAC_TRIANGLEAMPLITUDE_4095);
   HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);//start DAC1
   HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, DCValue);  // set to output DAC value


while循环里面添加
    DCValue = HAL_DAC_GetValue(&hdac1, DAC_CHANNEL_1);
    printf("DAC1 value:%ld\r\n",DCValue);






3、tim.c函数
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 95;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 9;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;




四、运行效果
视频:
五、代码
代码三角波.rar (22.69 KB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

135

帖子

0

粉丝