��ǰλ�ã���ҳ > Ƕ��ʽ��ѵ > Ƕ��ʽѧϰ > ��ʦ���� > ARM�������-����ͨ��

ARM�������-����ͨ�� ʱ�䣺2019-08-06      ��Դ��δ֪

һ����ʹ��EXYNOS4412�Ĵ��ڷ��ͺͽ��յ�ʱ������Ҫ��EXYNOS4412�Ĵ��ڽ������ã�����ʹ����ѯ��ʽʱ����������Щ��

 

1������GPIO��ʹ��Ӧ�ܽ���Ϊ���ڵķ��ͺͽ��չܽ�

 ��GPA0CON�Ĵ���[7:4][3:0] 0x22 

�� GPA0PUD�Ĵ���[3:0] 0 ��ֹ����������

2�����ô��ڵ�Ԫ����Ĵ���

 ����ULCON0  0xE2900000 

���� ����λ��8λ

 ����ֹͣλ��1λ

 ����У��λ����

 ����ʹ�õ���ģʽ���Ǻ��⡣

3��UCON0 0xE2900004

�������ڵ��շ�ģʽ����ѯ

�������ڵ�ʱ��ʹ�õ�PCLK����UFCON0 0xE2900008

������ֹFIFO

����UMCON0 0xE290000C

������ֹModem 

����UBRp0 0xE2900028

����UpSLOT0 0xE290002C

����UBRp0 = PCLK����SCLK_UART/������/16 - 1 ����������

 �� UpSLOT0 ������ô�飿

 �� PCLK����SCLK_UART/������/16 - 1 ��С������ * 16 ȡ��

 �� ���

 �� PCLK=100000000

������������115200

����UBRp0 = 35

����UpSLOT0 = 0x0080

���������������̣���ѯ��ʽ��

����uart0_putc()

�����ж�UTRSTAT0��BIT1�����BIT1��0�ȴ����BIT1��1���Ͱ�Ҫ���͵�һ���ֽ�����д�����ͼĴ�����UTXH0��0xE2900020��

�����������̣���ѯ��ʽ��

����uart0_getc

�����ж�UTRSTAT0��BIT0�����BIT0��0�ȴ����BIT0��1����URXH0 0xE2900024��ȡһ���ֽڵ����ݡ�

 

���ʱ��

0xE2900000��ַ��Ԫд3

  0xE2900004��ַ��Ԫд5

  0xE2900008��ַ��Ԫд0

 0xE290000C��ַ��Ԫд0

 0xE2900028��ַ��Ԫд35

 0xE290002C��ַ��Ԫд0x80

 

uart.h

 

 1 #ifndef _UART_H_

 2 #define _UART_H_

 3 

 4 #define GPA0CON (*(volatile unsigned int *)0xE0200000)

 5 #define GPA0PUD (*(volatile unsigned int *)0xE0200008)

 6 

 7 #define ULCON0 (*(volatile unsigned int *)0xE2900000)

 8 #define UCON0 (*(volatile unsigned int *)0xE2900004)

 9 #define UFCON0 (*(volatile unsigned int *)0xE2900008)

10 #define UMCON0 (*(volatile unsigned int *)0xE290000C)

11 #define UTRSTAT0 (*(volatile unsigned int *)0xE2900010)

12 #define UTXH0 (*(volatile unsigned int *)0xE2900020)

13 #define URXH0 (*(volatile unsigned int *)0xE2900024)

14 #define UBRp0 (*(volatile unsigned int *)0xE2900028)

15 #define UpSLOT0 (*(volatile unsigned int *)0xE290002C)

16 

17 #define PCLK (66500000)

18 

19 //����ԭ������

20 extern void uart0_init(void);

21 extern void uart0_puts(const char *);

22 extern void uart0_putc(char);

23 extern char uart0_getc(void);

24 extern void uart0_gets(char *,int);

25 

26 #endif // _UART_H_

 

uart.c

 1 #include "uart.h"

 2 

 3 //��ʼ�����ڼĴ���

 4 void uart0_init(void){

 5     //����GPIO�� ����CPU �ֲ�����������ļĴ���

 6     //GPA0CON GPA0PUD

 7     ULCON0 = 3;

 8     UCON0 = 5;

 9     UFCON0 = 0;

10     UMCON0 = 0;

11     UBRp0 = 35;

12     UpSLOT0 = 0x0080;

13     GPA0CON = 34;

14     GPA0PUD = ~0xF;

15 }

