单片机
返回首页

STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压

2023-08-23 来源:elecfans

概述

本篇文章主要介绍如何使用STM32CubeMX移植到雅特力AT32F403AVGT7,并通过DAC输出电压,在芯片中有2个12位的DAC口可以供选择。

在这里插入图片描述

硬件准备

首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板:

在这里插入图片描述

选择芯片型号

雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。

在这里插入图片描述

配置时钟源

HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:

在这里插入图片描述

配置时钟树

雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可:

在这里插入图片描述

DAC配置

然后设置PA4为DAC_OUT1, 完整引脚配置如下图。

在这里插入图片描述

生成工程设置

注意在生产工程设置中不能出现中文,不然会报错。

在这里插入图片描述

代码生成设置

最后设置生成独立的初始化文件。

在这里插入图片描述

生成代码

在这里插入图片描述

代码编写

在main.c中,添加DAC电压变量定义。


/* USER CODE BEGIN PTD */

int dac_i=0;//定义DAC电压值

/* USER CODE END PTD */

在main.c中,开启DAC通道1。


/* USER CODE BEGIN 2 */

    HAL_DAC_Start(&hdac, DAC_CHANNEL_1);//开启DAC通道1

  /* USER CODE END 2 */

在main.c中,主程序输出电压值,因为是12位的dac,所以值只能是0-4095.


复制

/* USER CODE BEGIN WHILE */

  while (1)

  {

    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */

        if(dac_i<4096)

        {

            dac_i++;

            if(dac_i%512==0)//使得输出波形为阶梯状

                HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_i);//设置DAC值为dac_i

        }

        else

            dac_i=0;

  }

  /* USER CODE END 3 */

结果演示

因为是输出为阶梯状,每变量每增加512,电压改变一次,故应该有8个阶梯,分别是0,512,1024,1536,2048,2560,3072,3584。

在这里插入图片描述


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 单稳态控制电路设计与分析

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路

  • 基于CA3193的热电偶放大器电路

    相关电子头条文章