stm32的DAC输出三角波

您所在的位置:网站首页 stm32产生频率可调方波 stm32的DAC输出三角波

stm32的DAC输出三角波

2023-09-16 08:40| 来源: 网络整理| 查看: 265

stm32的DAC可以配置直接输出三角波 配置代码: 定时器相关配置

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//使能DAC时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//模拟输入 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化 DAC_InitType.DAC_Trigger=DAC_Trigger_T4_TRGO; //TIM4触发,TEX1 = 1 DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_Triangle;//生成三角波 DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;//幅值为3.3 DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1 DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1 DAC_SetChannel1Data(DAC_Align_12b_R, 4095); //12位右对齐数据格式设置DAC值 DAC_DMACmd(DAC_Channel_1, DISABLE);//DAC不使能 DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC通道1

定时器相关配置

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM14时钟使能 TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器4 TIM_SelectOutputTrigger(TIM4, TIM_TRGOSource_Update); TIM_Cmd(TIM4, ENABLE);

注: 1,这里写图片描述 TENx必须置1,所以DAC触发方式必须选择外部触发。DAC_InitType.DAC_Trigger=DAC_Trigger_T4_TRGO; 这里原则定时器4触发 2, TIM_SelectOutputTrigger(TIM4, TIM_TRGOSource_Update); 定时器配置时需选择触发外设的方式,这里选择溢出触发 3, 三角波频率。这里写图片描述 设三角波幅值为3.3V,即4096,所以一个周期计数器计数4096*2=8192次,则三角波频率为“定时器频率/8192”



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3