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

📄 main.c

📁 基于 at91sam7s256 的i2c驱动源码
💻 C
字号:
// ----------------------------------------------------------------------------
//         ATMEL Microcontroller Software Support  -  ROUSSET  -
// ----------------------------------------------------------------------------
// DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//*----------------------------------------------------------------------------
//* File Name           : main.c
//* Object              : main application written in C
//* Creation            : 13/Jun/05 JPP
//* V 1.00  28-Jun-2006 JPP change for EK
//*----------------------------------------------------------------------------

// Include Standard LIB  files
#include "project.h"
#include "Main.h"
#include "lib_ssc.h"


static const char POLLING_header[]={"\n\r  *** ATMEL  SSC ***\n\r"};
volatile char message[80];
volatile int loop;

//*--------------------------------------------------------------------------------------
//* Function Name       : wait
//* Object              : Software waiting loop
//* Input Parameters    : none. Waiting time is defined by the global variable LedSpeed.
//* Output Parameters   : none
//*--------------------------------------------------------------------------------------
void wait ( void )
{//* Begin
	//Wait at least 10 ms
    for (loop=0; loop<120; loop++)
    {		  sprintf((char*) message," ");
	    	  AT91F_DBGU_Printk((char*)message);
    }

}//* End

//*----------------------------------------------------------------------------
//* Function Name       : menu
//* Object              : debug menu
//*----------------------------------------------------------------------------
void menu( char value)
{
	unsigned int address,tmp;
	char write;

	switch (value) {
	case '0': //* info
		  sprintf((char*) message,"AT91C_SSC_RFMR 0x%X\n\r",(unsigned int) *AT91C_SSC_RFMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_RCMR 0x%X\n\r",(unsigned int) *AT91C_SSC_RCMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_TFMR 0x%X\n\r",(unsigned int) *AT91C_SSC_TFMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_TCMR 0x%X\n\r",(unsigned int) *AT91C_SSC_TCMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_CMR  0x%X\n\r",(unsigned int) *AT91C_SSC_CMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_IMR  0x%X\n\r",(unsigned int) *AT91C_SSC_IMR);
		  AT91F_DBGU_Printk((char*)message);
		  sprintf((char*) message,"AT91C_SSC_SR   0x%X\n\r",(unsigned int) *AT91C_SSC_SR);
		  AT91F_DBGU_Printk((char*)message);
	break;
	case '1': //*
         AT91F_DBGU_Printk("Start\n\r");
         AT91F_SSC_Start();
	break;
	case '2': //*
         AT91F_DBGU_Printk("reset\n\r");
         AT91F_SSC_Stop();
	break;
	case '3': //*
         AT91F_DBGU_Printk("Disable IT\n\r");
     //* Close SSC interrupt
         AT91F_AIC_DisableIt(AT91C_BASE_AIC, AT91C_ID_SSC);
	break;

	case '4': //*
         AT91F_DBGU_Printk("Enable IT\n\r");
         AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SSC);
	break;

	case '5': //*
         AT91F_DBGU_Printk("Enable RX\n\r");
         AT91F_SSC_EnableRx(AT91C_BASE_SSC);
	break;

    case '6': //*
         AT91F_DBGU_Printk("Disable RX\n\r");
         AT91F_SSC_DisableRx(AT91C_BASE_SSC);
	break;

	case '7': //*
         AT91F_DBGU_Printk("Enable TX\n\r");
         AT91F_SSC_EnableTx(AT91C_BASE_SSC);
	break;

	case '8': //*
         AT91F_DBGU_Printk("Disable TX\n\r");
         AT91F_SSC_DisableTx(AT91C_BASE_SSC);
	break;

	case '9': //*
          AT91F_DBGU_Printk("Write byte at (0x0) :");
          AT91F_DBGU_scanf("%x",&address);
          AT91F_DBGU_Printk("\n\rWrite byte val (0x0) :");
          AT91F_DBGU_scanf("%x",&tmp);
          write = (char)tmp;
 	  sprintf((char*) message,"\n\rWrite 0x%x at 0x%x \n\r",write,address);
       	  AT91F_DBGU_Printk((char*)message);
        break;

 	default:
	AT91F_DBGU_Printk("\n\r");
	break;
	}
}//* End

//*----------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Main function
//*----------------------------------------------------------------------------
int main( void )
//* Begin
{
  // WARNING CUT JP24 FOR TEST SSC
   char value;
     //* Enable User Reset and set its minimal assertion to 960 us
	AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);

   // First, enable the clock of the PIO LEDs
     AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91D_ID_PIO_LED ) ;
   //* to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
    AT91F_PIO_CfgOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
   //* Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
    AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;

    Trace_Toggel_LED(AT91B_LED1);
    //* Init DBGU
    AT91F_DBGU_Init();
    //* Polling
    AT91F_DBGU_Printk((char*)POLLING_header);

    AT91F_DBGU_Printk("0)Info\n\r");
    AT91F_SSC_Start();

    //* Infinit loop
    while(1)
    {
	if (AT91F_DBGU_Get(&value) == 0 ) menu(value);

    }// End while

}//* End

⌨️ 快捷键说明

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