128 lines
4.8 KiB
C
128 lines
4.8 KiB
C
//************************************************************
|
||
// 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引脚为P15,P16
|
||
UART0_PinSelection_P15 = (uint8_t)0x00, //UART0引脚为P15,P16,无RX
|
||
UART0_PinSelection_P11P20 = (uint8_t)0x10, //UART0引脚为P11,P20
|
||
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****/
|