网站独立ip如何做301重定向广州企业网站推广
经过两天的摸索,一个纯小白的成功配置过程。
在淘宝上买的AD9854dds四通道正弦波模块,卖家只提供了STM32F103的库函数历程,本博客实现了hal的移植并在f407上实现。
第一步:打开cube mx,时钟配置及下载方式配置。
第二步:打开所有需要的GPIO口,全部初始设为上拉,推挽输出,速度设为高。
连线如图所示进行连接,线比较多请耐心连接。
第三步配置好时钟。
第四步:配置好输出文件,点击右上角生成即可。
开始进入keil程序
keil中添加AD9854.c文件
#include <AD9854.h> //STC单片机头文件
#include "stm32f407xx.h"
//#include "delay.h"unsigned char FreqWord[6]; //6个字节频率控制字//**********************以下为系统时钟以及其相关变量设置**************************/* 此处根据自己的需要设置系统时钟以及与其相关的因子,一次需且只需开启一个 CLK_Set为时钟倍频设置,可设置4~20倍倍频,但最大不能超过300MHZFreq_mult_ulong和Freq_mult_doulle均为2的48次方除以系统时钟,一个为长整形,一个为双精度型
*//*
#define CLK_Set 4
const ulong Freq_mult_ulong = 3518437;
const double Freq_mult_doulle = 3518437.2088832;
*//*
#define CLK_Set 5
const ulong Freq_mult_ulong = 2814750;
const double Freq_mult_doulle = 2814749.76710656;
*//*
#define CLK_Set 6
const ulong Freq_mult_ulong = 2345625;
const double Freq_mult_doulle = 2345624.80592213;*/ /*
#define CLK_Set 7
const ulong Freq_mult_ulong = 2010536;
const double Freq_mult_doulle = 2010535.54793326;
*//*
#define CLK_Set 8
const ulong Freq_mult_ulong = 1759219;
const double Freq_mult_doulle = 1759218.6044416;
*//*
#define CLK_Set 9
const ulong Freq_mult_ulong = 1563750;
const double Freq_mult_doulle = 1563749.87061476;
*//*
#define CLK_Set 10
const ulong Freq_mult_ulong = 1407375;
const double Freq_mult_doulle = 1407374.88355328;
*//*
#define CLK_Set 11
const ulong Freq_mult_ulong = 1279432;
const double Freq_mult_doulle = 1279431.712321164;
*//*
#define CLK_Set 12
const ulong Freq_mult_ulong = 1172812;
const double Freq_mult_doulle = 1172812.402961067;
*//*
#define CLK_Set 13
const ulong Freq_mult_ulong = 1082596;
const double Freq_mult_doulle = 1082596.064271754;
*//*
#define CLK_Set 14
const ulong Freq_mult_ulong = 1005268;
const double Freq_mult_doulle = 1005267.773966629;
*/#define CLK_Set 15
const ulong Freq_mult_ulong = 938250;
const double Freq_mult_doulle = 938249.9223688533;//**************************修改硬件时要修改的部分********************************//**************************以下部分为函数定义********************************static void AD9854_WR_Byte(uint32_t addr,uint32_t dat);
extern void AD9854_Init(void);
static void Freq_convert(long Freq);
extern void AD9854_SetSine(ulong Freq,uint Shape);
static void Freq_double_convert(double Freq);
extern void AD9854_SetSine_double(double Freq,uint Shape);
extern void AD9854_InitFSK(void);
extern void AD9854_SetFSK(ulong Freq1,ulong Freq2);
extern void AD9854_InitBPSK(void);
extern void AD9854_SetBPSK(uint Phase1,uint Phase2);
extern void AD9854_InitOSK(void);
extern void AD9854_SetOSK(uchar RateShape);
extern void AD9854_InitAM(void);
extern void AD9854_SetAM(uint Shape);
extern void AD9854_InitRFSK(void);
extern void AD9854_SetRFSK(ulong Freq_Low,ulong Freq_High,ulong Freq_Up_Down,ulong FreRate); //void AD9854_IO_Init(void)
//{
// GPIO_InitTypeDef GPIO_InitStructure ;
//
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE); //使能PB,PE端口时钟// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
// GPIO_Init(GPIOB ,&GPIO_InitStructure) ;
//
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_8| GPIO_Pin_2;
// GPIO_Init(GPIOA ,&GPIO_InitStructure) ;
//
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All^(GPIO_Pin_14| GPIO_Pin_15);
// GPIO_Init(GPIOC ,&GPIO_InitStructure) ;//}//====================================================================================
//函数名称:void AD9854_WR_Byte(uchar addr,uchar dat)
//函数功能:AD9854并行口写入数据
//入口参数:addr 6位地址
// dat 写入的数据
//出口参数:无
//====================================================================================uint32_t dat1,dat2;void AD9854_WR_Byte(uint32_t addr,uint32_t dat)
{dat1= dat|(addr<<8);AD9854_AdrBus=(dat1&0x3fff)|((dat1^0x3fff)<<16);// AD9854_AdrBus = ((addr&0x3f)<<8) | ((addr^0x3f)<<(16+8));
// AD9854_DataBus = dat|(dat^0xff)<<16;
// dat1 = ((addr&0x3f)<<8) | ((addr^0x3f)<<(16+8));
// dat2 = (dat1&0x3fff)|((dat1^0x3fff)<<16);AD9854_WR = 0;AD9854_WR = 1;
}//====================================================================================
//函数名称:void AD9854_Init(void)
//函数功能:AD9854初始化
//入口参数:无
//出口参数:无
//====================================================================================
void AD9854_Init(void)
{AD9854_WR=1;//将读、写控制端口设为无效AD9854_RD=1;AD9854_UDCLK=0;AD9854_RST=1; //复位AD9854AD9854_RST=0;AD9854_WR_Byte(0x1d,0x00); //关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); //设置系统时钟倍频 AD9854_WR_Byte(0x1f,0x00); //设置系统为模式0,由外部更新AD9854_WR_Byte(0x