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

📄 usart.c

📁 最新的IAR511下的AT91SAM7S64的ADC使用例程
💻 C
字号:
//usart.c
#include "usart.h"
#include "AT91SAM7S64.h"

AT91PS_PIO    u_pPio    = AT91C_BASE_PIOA;
AT91PS_PMC    u_pPMC    = AT91C_BASE_PMC;
AT91PS_USART  u_pUSART0 = AT91C_BASE_US0;
AT91PS_USART  u_pUSART1 = AT91C_BASE_US1;
AT91PS_PDC    u_pPDC0   = AT91C_BASE_PDC_US0;
AT91PS_PDC    u_pPDC1   = AT91C_BASE_PDC_US1;
AT91PS_MC     u_pMC     = AT91C_BASE_MC;
AT91PS_AIC    u_pAic    = AT91C_BASE_AIC;

void InitUSART0(void) { // 初始化 UART0
  u_pPio->PIO_PDR = BIT5 | BIT6 | BIT21 | BIT22;
  u_pPio->PIO_ASR = BIT5 | BIT6 | BIT21 | BIT22;
  u_pPio->PIO_BSR = 0;
  u_pPMC->PMC_PCER = 1<<AT91C_ID_US0;    // 允许 UART0 时钟
  u_pUSART0->US_BRGR = 480;              // 设置波特率因子 ((18.432MHz*4)/9600x16)
  u_pUSART0->US_TTGR = 0;
  u_pUSART0->US_MR = 0x08c0;             // 设置UART0工作方式:9600波特率。8数据,1位停止位,无校验
  u_pPDC0->PDC_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;  // 允许RX和TX进行PDC传送请求
  u_pUSART0->US_CR = 0x50;               // 允许UART0
}

void write_char_USART0(unsigned char ch) {  // 向UART0写入字符数据
  while (!(u_pUSART0->US_CSR&AT91C_US_TXRDY)==1);
  u_pUSART0->US_THR = ((ch & 0x1FF));
}

unsigned char read_char_USART0(void) {      // 从UART0读取字符数据
  while (!(u_pUSART0->US_CSR&AT91C_US_RXRDY)==1);
  return((u_pUSART0->US_RHR) & 0x1FF);
}

unsigned char read_char_USART0_nonstop(void) {  // 从UART0读取字符数据,无停止位
  if((u_pUSART0->US_CSR&AT91C_US_RXRDY)==1)
    return((u_pUSART0->US_RHR) & 0x1FF);
  else return 0;
}

void write_str_USART0(unsigned char* buff) {  // 向UART0写入字符串数据
  unsigned int i = 0x0;
  while(buff[i] != '\0') {
    write_char_USART0(buff[i]);
    i++;
  }
}

void ClearTerminal(void) {
  write_char_USART0(0x0d);                   // 回车
  write_char_USART0(0x0a);                   // 换行
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -