📄 uart.c
字号:
/************************************************************/
/* UART Code for AT91SAM7S64 */
/* By pasyong */
/* 2006-5 */
/* Base IAR 4.30A */
/************************************************************/
#include "ioat91sam7s64.h"
#define Bautrate 38400 //在这里设置波特率
void uartinit(void)
{
*AT91C_PMC_PCER=1<<AT91C_ID_US0;
//PIO外设功能时钟始能USART0的时钟
*AT91C_PIOA_PDR=(AT91C_PA5_RXD0|AT91C_PA6_TXD0);
//PIO使能USART0对应的引脚的外设功能
*AT91C_PIOA_ASR=(AT91C_PA5_RXD0|AT91C_PA6_TXD0);
//外设A分配给USART0外设A功能
*AT91C_US0_CR=(AT91C_US_RXEN |AT91C_US_TXEN);
//允许接收和发送
*AT91C_US0_MR=AT91C_US_USMODE_NORMAL | /* Normal Mode */
AT91C_US_CLKS_CLOCK | /* Clock = MCK */
AT91C_US_CHRL_8_BITS | /* 8-bit Data */
AT91C_US_PAR_NONE | /* No Parity */
AT91C_US_NBSTOP_1_BIT; /* 1 Stop Bit */
//普通USART模式,主时钟,8字节数据,无效验
//*AT91C_US0_BRGR=30; //BARD RATE:38400(CD=30)
*AT91C_US0_BRGR=48054850/(16*Bautrate);
//设置波特率
}
unsigned char putchar (unsigned char ch)
{
while (!((*AT91C_US0_CSR) & AT91C_US_TXRDY)); // Wait for Empty Tx Buffer
return (*AT91C_US0_THR = ch); // Transmit Character
}
void printf( unsigned char *s)
{
while (*s)
{
putchar(*s);
s++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -