프로젝트 자료실

UART LED

작성자 임베디드코리아 작성일16-08-03 15:26 조회3,273회 댓글0건
#include "lm3s9b92.h"
int main()
{
  unsigned long ulValue;
  unsigned long ulLoop,RecLoop;
 
  char ch[16]="Hello LEE!";
  ch[14]='\n';
  ch[15]='\0';
 
  ulValue = SYSCTL_RCC_R &~(0x00400800);
  SYSCTL_RCC_R=ulValue|0x00000800;
 
  ulValue = SYSCTL_RCC_R &~(0x000027F0);
  SYSCTL_RCC_R=ulValue|0x00000540;
 
  ulValue = SYSCTL_RCC_R &~(0x07C00000);
  SYSCTL_RCC_R=ulValue|0x01C00000;
 
 
 
  for(ulLoop=32768;ulLoop>0;ulLoop--)
  {
    ulValue = SYSCTL_RIS_R &~(0x0040);
    if(ulValue)
    {
      break;
    }
  }
  ulValue = SYSCTL_RCC_R &~(0x00000800);
  SYSCTL_RCC_R=ulValue|0x00000000;
 
  ulValue = SYSCTL_RCGC2_R &~(0x101);
  SYSCTL_RCGC2_R=ulValue|0x101;
 
  __asm("nop");
  __asm("nop");
  __asm("nop");
 
  ulValue=GPIO_PORTA_AFSEL_R&~(0x03);
  GPIO_PORTA_AFSEL_R =ulValue|0x03;
 
  ulValue=GPIO_PORTA_PCTL_R&~(0xFF);
  GPIO_PORTA_PCTL_R =ulValue|0x11;
 
  ulValue=GPIO_PORTA_DEN_R&~(0x03);
  GPIO_PORTA_DEN_R =ulValue|0x03;
 
  ulValue = SYSCTL_RCGC1_R &~(0x01);
  SYSCTL_RCGC1_R=ulValue|0x01;
 
 
  __asm("nop");
  __asm("nop");
  __asm("nop");
 
 
  ulValue=UART0_CTL_R&~(0x01);
  UART0_CTL_R =ulValue|0x00;  //write 해야되서 disable
 
  ulValue=UART0_IBRD_R&~(0xFF);
  UART0_IBRD_R =ulValue|0x1B;
 
  ulValue=UART0_FBRD_R&~(0x0F);
  UART0_FBRD_R =ulValue|0x08;
 
  ulValue=UART0_LCRH_R&~(0xFF);
  UART0_LCRH_R =ulValue|0x60;  //통신이되면
 
  ulValue=UART0_CTL_R&~(0x01);
  UART0_CTL_R =ulValue|0x01;  //다시 1로만듬
 
 
 
  char RXTX_DATA;

 
/*
      GPIO_PORTJ_DATA_R = GPIO_PORTJ_DATA_R &~(0x03);
  GPIO_PORTJ_DATA_R  |=0x00;
  */

      while(1) // 1일때 전송 0일때 받기
      {

        if((UART0_FR_R & 0x20)){
          RXTX_DATA=UART0_DR_R;
          if(RXTX_DATA=='1')
          {
              ulValue = GPIO_PORTJ_AFSEL_R &~(0x01);
            GPIO_PORTJ_AFSEL_R =ulValue |0x00;
           
            ulValue = GPIO_PORTJ_DEN_R &~(0x01);
            GPIO_PORTJ_DEN_R =ulValue |0x0F;
           
            ulValue = GPIO_PORTJ_DIR_R &~(0x01);
            GPIO_PORTJ_DIR_R =ulValue |0x0F;
            GPIO_PORTJ_DATA_R = GPIO_PORTJ_DATA_R &~(0x0F);
            GPIO_PORTJ_DATA_R |=0x00;
          }
          else
          {
            GPIO_PORTJ_DATA_R |=0x0F;
          }
        }
        else{
          UART0_DR_R=RXTX_DATA;
        }
      }
   
 
  //return 0;
}