16 //����һ���ַ�

17 void uart0_putc(char c){

18     //�ж�״̬λ

19     while(!(UTRSTAT0 & (1<<1)));

20     //�����ַ�

21     UTXH0 = c;

22 }

23 //����һ���ַ�

24 char uart0_getc(void){

25     while(!(UTRSTAT0 & 1));

26 

27     return URXH0;

28 }

29 

30 //����һ���ַ�

31 void uart0_gets(char *str,int len){

32     char* tmp = str;

33     int in = len;

34     //int i;

35     while(--len){

36         *tmp = uart0_getc();

37         if(*tmp == '\r'){

38             uart0_putc('\n'); //��˴�Ϊ \r �򲻻��������Ϊ \n ������һ����Ծ����ַ��ij��ȣ�Ȼ������ַ���

39             uart0_putc('\r');

40             break;

41         }

42         if(*tmp == 127){����//127 �� ubuntu�� kermit����е� BACKSPACE���� ��Ҫʵ�ֵ�Ч�����ǵ����»س�����ʱ���ն˵���һ�����ݻᱻɾ��� 

43             len++;  //���ڴ˷�֧�� 127 ���뵽�� *tmp �У���ʱ��127�����õģ�����Ҫ���� len++ ��������һ�����⣬���ǵ��˸��Ŀ����ɾ����һ����ĸ������127����һ���ַ�Ҳû���ˣ���Ҫ��len�������Լӽ��л�ԭ  �����ֳ���һ�����⣬����Ѿ�ɾ����0��Ԫ�ؾͲ������Լ������ˣ���������� len Խ��Խ�����Ҫ��������һ���ж�

44             if(len < in){ 

45                 len++;

46             }

47             if(tmp == str){

48                 continue;

49             }

50 

51             uart0_putc('\b');

52             uart0_putc(' ');

53             uart0_putc('\b');

54             --tmp;

55             continue;

56         }

57         uart0_putc(*tmp);

58         tmp++;

59     }

60     *tmp = 0; 

61 }

62 

63 //����һ���ַ�

64 void uart0_puts(const char *str){

65     if(str == 0){

66         return;

67     }

68     while(*str){

69         uart0_putc(*str);

70         if(*str == '\n'){

71             uart0_putc('\r');

72         }

73         str++;

74     }

75 }

 

 

main.c

 1 #include "uart.h"

 2 

 3 void main(void){

 4     char val[30]; 

 5     uart0_init();

 6     while(1){

 7         

 8         //uart0_gets(val);

 9         uart0_puts("\nstart\n");

10         uart0_gets(val,30);

11         uart0_puts(val);

12         

13       //  uart0_puts(uart0_getc());

14     }

15 }

 

makefile

 1 PROG=uart

 2 OBJS=main.o uart.o

 3 

 4 AS=arm-linux-as

 5 CC=arm-linux-gcc

 6 LD=arm-linux-ld

 7 OBJCOPY=arm-linux-objcopy

 8 AFLAGS=-march=armv5te

 9 CFLAGS=-march=armv5te -nostdlib

10 LDFLAGS=-nostartfiles -nostdlib -Ttext=0x20008000 -e main

11 

12 $(PROG): $(OBJS)

13     $(LD) $(LDFLAGS) -o $(PROG)  $(OBJS)

14     $(OBJCOPY) -O binary $(PROG) $(PROG).bin

15     cp uart.bin /tftpboot

16 

17 %.o:%.s

18     $(AS) $(AFLAGS) -o $@  $<

19 

20 %.o:%.c

21     $(CC) $(CFLAGS) -c -o $@  $<

22 clean:

23     @rm -vf $(OBJS) $(PROG) $(PROG).bin

��һƪ��������

��һƪ��Shell�ű�

�ȵ������Ƽ�
����ѧԱ��ҵ��
��нѧԱ�������
�ȵ������Ƽ�
ǰ̨ר�ߣ�010-82525158 ��ҵ��ѵǢ̸ר�ߣ�010-82525379 ԺУ����Ǣ̸ר�ߣ�010-82525379 Copyright © 2004-2018 ��������Զ���Ƽ���չ���޹�˾ ��Ȩ���� ����ICP��16055225�ţ�������������11010802025203��

�ص�����