⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 一些linux和uboot的学习笔记
💻 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 + -