본문 바로가기

ARM7

수신 인터럽트에의한 직렬 통신


#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#include "OK7S256ads.h"

void DBGU_RX_ISR(void)
{
 DBGU_TX_char('1');
 DBGU_TX_char('2');
}

void DBGU_TX_char(unsigned int data)
{
 while(!(*AT91C_DBGU_CSR = 0x0002));//AT91C_DBGU_CSR 채널 상태 레지스터
 *AT91C_DBGU_THR = data;        //TRANSSMMITER HOLDING REGISTER
}
 


int main(void)
{
AT91F_DBGU_CfgPMC();
AT91F_DBGU_CfgPIO();

*AT91C_DBGU_MR = 0x00000800;//Mode Register
*AT91C_DBGU_BRGR =26;    //Baud Rate Generator Register
*AT91C_DBGU_CR = 0x00000150;// Control Register

AT91F_DBGU_InterruptEnable(AT91C_BASE_DBGU,AT91C_US_RXRDY);
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_SYS,7,1,DBGU_RX_ISR);
AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_US0);

while(1);
}