DAC是模拟量输出,当给定改变时不会直接跳变(例如PWM不滤波就是方波跳变占空比)就产生了上图的上升下降曲线。
如果你的示波器没问题,那么就是程序中DAC的输出值存在被改变,可能在你没有注意到的地方被置0,或者其他操作错误的配置了DAC引脚,是的DAC_OUT的引脚在设定与0之间来回跳动。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, GPIO_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, DAC_InitStructure);
DAC_Init(DAC_Channel_2, DAC_InitStructure);
你是开了ADC/DAC的中断吗?另外查看下你的串口是不是中断发送与接收的,它的优先级什么的你设定了没。初步怀疑是你ADC/DAC时间过长,打乱了串口
内核判断:
Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,指令总线和数据总线共享同一个存储器空间。(来自百度百科)
stm32F1系列Cortex-M3基础型MCU:
stm32F103RCT6含义: Cortex-M3基础型MCU72MHz CPU,具有256KB FLASH、48KB SRAM、LQFP64封装形式,温度范围-40到85。
stm32F103系列:
硬件资源:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、2 个 DMA 控制器(共 12 个通道)、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个12 位 ADC、1 个 12 位 DAC、1 个 SDIO 接口及 51 个通用 IO 口。(51+5*2+3=64 51个IO口、5对电源、VBAT BOOT0 NRST)
内部结构:
LSE: low-speed external clock signal(32.768KHz 一般作为RTC时钟使用)
LSI: low-speed internal clock signal (40KHz)
HSI: high-speed internal clock signal(8MHz)
HSE: high-speed external clock signal (4-16MHz)
external外部时钟信号源为晶振(因为体积大未集成,但精度高)
internal内部时钟信号源RC电路(精度差,在芯片内部)
注意:HCLK最大72MHz PCLK1最大36MHz PCLK2最大72MHz
DAC输出缓存,可以用来减少输出阻抗,无需外部运放即可直接驱动外部负载。
本文标签:stm32f103R6有没有DAC功能