使用stm32产生三角波和正弦波
与生成三角波相关的寄存器如下 MAMP1[3:0] 是用来设置通道1三角波的幅值的,如果设置为4096,那么产生的三角波就是0-3.3伏的,如果改为2047,那么产生的就是0-1.65伏的三角波,我一开始以为这个寄存器更改的只是三角波产生的精度,后来使用示波器测量后发现并不是这样。 WAVE1[1:0] 是用来设置通道1产生的波形的,可以设置为噪声波、三角波以及不生成。 TSEL1[2:0] 是用来设置通道1触发器的选择,可以使用定时器TRGO时间触发,也可以使用外部中断以及软件触发的方式,但后俩者我并没有尝试。 TEN1 是通道1触发使能, *注意* 这个必须首先置1否则波形设置以及触发器设置都是无法进行的。 //DAC通道1输出初始化 void Dac1_Init(void) { RCC->APB1ENR|=1<<29; //使能DAC时钟 RCC->AHB1ENR|=1<<0; //使能PORTA时钟 GPIO_Set(GPIOA,PIN4,GPIO_MODE_AIN,0,0,GPIO_PUPD_PU);//PA4,模拟输入,下拉 DAC->CR|=1<<2; //使能触发功能 TEN1=1 DAC->CR|=1<<1; //DAC1输出缓存不使能 BOFF1=1 DAC->CR|=4<<3; //DAC TIM2 TRGO,不过要TEN1=1才行 DAC->CR|=2<<6