📄 main.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 + -