上两章介绍了STM32的ADC的使用,本章介绍STM32的DAC功能。本章利用按键(或者USMART)控制STM32内部DAC模块的通道1来输出模拟电压,通过ADC1的通道1采集DAC的输出电压,在LCD模块上面显示ADC获取到的电压值以及DAC的设定输出电压值等信息。
DAC本身是输出,但是为什么端口要设置为模拟输入模式呢?
因为一旦使能DACx通道之后,相应的GPIO引脚(PA4或者PA5)会自动与DAC的模拟输出相连,设置为输入,是为了避免额外的干扰。










硬件设计

main函数
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "dac.h"
#include "adc.h"
#include "usmart.h"
int main(void)
{
u16 adcx;
float temp;
u8 t=0;
u16 dacval=0;
u8 key;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
KEY_Init(); //初始化按键程序
LED_Init(); //LED端口初始化
LCD_Init(); //LCD初始化
usmart_dev.init(72); //初始化USMART
Adc_Init(); //ADC初始化
Dac1_Init(); //DAC初始化
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,50,200,16,16,"WarShip STM32");
LCD_ShowString(60,70,200,16,16,"DAC TEST");

本文档详细介绍了在STM32F1上使用DAC进行模拟电压输出,并通过ADC采集输出电压的过程。内容涵盖硬件设计、主函数、DAC及ADC的配置函数。通过按键或USMART控制,实现0.161V步进的电压调节,同时支持任意电平的输出控制。
最低0.47元/天 解锁文章
898

被折叠的 条评论
为什么被折叠?



