stm32_DAC可以用来输出固定的电压值,有些时候需要按键可调输出的电压值。其中一种方法是使用外部中断EXTI9, 另外一种方法就是使用软件触发。
如果将DAC_InitTypeDef.DAC_Trigger设置为DAC_Trigger_None, 那么,不需要其他任何的触发源,直接使用DAC_SetChannelxData(),就可以设定输出电压的大小。如果使用了软件触发,那么,每次在使用DAC_SetChannelxData()修改输出电压后,还需要调用DAC_SoftwareTriggerCmd(),目的是使能软件触发。由于:软件触发是硬件在一个APB1时钟周期后自动关断的,于是,每次修改输出电压的值后,都要调用DAC_SoftwareTriggerCmd()方法,才能生效。
下面是例子:(关键代码)
DAC_Config(){
DAC_Trigger = DAV_Trigger_Software;
DAC_SetChannel1Data(DAC_Align_12b_R,1023);
}
main(){
DAC_SetChannel1Data(DAC_Align_12b_R,2047);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,4095);
}
关键字:STM32 DAC 软件触发
引用地址:
STM32_DAC之软件触发
推荐阅读最新更新时间:2024-11-06 20:43
STM32掉电检测+Flash存取
STM32有PVD的掉电检测功能,flash也可以直接存取;就动了用flash掉电保存参数的念头。 1、搞定Flash擦、写函数。 void F_ErasePage(u32 Page_Address) { U32 tmp; while((FLASH- SR&FLASH_FLAG_BSY)==FLASH_FLAG_BSY) { //PutCnstStr2Usart1( waiting\n ); } FLASH- SR |= FLASH_FLAG_PGERR; FLASH- CR |= CR_PER_Set; FLASH- AR=Page_Address; FLASH- CR |= CR_STRT_Set; wh
[单片机]
STM32编码器模式详解(一)---理论
一、编码器接口模式 选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则置SMS=011。 通过设置TIMx_CCER寄存器中的CC1P和CC2P位,可以选择TI1和TI2极性;如果需要,还可以对输入滤波器编程。 两个输入TI1和TI2被用来作为增量编码器的接口。参看表77,假定计数器已经启动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有效跳变驱动。TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波
[单片机]
STM32 GPIO管脚模式的设置及使用方法
一、 在STM32中选用IO模式 1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 2、带上拉输入GPIO_IPU——IO内部上拉电阻输入 3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入 4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电 5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。 当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。 可以读IO输入电平变化,实现C51的IO双向功
[单片机]
STM32启动模式及API
简介:我们玩ARM9,一般都是在内存里调试程序,速度飞快。STM32下也可以这样,虽说现在的flash寿命已经很长了,但flash中调试烧录程序还是一个很慢的过程,有时候程序上一个小小的改动要花上几倍的时间下载代码,这确实是不能忍受的。 我们也可以在开发STM32时,在内存中调试程序。 {STM32这颗Cortex-M3控制器,与其他许多ARM一样,提供了BOOT0和BOOT1两个管脚用于启动选择。 BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。(用于串口ISP) BOOT1=1 BOOT0=1 从内置SRAM启
[单片机]
该怎么减少高精度DAC中的加电/断电毛刺脉冲
该篇将分析对象限定为一个DAC,其中的输出缓冲器在正常模式下被加电:零量程或中量程。文章将分析一下DAC输出在高阻抗模式中被加电的情况。同时提出一个针对加电毛刺脉冲的数学模型,随后给出一个尽可能减少此毛刺脉冲的电路板级解决方案。 原理 图1:DAC8760高精度DAC输出级 这个分析与没有加电毛刺脉冲减少 (POGR) 电路的DAC有关。第一部分列出了影响加电毛刺脉冲的因素。当DAC在电源斜升期间加电至高阻抗模式时,这个加电毛刺脉冲也可被视为一个在DAC的电压输出 ( ) 引脚上逐步累积形成的瞬态电荷。这个电荷积聚是由电源引脚,通过芯片内部和外部的寄生电容,到 引脚的电容耦合造成的。需要注意的是,与加电毛刺脉
[模拟电子]
Keil MDK STM32系列(十) Ubuntu下的PlatformIO开发环境
这篇和Keil MDK没什么关系, 但是HAL库和开发方式是一样的, 也放在这个系列下吧 PlatformIO PlatformIO是VSCode的一个扩展, 主要面向的是嵌入式的开发, 因为VSCode的跨平台属性, PlatformIO也是跨平台的. 这里主要介绍在Ubuntu20.04下的PlatformIO环境. 安装, 略 PlatformIO下的STM32烧录工具 对于STM32, PlatformIO支持的烧录工具有 blackmagic, cmsis-dap, dfu, jlink, serial, stlink, 直接选stlink就可以了. PlatformIO下的STM32封装库 在Platf
[单片机]
智林STM32程序源代码的分析和整理04
一、定时器的配置 1、概述 STM32的定时器功能比较多、配置也较复杂,我现在了解不多,边用边学吧。智林开发板上有两个用定时器的地方,一个是液晶的背光电源,要求输出一定的PWM波形,用于整流提供电源;二是用于控制喇叭,也是时钟脉冲输出。 定时器首先的选择是计数、还是定时,我这里用的都是定时,输出模式可以是输入时定时器的捕获,可以是比较匹配时设定输出(经常用到这一种)。 2、源程序 void TIMx_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //时基单元配置数据结构 TIM_OCInitTypeDef TIM_OCInitStr
[单片机]
stm32软复位 内核复位和系统复位
STM32系统和内核复位 内核复位:它会使STM32内核(Cortex-M)进行复位,而不会影响其外设,如GPIO、TIM、USART、SPI等这些寄存器的复位。 系统复位:这个复位会使整个芯片的所有电路都进行复位,系统默认的函数接口NVIC_SystemReset就是系统复位(位于core_cm*.h)。 1.NVIC_CoreReset内核复位 CM3 允许由软件触发复位序列,用于特殊的调试或维护目的。在CM3中,有两种方法可以执行自我复位。第一种方法,是通过置位 NVIC 中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET 位(位偏移:0)。 这种复位的作用范围覆盖了整个CM3处理器中,除了调试逻辑之外的所
[单片机]