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

📄 main.c

📁 基于AT91SAM7SE512cpu的flash访问例子
💻 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              :
 * Creation            : GGi   24/07/2006
 * 1.0 07/Aug/06 JPP   : Change disclaimer and include
 *----------------------------------------------------------------------------
*/
#include <stdio.h>
#include "project.h"
#include "dataflash.h"


//*----------------------------------------------------------------------------
//* \fn    AT91F_DBGU_Printk
//* \brief This function is used to send a string through the DBGU channel
//* (Very low level debugging)
//*----------------------------------------------------------------------------
void AT91F_DBGU_Printk(	char *buffer) // \arg pointer to a string ending by \0
{
	while(*buffer != '\0') {
		while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
		AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++);
	}
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PIO_Init
//* \brief NandFlash init
//*----------------------------------------------------------------------------
void AT91F_PIO_Init (void)
{
    // First, enable the clock of the PIO
       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91D_ID_PIO_LED ) ;
       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91D_ID_PIO_SW ) ;

       AT91F_PIO_CfgInput(AT91D_BASE_PIO_SW,AT91B_BP_MASK);

    // then, we configure the PIO Lines corresponding to LED1 to LED2 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 board we must apply a "1" to turn off LEDs
       AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
    // Clear the LED's. On the board we must apply a "0" to turn on LEDs
       AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
}
//*----------------------------------------------------------------------------
//* \fn    AT91F_DBGU_Init
//* \brief NandFlash init
//*----------------------------------------------------------------------------
void AT91F_DBGU_Init (void)
{
	// Configure DBGU
    AT91F_US_ResetRx((AT91PS_USART)AT91C_BASE_DBGU);
    AT91F_US_Configure(
		(AT91PS_USART)AT91C_BASE_DBGU, // DBGU base address
		AT91B_MASTER_CLOCK,            // 100 MHz
		AT91C_US_ASYNC_MODE,           // mode Register to be programmed
		AT91B_DBGU_BAUD_RATE,          // baudrate to be programmed
		0                              // timeguard to be programmed
	);
	// Open PIO for DBGU
    AT91F_DBGU_CfgPIO();
	// Enable Transmitter
    AT91F_US_EnableTx((AT91PS_USART)AT91C_BASE_DBGU);
}

//*----------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Main function
//* Input Parameters    : none
//* Output Parameters   : True
//*----------------------------------------------------------------------------*/
int main(void)
{
    int tmp;
    char mess[60];
    // Init DBGU
        AT91F_DBGU_Init();
    // Print to consol
        AT91F_DBGU_Printk("\n\r");
        AT91F_DBGU_Printk("AT91SAM Data Flash example\n\r");

    // Init Led AND Switch
        AT91F_PIO_Init();
    // Check if Data flash is OK
    if (AT91F_SPI_DataFlash_init(AT91C_SPI_PCS0_DATAFLASH)){
                AT91F_DBGU_Printk("SPI_PCS0 Done\n\r");
                if ( AT91F_SPI_DataFlash_Erase_test())
			AT91F_DBGU_Printk("\n\r- Blank -");
	        AT91F_DBGU_Printk("\n\r");
                tmp= AT91F_Test_SPI_DataFlash(AT91C_SPI_PCS0_DATAFLASH);
		if (tmp == 0)
			AT91F_DBGU_Printk("Test Done\n\r");
		else {
                         sprintf(mess,"Test Not OK\n\rreturn(i): %d\n\r",tmp);
  			 AT91F_DBGU_Printk(mess);
		}
                if ( !AT91F_SPI_DataFlash_Erase_test())
			   AT91F_DBGU_Printk("Write error !! \n\r");

  		AT91F_SPI_DataFlash_Erase_ALL();
  		AT91F_DBGU_Printk("DataFlash Erased \n\r");
    }
    AT91F_DBGU_Printk("END\n\r");
    return true;

}




⌨️ 快捷键说明

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