📄 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 :
* 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 + -