本人在做stm32f407控制ad9851产生正弦波,程序如下,调试后不显示波形,求指导

2019-07-14 22:04发布

#include"STM32f4xx.h"



#define ad9851_rest_l  GPIO_ResetBits(GPIOC,GPIO_Pin_0)   

#define ad9851_rest_h  GPIO_SetBits(GPIOC,GPIO_Pin_0)

#define ad9851_fq_up_l  GPIO_ResetBits(GPIOC,GPIO_Pin_1)

#define ad9851_fq_up_h  GPIO_SetBits(GPIOC,GPIO_Pin_1)

#define ad9851_w_clk_l  GPIO_ResetBits(GPIOC,GPIO_Pin_2)

#define ad9851_w_clk_h  GPIO_SetBits(GPIOC,GPIO_Pin_2)

#define ad9851_data_l GPIO_ResetBits(GPIOC,GPIO_Pin_3)

#define ad9851_data_h GPIO_SetBits(GPIOC,GPIO_Pin_3)


/*
void RCC_HSE_Configuration(void)

{

RCC_DeInit();//将外设RCC寄存器重设为缺省值

RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振HSEHSE晶振打开ON



if(RCC_WaitForHSEStartUp()==SUCCESS)//等待HSE起振SUCCESSHSE晶振稳定且就绪

{

  RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟HCLK

//RCC_SYSCLK_Div1--AHB时钟=系统时钟

  RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟PCLK2

//RCC_HCLK_Div1--APB2时钟=HCLK

  RCC_PCLK1Config(RCC_HCLK_Div2);//设置低速AHB时钟PCLK1

//RCC_HCLK_Div2--APB1时钟=HCLK/2



  FLASH_PrefetchBufferCmd(ENABLE);//选 择FLASH预取指缓存的模预取指缓存使能

  FLASH_SetLatency(FLASH_Latency_2);//设置FLASH存储器延时时钟周期数FLASH_LATENCY_2  2延时周期

  RCC_PLLConfig(RCC_PLLSource_HSE,63,192,2,4);//设置PLL时钟源及倍频系数

  RCC_PLLCmd(ENABLE);//PLL使能

  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//检查指定的RCC标志位PLL准备好标志设置与否


  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//设置系统时钟SYSCLK

  while(RCC_GetSYSCLKSource()!= 0x08);//0x08:PLL作为系统时钟

  }

}
*/


void AD9851_GPIOC_Configuration(void)

{  

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;  

GPIO_Init(GPIOC,&GPIO_InitStructure);   

}

void AD9851_GPIOF_Configuration(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;  

GPIO_Init(GPIOF,&GPIO_InitStructure);

}



void ad9851_reset_parrel()

{

ad9851_w_clk_l;

ad9851_fq_up_l;

//rest信号

ad9851_rest_l;

ad9851_rest_h;

ad9851_rest_l;

}


//并行输出
void ad9851_wr_parrel(u8 w0,u32 frequence)

{

u8 w;

frequence=frequence*4294967296/180000000;

//写w0数据

w=w0;   

GPIO_Write(GPIOF,w);      //w0

ad9851_w_clk_h;

ad9851_w_clk_l;

//写w1数据

w=(frequence>>24);

GPIO_Write(GPIOF,w);      //w1

ad9851_w_clk_h;

ad9851_w_clk_l;

//写w2数据

w=(frequence>>16);

GPIO_Write(GPIOF,w);      //w2  
ad9851_w_clk_h;

ad9851_w_clk_l;

//写w3数据

w=(frequence>>8);

GPIO_Write(GPIOF,w);      //w3

ad9851_w_clk_h;

ad9851_w_clk_l;

//写w4数据

w=(frequence>>=0);

GPIO_Write(GPIOF,w);      //w4


ad9851_w_clk_h;

ad9851_w_clk_l;

//移入始能

ad9851_fq_up_h;

ad9851_fq_up_l;

}

//
//void ad9851_wr_parrel(u8 w0,u32 frequence)

//{

// u8 i,w;

// frequence=(long int)frequence*4294967296/180000000;
////写w4数据       
// w=(frequence>>=0);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }

////写w3数据       
// w=(frequence>>8);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
//       
////写w2数据       
// w=(frequence>>16);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }

//       
////写w1数据       
// w=(frequence>>24);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                     ad9851_data_h;
//                else
//                           ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }

////写w0数据       
// w=w0;
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                     ad9851_data_h;
//                else
//                           ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }

//  //移入始能

// ad9851_fq_up_h;

// ad9851_fq_up_l;       
//}






int main()

{

//RCC_HSE_Configuration();

AD9851_GPIOC_Configuration();

AD9851_GPIOF_Configuration();

GPIO_Write(GPIOC,0x0000);

GPIO_Write(GPIOF,0x0000);

//串行写1000Hz程序

ad9851_reset_parrel();

ad9851_wr_parrel(0x01,1000000);

while(1);

}







0条回答

一周热门 更多>