📄 c_entry.c
字号:
/********************************************************************
*File Name:C_Entry.c
*Description:Main Routine
*Date:2004/3/1
*Author:weian mail:an.wei@mail.ia.ac.cn
*********************************************************************/
#include "AT91RM9200.H"
#include "IIC.h"
extern void TWI_Test(void)
{
int loop;
unsigned int write, read;
AT91F_DBGU_Printk("\n\n\r======================================");
AT91F_DBGU_Printk("\n\rAT91RM9200 TWI EEPREOM Test\n\r");
AT91F_DBGU_Printk("======================================\n\r");
//initiate TWI
*AT91C_PIOA_ASR = 0x06000000;//Assigns the I/O line to the Peripheral A function(TWD,TWCK)
*AT91C_PIOA_PDR = 0x06000000;//enables peripheral control of the pin
*AT91C_PIOA_MDER = 0x06000000;//Enables Multi Drive on the I/O line.(Define TWD and TWCK as open-drain)
*AT91C_PMC_PCER = 0x00001000;
*AT91C_TWI_IDR = 0xffffffff;//Disable interrupts
*AT91C_TWI_CR = 0x24;//the master data transfer is enabled
//* Here, CKDIV = 1 and CHDIV=CLDIV ==> CLDIV = CHDIV = 1/4*((Fmclk/FTWI) -6)
*AT91C_TWI_CWGR = 0x00019595;//2d2d;// Set TWI Clock Waveform Generator Register
AT91F_DBGU_Printk("TWI ready\n\r");
write = 0x12356890;
// Write a byte and read it
AT91F_TWI_Write(AT91C_BASE_TWI, 0x4, (char *)&write, 4);
// Wait 10 ms before data is written into EEPROM
AT91F_DBGU_Printk("Wait at least 10 ms before value is written into EEPROM\n\r");
for (loop=0; loop<1000000; loop++);
{AT91F_TWI_Read(AT91C_BASE_TWI, 0x4, (char *)&read, 4);
}
// Wait 10 ms before data is written into EEPROM
AT91F_DBGU_Printk("Compare Write and Read\n\r");
if (read == write)
{
AT91F_DBGU_Printk("Test TWI OK!\n\r");
}
else
{
AT91F_DBGU_Printk("Error during test!\n\r");
}
}
void AT91F_US0_Init(void)
{
//*step1 Drive US0 signals
AT91F_US0_CfgPIO ();
//*step2 Enable Peripheral clock in PMC for US0
AT91F_US0_CfgPMC();
//*step3 configure US0
AT91F_US_Configure((AT91PS_USART)AT91C_BASE_US0,MCK,AT91C_US_ASYNC_MODE,BAUD_RATE,TIME_GUARD);
//*step4 Enable Tx and Rx
AT91F_US_EnableTx((AT91PS_USART)AT91C_BASE_US0);
AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_US0);
}
void Delay(int i)
{ int j,k;
for(j=0;j<i;j++)
{
k=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -