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

STM32CUBEMX移植雅特力AT32F403AVGT7[兼容STM32F103VGT6]----双串口通过DMA方式接收不定长数据

概述

本篇文章主要介绍如何使用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。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1r54y167N3

最后

关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!
在这里插入图片描述

posted @ 2022-05-28 22:04  记帖  阅读(285)  评论(0编辑  收藏  举报