ct_test/Keil_C/FWLib/SC92F_Lib/inc/sc92f_uart0.h

128 lines
4.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//************************************************************
// Copyright (c) 深圳市赛元微电子有限公司
// 文件名称 : sc92f_uart0.h
// 作者 :
// 模块功能 : UART0固件库函数头文件
// 局部函数列表:
// 最后更正日期: 2022/01/24
// 版本 : V1.10002
// 说明 :本文件仅适用于赛元92F/93F/92L系列单片机
//*************************************************************
#ifndef _sc92f_UART0_H_
#define _sc92f_UART0_H_
#include "sc92f.h"
#if !defined (SC92F742x) && !defined (SC92F827X) && !defined (SC92F837X)
#define UART0_BaudRate_FsysDIV12 0X00 //仅模式0可用串行端口在系统时钟的1/12下运行
#define UART0_BaudRate_FsysDIV4 0X01 //仅模式0可用串行端口在系统时钟的1/4下运行
#define UART0_BaudRate_FsysDIV64 0X00 //仅模式1可用串行端口在系统时钟的1/64下运行
#define UART0_BaudRate_FsysDIV32 0X01 //仅模式1可用串行端口在系统时钟的1/32下运行
#if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
typedef enum
{
UART0_PinSelection_P15P16 = (uint8_t)0x00, //UART0引脚为P15P16
UART0_PinSelection_P15 = (uint8_t)0x00, //UART0引脚为P15P16无RX
UART0_PinSelection_P11P20 = (uint8_t)0x10, //UART0引脚为P11P20
UART0_PinSelection_P20 = (uint8_t)0x10, //UART0引脚为P20无RX
} UART0_PinSelection_TypeDef;
#endif
#if defined(SC92F725X) || defined(SC92F735X)|| defined (SC92F730x ) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
typedef enum
{
UART0_CLOCK_TIMER1 = (uint8_t)0X02, //TIMER1做波特率发生器
UART0_CLOCK_TIMER1_FreqMcl2 = (uint8_t)0X82, //TIMER1做波特率发生器,且二倍频
UART0_CLOCK_TIMER1_DIV6 = (uint8_t)0X80, //TIMER1做波特率发生器,且6分频
UART0_CLOCK_TIMER1_DIV12 = (uint8_t)0X00, //TIMER1做波特率发生器,且12分频
UART0_CLOCK_TIMER2 = (uint8_t)0X34, //TIMER2做波特率发生器
UART0_CLOCK_TIMER2_DIV12 = (uint8_t)0X30, //定时器2 12分频模式1和3通用
}UART0_Clock_Typedef;
#elif defined (SC92F848x) || defined (SC92F748x) || defined(SC92F859x) || defined(SC92F759x) || defined(SC92L853x) || defined(SC92L753x)
typedef enum
{
UART0_CLOCK_TIMER1 = (uint8_t)0X00, //TIMER1做波特率发生器
UART0_CLOCK_TIMER2 = (uint8_t)0X30, //TIMER2做波特率发生器
UART0_CLOCK_TIMER1_DIV16 = (uint8_t)0X80, //TIMER1做波特率发生器
UART0_CLOCK_TIMER2_DIV16 = (uint8_t)0XB0, //TIMER2做波特率发生器
}UART0_Clock_Typedef;
#else
typedef enum
{
//模式0和3的定时器选择
UART0_CLOCK_TIMER1 = (uint8_t)0X00, //TIMER1做波特率发生器
UART0_CLOCK_TIMER2 = (uint8_t)0X30, //TIMER2做波特率发生器
}UART0_Clock_Typedef;
#endif
#if defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
typedef enum
{
UART0_Mode_8B = 0X00, //UART工作模式:8位半双工
UART0_Mode_10B = 0X40, //UART工作模式:10位全双工
UART0_Mode_11B = 0XC0, //UART工作模式:11位全双工
UART0_Mode_11B_BaudRateFix = 80//UART工作模式:11位全双工,波特率固定
}UART0_Mode_Typedef;
#else
typedef enum
{
UART0_Mode_8B = 0X00, //UART工作模式:8位半双工
UART0_Mode_10B = 0X40, //UART工作模式:10位全双工
UART0_Mode_11B = 0XC0, //UART工作模式:11位全双工
}UART0_Mode_Typedef;
#endif
typedef enum
{
UART0_RX_ENABLE = 0x10, //允许接收数据
UART0_RX_DISABLE = 0x00 //不允许接收数据
} UART0_RX_Typedef;
typedef enum
{
UART0_FLAG_RI = 0X01, //接收中断标志位RI
UART0_FLAG_TI = 0X02 //发送中断标志位TI
} UART0_Flag_Typedef;
/*******************************宏函数*******************************/
/*****************************************************
*函数名称:FlagStatus UART0_GetFlagStatus(UART0_Flag_Typedef UART0_Flag)
*函数功能:获得UART0中断标志状态
*入口参数:
UART0_GetFlagStatus:UART0_Flag:中断标志位选择
*出口参数:
FlagStatus:UART0中断标志位置起状态
*****************************************************/
#define UART0_GetFlagStatus(UART0_Flag) ((UART0_Flag == UART0_FLAG_TI) ? (TI):(RI))
/*****************************************************
*函数名称:void UART0_ClearFlag(UART0_Flag_Typedef UART0_Flag)
*函数功能:清除UART0中断标志状态
*入口参数:
UART0_Flag_Typedef;UART0_Flag:中断标志位选择
*出口参数:void
*****************************************************/
#define UART0_ClearFlag(UART0_Flag) CLEAR_BIT(SCON,UART0_Flag)
void UART0_DeInit(void);
void UART0_Init(uint32_t Uart0Fsys,
uint32_t BaudRate, UART0_Mode_Typedef Mode,
UART0_Clock_Typedef ClockMode,
UART0_RX_Typedef RxMode);
void UART0_SendData8(uint8_t Data);
uint8_t UART0_ReceiveData8(void);
void UART0_SendData9(uint16_t Data);
uint16_t UART0_ReceiveData9(void);
void UART0_ITConfig(FunctionalState NewState,
PriorityStatus Priority);
#if defined (SC92F8003) || defined (SC92F740x) || defined (SC92F7003)
void UART0_PinSelection(UART0_PinSelection_TypeDef
PinSeletion);
#endif
#endif
#endif
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/