1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jylzming-STM8-UART

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
uart.c 3.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
jylzming Отправлено 31.08.2016 10:16 5fd441d
/******************************************************************************
*文件名:uart.c
*版 本:V0.0
*作 者:牧梦苍穹
*邮 箱:jylzming@163.com
*文件描述:配置STM8S单片机的UART1串口,波特率为115022,请根据需求修改
* ****************************************************************************/
#include "uart.h"
volatile unsigned char rx_data[128];
volatile unsigned char rx_finished = 0;
volatile unsigned char rx_cnt = 0;
unsigned char HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
/*******************************************************************************
* 函数名: UART_GPIO_Config
* 参 数: 无
* 返回值: 无
* 备 注: UART1串口IO口配置TX对应PD5,RX对应PD6
*******************************************************************************/
void UART_GPIO_Config(void)
{
PD_DDR |= 0x20;//PD5--TX
PD_CR1 |= 0x20;
PD_CR2 |= 0x20;
PD_DDR &= ~0x40;//PD6--RX
PD_CR1 &= ~0x40;
PD_CR2 &= ~0x40;
}
/*******************************************************************************
* 函数名: UART_Config
* 参 数: 无
* 返回值: 无
* 备 注: UART1串口配置,1个起始位、8个数据位,无停止位,波特率115200
*******************************************************************************/
void UART_Config(void)
{
UART_GPIO_Config();
UART1_CR1 = 0x00;//1个起始位、8个数据位、1个停止位
UART1_CR2 = 0x3C;//使能接收中断、空闲中断、使能发送和接收
UART1_CR3 = 0x00;
UART1_BRR2 = 0x01;//波特率115200
UART1_BRR1 = 0x01;
// UART1_BRR2 = 0x00;//波特率9600
// UART1_BRR1 = 0x0D;
}
/*******************************************************************************
* 函数名:UART_Sendchar
* 参 数:unsigned char data待发送的字节数据
* 返回值:无
* 备 注:UART1串口发送一个字节数据
*******************************************************************************/
void UART_Sendchar(unsigned char data)
{
while((UART1_SR & 0x80) == 0);
UART1_DR = data;
}
/*******************************************************************************
* 函数名:UART_SendHex
* 参 数:unsigned char data,8位char型待发送数据
* 返回值:无
* 备 注:UART1发送十六进制数据函数
*******************************************************************************/
void UART_SendHex(unsigned char data)
{
UART_Sendchar('0');
UART_Sendchar('x');
UART_Sendchar(HexTable[data>>4]);
UART_Sendchar(HexTable[data&0x0f]);
UART_Sendchar(' ');
}
void UART_Sendstr(unsigned char *str)
{
while(*str != '\0')
{
UART_Sendchar(*str);
str++;
}
}
/*******************************************************************************
* 函数名:Delay
* 参 数:unsigned int time延时时间
* 返回值:无
* 备 注:简单延时函数,不准确
*******************************************************************************/
void Delay(unsigned int time)
{
unsigned char i;
for(; time > 0; time--)
{
for(i = 0; i < 255; i++)
{
;
}
}
}
/*******************************************************************************
* 函数名:UART_RX_IRQHandler
* 参 数:无
* 返回值:无
* 备 注:UART1串口中断服务函数,进入中断时判断是接收到一个字节还是发送完一帧数据
*******************************************************************************/
@far @interrupt void UART_RX_IRQHandler(void)
{
static unsigned char i = 0;
volatile unsigned char tmp;
if((UART1_SR & 0x20) != 0)
{
rx_data[i++] = UART1_DR;//读UART1_DR可以对其清零
}
else if((UART1_SR & 0x10) != 0)
{
rx_cnt = i;
i = 0;
rx_finished = 1;//接收完成标志位置1
//按顺序读取UART1_SRUART1_SR清除中断标志
tmp = UART1_SR;
tmp = UART1_DR;
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jylzming-STM8-UART.git
git@api.gitlife.ru:oschina-mirror/jylzming-STM8-UART.git
oschina-mirror
jylzming-STM8-UART
jylzming-STM8-UART
master