中级会员
- 积分
- 219
- 金钱
- 219
- 注册时间
- 2016-8-5
- 在线时间
- 55 小时
|
发表于 2017-11-10 23:46:55
|
显示全部楼层
/* 包含的头文件 --------------------------------------------------------------*/
#include "bsp.h"
/************************************************
函数名称 : UART1_Init(unsigned int baudrate)
功 能 : 初始化USART模块
参 数 : unsigned int baudrate -> 设置串口波特率
返 回 值 : 无
作 者 : StrangeGamma
*************************************************/
void UART1_Init(unsigned int baudrate)
{
unsigned int baud; //
baud = 16000000 / baudrate; //设定串口相应波特率与串口时钟的分频数
//先写波特比率的高4位与低4位
UART1_BRR2 = ((unsigned char)((baud & 0xf000) >> 8 )) | \
((unsigned char)(baud & 0x000f));
UART1_BRR1 = ((unsigned char)((baud & 0x0ff0) >> 4)); //后写波特比率的中间8位
UART1_CR1_bit.UART0 = 0; //使能UART0
UART1_CR2_bit.RIEN = 1; //使能中断接收
UART1_CR2_bit.TEN = 1; //使能发送
UART1_CR2_bit.REN = 1; //接收使能
}
/************************************************
函数名称 : void Uart_SendData(unsigned char data)
功 能 : 向串口发送寄存器写入一个字节数据
参 数 : unsigned char data -> 数据
返 回 值 : 无
作 者 : StrangeGamma
*************************************************/
void Uart_SendData(unsigned char data)
{
while(!(UART1_SR&0X80)); //判断发送数据寄存器是否为空
UART1_DR = data; //向发送寄存器写入数据
}
/************************************************
函数名称 : int fputc(int ch, FILE *f)
功 能 : 系统标准Printf函数的接口函数
参 数 : int ch, FILE *f 系统连接
返 回 值 : 无
作 者 : StrangeGamma
*************************************************/
int fputc(int ch, FILE *f)
{
Uart_SendData(ch);
return ch;
}
#if EN_USART1_INTERRUPTED //使能USART中断
/* 串口接收数据中断服务函数 */
#pragma vector =20
__interrupt void UART1_RX_RXNE(void)
{
unsigned char ch1;
UART1_SR_RXNE = 1; //清除中断标志
ch1 = UART1_DR; //读出串口接收到的数据
Uart_SendData(ch1); //把接收到的数据再通过串口发送出去
}
#endif
/**** Copyright (C)2017 StrangeGamma. All Rights Reserved **** END OF FILE ****/
|
|