Set_Sine12bit(dac_max,dac_min);//更改峰值Set_Period( hz);//更改频率USART_RX_STA=0; } } 3.进入串口试验 1)设置频率=50hz,正峰值=3.3V,负峰值=0V,串口则发送50,3.3,0.0,如下图所示: 示波器测量: 2)设置频率=100hz,正峰值=3V,负峰值=0V, 串口则发送100,3,0.0: 3)设置频率=100hz,正峰值...
资料介绍 @STM32f103产生50Hz—20kHz正弦波频率幅值可调正弦波很多时候我们需要生成一些特定频率和幅值的正弦波波形,近期个人研究这部分的原理和代码,将成果做一下分享,如有不对之处,欢迎大佬补刀试验工具stm32f103zet6的开发板;使用DMA、DAC、TIM定时器生成正弦波;普源示波器一台;万用表一台;##原理通过定时器每隔一段时...
TIM_TimeBaseStructure.TIM_Period =HZ(Hz); //正弦波频率设置 TIM_TimeBaseStructure.TIM_Prescaler =0x0; //没有预分频 TIM_TimeBaseStructure.TIM_ClockDivision =0x0; //时钟不分频 72M TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; //增计数 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStruc...
当需要改变频率HZ时,只需要修改定时器频率即可(最高只能达到20KHz) 当需要改变正玄波的正峰峰值/负峰峰值时,只需要修改正玄波码表即可 2.实现 代码如下所示(采用的是定时器2,DAC引脚是PA4) 代码语言:javascript 复制 #defineHZ(x)(u16)(72000000/sizeof(Sine12bit)*2/x)//计算Hz#defineDAC_DHR12R10x4000...
当需要改变频率HZ时,只需要修改定时器频率即可(最高只能达到20KHz) 当需要改变正玄波的正峰峰值/负峰峰值时,只需要修改正玄波码表即可 2.实现 代码如下所示(采用的是定时器2,DAC引脚是PA4) #defineHZ(x) (u16)(72000000/sizeof(Sine12bit)*2/x)//计算Hz#defineDAC_DHR12R1 0x40007408//外设DAC通道1的...
float MID=(MAX+MIN)/2.0; //中间峰值 if(MAX>3.3) MAX=3.3; else if(MAX<=MIN) MIN=0; for(i=0;i<256;i++) { jiaodu=i*0.0247369; //当i=127时,表示为180度,由于sin()是弧度制,所以需要转换 Sine12bit[i]=((float)sin(jiaodu)*(MAX-MID)+MID)*1241.212; //1241.212是比例,等于4096/...