📄 uart.c
字号:
#include "AT91SAM9261.h"#include <stdarg.h>#include <string.h>#include <ctype.h>#include <stdio.h>void UartSendst( char *pt);void UartSend(char data);extern inline void AT91F_US_EnableIt ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int flag); // static void Delay(int time){ while(time--);}void UartSend(char data){ if(data=='\n') { while(!((AT91C_BASE_US0->US_CSR) & AT91C_US_TXRDY)); //žÄ¶¯ÑÓʱʱŒä1--10
Delay(10); //ÓÉÓÚ³¬Œ¶ÖÕ¶Ë·ŽÓŠœÏÂý£¬ÓÐÒ»žö΢СÑÓ³Ù
AT91C_BASE_US0->US_THR ='\n'; while(!((AT91C_BASE_US0->US_CSR) & AT91C_US_TXRDY)); //žÄ¶¯ÑÓʱʱŒä1--10
Delay(10); //ÓÉÓÚ³¬Œ¶ÖÕ¶Ë·ŽÓŠœÏÂý£¬ÓÐÒ»žö΢СÑÓ³Ù
AT91C_BASE_US0->US_THR ='\r'; } else { while(!((AT91C_BASE_US0->US_CSR) & AT91C_US_TXRDY)); //µÈŽýÖªµÀTHR±ä¿Õ
//žÄ¶¯ÑÓʱʱŒä1--10
Delay(10); AT91C_BASE_US0->US_THR = (data & 0x1FF); }}void UartSendst( char *pt){ while(*pt) UartSend(*pt++);}/************************************************//*typedef char* __va_list[1];*//*void arm_printf(char *fmt, ...){ va_list ap; char string[256]; va_start(ap, fmt); vsprintf(string, fmt, ap); UartSendst(string); va_end(ap); }*/void uart_rx_int(void){ char data = (AT91C_BASE_US0->US_RHR & 0X1FF); UartSend(data);}void uart_rx_init(void){ AT91PS_AIC pAic = AT91C_BASE_AIC; unsigned int mask ; unsigned int irq_id = AT91C_ID_US0; mask = 0x1 << irq_id ; pAic->AIC_IDCR = mask ; pAic->AIC_SMR[irq_id] = ((6&0xf)<<4 | (6 & 0x7)); pAic->AIC_SVR[irq_id] = (unsigned int) uart_rx_int; pAic->AIC_ICCR = mask ; pAic->AIC_IECR = 0x1 << irq_id ; AT91F_US_EnableIt(AT91C_BASE_US0,AT91C_US_RXRDY) ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -