求助下论坛里面的大神们!
最近在设计一个信号发生器。主控芯片stm32f405+AD5791,主要产生0.5-2k频率,0.05mV-2mV的正弦波信号。目前遇到的问题是我定时器技术频率设置为1Mhz,然而频率最高却只能设置为100Hz,再高一点就会出现异常,很是疑惑。DAC实现的方法是:一个周期使用1024查表数据,然后不断得在中断中刷新数据。贴上程序!!!
[mw_shl_code=applescript,true] TIM3_Handl.Instance=TIM3; //通用定时器3
HTIM.Prescaler=42-1; //分频系数
HTIM.Period=2000000/(Fre*Point_Num) - 1; //自动重装载值;
TIM_Base_SetConfig(TIM3,&HTIM);
for(i=0;i<Point_Num;i++)
{
z=(unsigned long int)(((((1.12*AMPL*sin(2*3.1415926*i/1024))/10)+1)*1048576.0)); //负半波
}
[/mw_shl_code]
[mw_shl_code=applescript,true]
//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
// HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
Send_Flag=1;
// LED0=~LED0;
}[/mw_shl_code]
[mw_shl_code=applescript,true]if(Send_Flag)
{
AD5791Registers[DAC_VALUE] =z[k++] ;
if(k>=Point_Num) k=0;
WriteToAD5791ViaSPI(DAC_VALUE, 1, AD5791Registers, DAC_VALUE);
AD5791HardwareLoad();
Send_Flag=0;
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>