⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 AD9958arm控制源程序
💻 C
字号:
/*------------------------------------------------------------
  FILE NAME : main.c
DESCRIPTION : main function of bs1084 arm firmware.
VERSION     : 0.0.1 (c)aureole
AUTHOR      : Aureole
CREATE DATE : 07.17.2006
MODIFY DATE : 00.00.2006
LOGS        :---\
-0.1.0 ----. 04.20.2006
-0.1.1 ----. 07.18.2006	 transplant for keil Arm compiler.
--------------------------------------------------------------*/


//--------------------Include files-----------------------//

#include "..\include\config.h" 
#include "..\include\main.h"
#include "..\include\ltc2600.h"
#include "..\include\spi.h"
#include "..\include\ad9958.h"
#include "..\include\common.h"
#include "..\include\my_lib.h"
#include "..\include\uart.h"
#include "..\include\timer.h"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//-------------------Variable ----------------------------//
ARM_PORT p0,p1;	

WAVEFORM_STRUCT parameter[2]={
	{
		WAVEFORM_SINE,
		DEFAULT_FREQUENCY,
		DEFAULT_AMPLITUDE,
		(float)0.0
		},
	{
		WAVEFORM_SINE,
		DEFAULT_FREQUENCY,
		DEFAULT_AMPLITUDE,
		(float)0.0
	}
};

unsigned  int channel=0;
char buffer[BUFFER_SIZE]; //buffer

//-------------------Function prototype-------------------//
void initialize_system(void);
void set_relay(void);


/*--------------------------------------------------------
NAME       : main
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : --- 
VERSION    : 0.1 
DESCRIPTION: 
CREATE DATE: 3.30.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
int main(void)
{	
	unsigned char feedback=0,command_ready=0;
	double temp=0;
	int j=0;

	initialize_system();

	while(1){
		//command receive and feedback;
		if(uart0_receive_ok_flag){
			uart0_receive_ok_flag=FALSE;
			if(!feedback){
				if(!strcmp(receive_buffer,"ERROR\r\n"))goto aa;
				feedback=TRUE;
				strcpy(buffer,receive_buffer);
				send_string_to_uart0(receive_buffer);
				clear_receive_buffer();
aa:;
			}else{
				if(!strcmp(receive_buffer,"OK\r\n"))command_ready=1;
				feedback=FALSE;
			}
		}

		//command interpret		
		if(command_ready){
			command_ready=FALSE;
			if(!strncmp(buffer,"FREQ",4)){
				temp=__atof(buffer+5);
				set_frequency(CHANNEL_A_B,temp);
			}
		}
		if(j++==100000){
			LED_ON


			send_string_to_uart1("Hello I'm Vector");

		};
		if(j==200000){
			LED_OFF
				
				j=0;
	
		};
  	}
} 

/*--------------------------------------------------------
NAME       : initialize_system
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1 
DESCRIPTION: 
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void initialize_system(void)
{
  unsigned long  int i;


   initialize_ltc2600();

	set_sine_ac_zero(cal_a.sine_ac_zero,cal_b.sine_ac_zero);
	set_squa_ac_zero(cal_a.squa_ac_zero,cal_b.squa_ac_zero);


	
	initialize_led();
	LED_ON;

 	for(i=0;i<800000;i++); //power on delay;


	initialize_master_spi();
	initialize_ad9958();
	set_frequency(CHANNEL_A,8000000.0);
	set_frequency(CHANNEL_B,8000000.0);

	set_phase(CHANNEL_A,0.0);


	LED_OFF;
		IO0DIR|=(1<<16);
	IO0DIR|=(1<<17);
	p0.bits.bit16=1;
	p0.bits.bit17=1;
	IO0PIN=p0.value;

	set_amplitude(CHANNEL_A,parameter[0].waveform,20.0);
	set_amplitude(CHANNEL_B,parameter[1].waveform,20.0);

	initialize_uart0();
	initialize_uart1();
	initialize_timer0();
	enable_timer0();
}

/*--------------------------------------------------------
NAME       : clear_buffer
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.8.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void clear_buffer(void)
{
	memset(buffer,0,BUFFER_SIZE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -