feat: add uart3, uart4
This commit is contained in:
parent
59d150e2b2
commit
e35d3a28a5
@ -44,7 +44,7 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// For debug print
|
// For debug print
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
// Set ADC1(GPIO P1.1) HIP
|
// Set ADC1(GPIO P1.1) HIP
|
||||||
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
||||||
// Channel: ADC1
|
// Channel: ADC1
|
||||||
|
@ -64,7 +64,7 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// For debug print
|
// For debug print
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
// Channel: ADC1
|
// Channel: ADC1
|
||||||
ADC_SetChannel(0x01);
|
ADC_SetChannel(0x01);
|
||||||
// ADC Clock = SYSCLK / 2 / (1+15) = SYSCLK / 32
|
// ADC Clock = SYSCLK / 2 / (1+15) = SYSCLK / 32
|
||||||
|
@ -34,7 +34,7 @@ void main(void)
|
|||||||
uint16_t res;
|
uint16_t res;
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// For debug print
|
// For debug print
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
// Set ADC1(GPIO P1.1) HIP
|
// Set ADC1(GPIO P1.1) HIP
|
||||||
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
||||||
// Channel: ADC1
|
// Channel: ADC1
|
||||||
|
@ -34,7 +34,7 @@ void main(void)
|
|||||||
uint8_t res;
|
uint8_t res;
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// For debug print
|
// For debug print
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
// Set ADC1(GPIO P1.1) HIP
|
// Set ADC1(GPIO P1.1) HIP
|
||||||
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
GPIO_P1_SetMode(GPIO_Pin_1, GPIO_Mode_Input_HIP);
|
||||||
// Channel: ADC1
|
// Channel: ADC1
|
||||||
|
@ -110,7 +110,7 @@ void main(void)
|
|||||||
// Set system clock. Remove this line if system clock is already set by STC-ISP
|
// Set system clock. Remove this line if system clock is already set by STC-ISP
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1 configuration: baud 115200 with Timer2, 1T mode, no interrupt
|
// UART1 configuration: baud 115200 with Timer2, 1T mode, no interrupt
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
// Timer0 configuration: 16-bit auto-reload, interrupt enabled
|
// Timer0 configuration: 16-bit auto-reload, interrupt enabled
|
||||||
TIM_Timer0_Config(HAL_State_ON, TIM_TimerMode_16BitAuto, 1000);
|
TIM_Timer0_Config(HAL_State_ON, TIM_TimerMode_16BitAuto, 1000);
|
||||||
EXTI_Timer0_SetIntState(HAL_State_ON);
|
EXTI_Timer0_SetIntState(HAL_State_ON);
|
||||||
|
@ -31,7 +31,7 @@ void main(void)
|
|||||||
// Set system clock. Remove this line if system clock is already set by STC-ISP
|
// Set system clock. Remove this line if system clock is already set by STC-ISP
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200);
|
||||||
TIM_Timer0_Config(HAL_State_ON, TIM_TimerMode_16BitAuto, 1000);
|
TIM_Timer0_Config(HAL_State_ON, TIM_TimerMode_16BitAuto, 1000);
|
||||||
EXTI_Timer0_SetIntState(HAL_State_ON);
|
EXTI_Timer0_SetIntState(HAL_State_ON);
|
||||||
EXTI_Timer0_SetIntPriority(EXTI_IntPriority_High);
|
EXTI_Timer0_SetIntPriority(EXTI_IntPriority_High);
|
||||||
|
@ -23,7 +23,7 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200);
|
||||||
// 12T mode, prescaler:255+1, frequency: 1, interrupt: ON
|
// 12T mode, prescaler:255+1, frequency: 1, interrupt: ON
|
||||||
TIM_Timer2_Config(HAL_State_OFF, 0xFF, 1);
|
TIM_Timer2_Config(HAL_State_OFF, 0xFF, 1);
|
||||||
EXTI_Timer2_SetIntState(HAL_State_ON);
|
EXTI_Timer2_SetIntState(HAL_State_ON);
|
||||||
|
@ -30,7 +30,7 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
// UART1 configuration: baud 115200 with Timer1, 1T mode, no interrupt
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer1, HAL_State_ON, 115200);
|
||||||
EXTI_Global_SetIntState(HAL_State_ON);
|
EXTI_Global_SetIntState(HAL_State_ON);
|
||||||
// 1T mode, prescaler:255+1, frequency: 5, interrupt: ON
|
// 1T mode, prescaler:255+1, frequency: 5, interrupt: ON
|
||||||
TIM_Timer2_Config(HAL_State_ON, 0xFF, 5);
|
TIM_Timer2_Config(HAL_State_ON, 0xFF, 5);
|
||||||
|
@ -25,8 +25,11 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1, baud 115200, baud source Timer2, 1T mode, interrupt on
|
// UART1, baud 115200, baud source Timer2, 1T mode, interrupt on
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_ON);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
UART1_SetRxState(HAL_State_ON);
|
UART1_SetRxState(HAL_State_ON);
|
||||||
|
// Enable UART1 interrupt
|
||||||
|
EXTI_Global_SetIntState(HAL_State_ON);
|
||||||
|
EXTI_UART1_SetIntState(HAL_State_ON);
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
UART1_IntTxChar('R');
|
UART1_IntTxChar('R');
|
||||||
|
@ -18,7 +18,7 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART1, baud 115200, baud source Timer2, 1T mode, no interrupt
|
// UART1, baud 115200, baud source Timer2, 1T mode, no interrupt
|
||||||
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200, HAL_State_OFF);
|
UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
UART1_TxChar('T');
|
UART1_TxChar('T');
|
||||||
|
@ -18,7 +18,8 @@ void main(void)
|
|||||||
{
|
{
|
||||||
SYS_SetClock();
|
SYS_SetClock();
|
||||||
// UART2, baud 115200, baud source Timer2, 1T mode, no interrupt
|
// UART2, baud 115200, baud source Timer2, 1T mode, no interrupt
|
||||||
UART2_ConfigMode0Dyn8bitUart(HAL_State_ON, 115200, HAL_State_OFF);
|
UART2_Set8bitUART();
|
||||||
|
UART2_Config(HAL_State_ON, 115200);
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
UART2_TxChar('T');
|
UART2_TxChar('T');
|
||||||
|
@ -21,9 +21,11 @@
|
|||||||
|
|
||||||
#define UART_RX_BUFF_SIZE 0x20
|
#define UART_RX_BUFF_SIZE 0x20
|
||||||
|
|
||||||
/***************************** /
|
|
||||||
|
/**************************************************************************** /
|
||||||
* UART1
|
* UART1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
UART1_BaudSource_Timer1 = 0x00,
|
UART1_BaudSource_Timer1 = 0x00,
|
||||||
@ -39,8 +41,8 @@ typedef enum
|
|||||||
} UART1_AlterPort_t;
|
} UART1_AlterPort_t;
|
||||||
|
|
||||||
#define UART1_SetRxState(__STATE__) SBIT_ASSIGN(REN, __STATE__)
|
#define UART1_SetRxState(__STATE__) SBIT_ASSIGN(REN, __STATE__)
|
||||||
#define UART1_ClearTxInterrupt SBIT_RESET(TI)
|
#define UART1_ClearTxInterrupt() SBIT_RESET(TI)
|
||||||
#define UART1_ClearRxInterrupt SBIT_RESET(RI)
|
#define UART1_ClearRxInterrupt() SBIT_RESET(RI)
|
||||||
#define UART1_WriteBuffer(__DATA__) (SBUF = (__DATA__))
|
#define UART1_WriteBuffer(__DATA__) (SBUF = (__DATA__))
|
||||||
#define UART1_SetFrameErrDetect(__STATE__) SFR_ASSIGN(PCON, 6, __STATE__)
|
#define UART1_SetFrameErrDetect(__STATE__) SFR_ASSIGN(PCON, 6, __STATE__)
|
||||||
#define UART1_SetBaudSource(__BAUD_SRC__) SFR_ASSIGN(AUXR, 0, __BAUD_SRC__)
|
#define UART1_SetBaudSource(__BAUD_SRC__) SFR_ASSIGN(AUXR, 0, __BAUD_SRC__)
|
||||||
@ -63,13 +65,11 @@ typedef enum
|
|||||||
/**
|
/**
|
||||||
* Mode1: 8-bit UART, dynamic baud-rate, provided by Timer1 or Timer2
|
* Mode1: 8-bit UART, dynamic baud-rate, provided by Timer1 or Timer2
|
||||||
*/
|
*/
|
||||||
void UART1_ConfigMode1Dyn8bitUart(
|
void UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate);
|
||||||
UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt);
|
|
||||||
/**
|
/**
|
||||||
* Mode3: 9-bit UART, dynamic baud-rate, provided by Timer1 or Timer2
|
* Mode3: 9-bit UART, dynamic baud-rate, provided by Timer1 or Timer2
|
||||||
*/
|
*/
|
||||||
void UART1_ConfigMode3Dyn9bitUart(
|
void UART1_ConfigMode3Dyn9bitUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate);
|
||||||
UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt);
|
|
||||||
|
|
||||||
void UART1_InterruptHandler(void);
|
void UART1_InterruptHandler(void);
|
||||||
|
|
||||||
@ -85,27 +85,64 @@ void UART1_TxHex(uint8_t hex);
|
|||||||
void UART1_TxString(uint8_t *str);
|
void UART1_TxString(uint8_t *str);
|
||||||
|
|
||||||
|
|
||||||
/***************************** /
|
/**************************************************************************** /
|
||||||
* UART2
|
* UART2
|
||||||
*/
|
*/
|
||||||
#define UART2_SetRxState(__STATE__) SFR_ASSIGN(S2CON, 4, __STATE__)
|
|
||||||
#define UART2_ClearTxInterrupt SFR_RESET(S2CON, 1)
|
|
||||||
#define UART2_ClearRxInterrupt SFR_RESET(S2CON, 0)
|
|
||||||
#define UART2_WriteBuffer(__DATA__) (S2BUF = (__DATA__))
|
|
||||||
|
|
||||||
|
#define UART2_SetRxState(__STATE__) SFR_ASSIGN(S2CON, 4, __STATE__)
|
||||||
|
#define UART2_ClearTxInterrupt() SFR_RESET(S2CON, 1)
|
||||||
|
#define UART2_ClearRxInterrupt() SFR_RESET(S2CON, 0)
|
||||||
|
#define UART2_WriteBuffer(__DATA__) (S2BUF = (__DATA__))
|
||||||
|
#define UART2_TxFinished() (S2CON & (0x01 << 1))
|
||||||
|
#define UART2_Set8bitUART() SFR_RESET(S2CON, 7)
|
||||||
|
#define UART2_Set9bitUART() SFR_SET(S2CON, 7)
|
||||||
/**
|
/**
|
||||||
* Mode0: 8-bit UART, dynamic baud-rate, provided by Timer2
|
* Dynamic baud-rate, provided by Timer2
|
||||||
*/
|
*/
|
||||||
void UART2_ConfigMode0Dyn8bitUart(
|
void UART2_Config(HAL_State_t freq1t, uint32_t baudrate);
|
||||||
HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt);
|
|
||||||
/**
|
|
||||||
* Mode1: 9-bit UART, dynamic baud-rate, provided by Timer2
|
|
||||||
*/
|
|
||||||
void UART2_ConfigMode1Dyn9bitUart(
|
|
||||||
HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt);
|
|
||||||
|
|
||||||
void UART2_TxChar(char dat);
|
void UART2_TxChar(char dat);
|
||||||
void UART2_TxHex(uint8_t hex);
|
void UART2_TxHex(uint8_t hex);
|
||||||
void UART2_TxString(uint8_t *str);
|
void UART2_TxString(uint8_t *str);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************** /
|
||||||
|
* UART3
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define UART3_SetBaudSource(__BAUD_SRC__) SFR_ASSIGN(S3CON, 6, __BAUD_SRC__)
|
||||||
|
#define UART3_SetRxState(__STATE__) SFR_ASSIGN(S3CON, 4, __STATE__)
|
||||||
|
#define UART3_Set8bitUART() SFR_RESET(S3CON, 7)
|
||||||
|
#define UART3_Set9bitUART() SFR_SET(S3CON, 7)
|
||||||
|
#define UART3_ClearTxInterrupt() SFR_RESET(S3CON, 1)
|
||||||
|
#define UART3_ClearRxInterrupt() SFR_RESET(S3CON, 0)
|
||||||
|
#define UART3_WriteBuffer(__DATA__) (S3BUF = (__DATA__))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dynamic baud-rate from timer2 or timer3
|
||||||
|
*/
|
||||||
|
void UART3_ConfigOnTimer2(HAL_State_t freq1t, uint32_t baudrate);
|
||||||
|
void UART3_ConfigOnTimer3(HAL_State_t freq1t, uint32_t baudrate);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************** /
|
||||||
|
* UART4
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define UART4_SetBaudSource(__BAUD_SRC__) SFR_ASSIGN(S4CON, 6, __BAUD_SRC__)
|
||||||
|
#define UART4_SetRxState(__STATE__) SFR_ASSIGN(S4CON, 4, __STATE__)
|
||||||
|
#define UART4_Set8bitUART() SFR_RESET(S4CON, 7)
|
||||||
|
#define UART4_Set9bitUART() SFR_SET(S4CON, 7)
|
||||||
|
#define UART4_ClearTxInterrupt() SFR_RESET(S4CON, 1)
|
||||||
|
#define UART4_ClearRxInterrupt() SFR_RESET(S4CON, 0)
|
||||||
|
#define UART4_WriteBuffer(__DATA__) (S4BUF = (__DATA__))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dynamic baud-rate from timer2 or timer4
|
||||||
|
*/
|
||||||
|
void UART4_ConfigOnTimer2(HAL_State_t freq1t, uint32_t baudrate);
|
||||||
|
void UART4_ConfigOnTimer4(HAL_State_t freq1t, uint32_t baudrate);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
117
src/fw_uart.c
117
src/fw_uart.c
@ -20,9 +20,11 @@ static const char hexTable[16] = { '0','1','2','3','4','5','6','7','8','9','A','
|
|||||||
char wptr, rptr, UART1_RxBuffer[UART_RX_BUFF_SIZE];
|
char wptr, rptr, UART1_RxBuffer[UART_RX_BUFF_SIZE];
|
||||||
__bit busy;
|
__bit busy;
|
||||||
|
|
||||||
/***************************** /
|
|
||||||
|
/**************************************************************************** /
|
||||||
* UART1
|
* UART1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int16_t _UART1_Timer_InitValueCalculate(HAL_State_t freq1t, uint32_t baudrate)
|
int16_t _UART1_Timer_InitValueCalculate(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
{
|
{
|
||||||
uint32_t value, sysclk = SYS_GetSysClock();
|
uint32_t value, sysclk = SYS_GetSysClock();
|
||||||
@ -35,7 +37,7 @@ int16_t _UART1_Timer_InitValueCalculate(HAL_State_t freq1t, uint32_t baudrate)
|
|||||||
return 0xFFFF - value + 1;
|
return 0xFFFF - value + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _UART1_ConfigDynUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
void _UART1_ConfigDynUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate)
|
||||||
{
|
{
|
||||||
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
UART1_SetBaudSource(baudSource);
|
UART1_SetBaudSource(baudSource);
|
||||||
@ -55,39 +57,29 @@ void _UART1_ConfigDynUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uin
|
|||||||
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
||||||
TIM_Timer2_SetRunState(HAL_State_ON);
|
TIM_Timer2_SetRunState(HAL_State_ON);
|
||||||
}
|
}
|
||||||
if (enableInterrupt)
|
|
||||||
{
|
|
||||||
// Enable UART1 interrupt
|
|
||||||
EXTI_Global_SetIntState(HAL_State_ON);
|
|
||||||
EXTI_UART1_SetIntState(HAL_State_ON);
|
|
||||||
EXTI_UART1_SetIntPriority(EXTI_IntPriority_Highest);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
void UART1_ConfigMode1Dyn8bitUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate)
|
||||||
void UART1_ConfigMode1Dyn8bitUart(
|
|
||||||
UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
|
||||||
{
|
{
|
||||||
SM0=0; SM1=1;
|
SM0=0; SM1=1;
|
||||||
_UART1_ConfigDynUart(baudSource, freq1t, baudrate, enableInterrupt);
|
_UART1_ConfigDynUart(baudSource, freq1t, baudrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART1_ConfigMode3Dyn9bitUart(
|
void UART1_ConfigMode3Dyn9bitUart(UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate)
|
||||||
UART1_BaudSource_t baudSource, HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
|
||||||
{
|
{
|
||||||
SM0=1; SM1=1;
|
SM0=1; SM1=1;
|
||||||
_UART1_ConfigDynUart(baudSource, freq1t, baudrate, enableInterrupt);
|
_UART1_ConfigDynUart(baudSource, freq1t, baudrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART1_InterruptHandler(void)
|
void UART1_InterruptHandler(void)
|
||||||
{
|
{
|
||||||
if (TI)
|
if (TI)
|
||||||
{
|
{
|
||||||
TI = 0;
|
UART1_ClearTxInterrupt();
|
||||||
busy = 0;
|
busy = 0;
|
||||||
}
|
}
|
||||||
if (RI)
|
if (RI)
|
||||||
{
|
{
|
||||||
RI = 0;
|
UART1_ClearRxInterrupt();
|
||||||
UART1_RxBuffer[rptr++] = SBUF;
|
UART1_RxBuffer[rptr++] = SBUF;
|
||||||
rptr = rptr % UART_RX_BUFF_SIZE;
|
rptr = rptr % UART_RX_BUFF_SIZE;
|
||||||
}
|
}
|
||||||
@ -97,7 +89,7 @@ void UART1_IntTxChar(char dat)
|
|||||||
{
|
{
|
||||||
while (busy);
|
while (busy);
|
||||||
busy = 1;
|
busy = 1;
|
||||||
SBUF = dat;
|
UART1_WriteBuffer(dat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART1_IntTxHex(uint8_t hex)
|
void UART1_IntTxHex(uint8_t hex)
|
||||||
@ -113,9 +105,9 @@ void UART1_IntTxString(uint8_t *str)
|
|||||||
|
|
||||||
void UART1_TxChar(char dat)
|
void UART1_TxChar(char dat)
|
||||||
{
|
{
|
||||||
SBUF = dat;
|
UART1_WriteBuffer(dat);
|
||||||
while(!TI);
|
while(!TI);
|
||||||
SBIT_RESET(TI);
|
UART1_ClearTxInterrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART1_TxHex(uint8_t hex)
|
void UART1_TxHex(uint8_t hex)
|
||||||
@ -130,47 +122,24 @@ void UART1_TxString(uint8_t *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************** /
|
/**************************************************************************** /
|
||||||
* UART2
|
* UART2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void _UART2_ConfigDynUart(HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
void UART2_Config(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
{
|
{
|
||||||
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
// Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
|
// Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
|
||||||
TIM_Timer2_Set1TMode(freq1t);
|
TIM_Timer2_Set1TMode(freq1t);
|
||||||
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
||||||
TIM_Timer2_SetRunState(HAL_State_ON);
|
TIM_Timer2_SetRunState(HAL_State_ON);
|
||||||
if (enableInterrupt)
|
|
||||||
{
|
|
||||||
// Enable UART1 interrupt
|
|
||||||
EXTI_Global_SetIntState(HAL_State_ON);
|
|
||||||
EXTI_UART2_SetIntState(HAL_State_ON);
|
|
||||||
EXTI_UART2_SetIntPriority(EXTI_IntPriority_Highest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UART2_ConfigMode0Dyn8bitUart(
|
|
||||||
HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
|
||||||
{
|
|
||||||
SFR_RESET(S2CON, 7);
|
|
||||||
_UART2_ConfigDynUart(freq1t, baudrate, enableInterrupt);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Mode1: 9-bit UART, dynamic baud-rate, provided by Timer2
|
|
||||||
*/
|
|
||||||
void UART2_ConfigMode1Dyn9bitUart(
|
|
||||||
HAL_State_t freq1t, uint32_t baudrate, HAL_State_t enableInterrupt)
|
|
||||||
{
|
|
||||||
SFR_SET(S2CON, 7);
|
|
||||||
_UART2_ConfigDynUart(freq1t, baudrate, enableInterrupt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART2_TxChar(char dat)
|
void UART2_TxChar(char dat)
|
||||||
{
|
{
|
||||||
S2BUF = dat;
|
UART2_WriteBuffer(dat);
|
||||||
while(!(S2CON & B00000010));
|
while(!UART2_TxFinished());
|
||||||
SFR_RESET(S2CON, 1);
|
UART2_ClearTxInterrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UART2_TxHex(uint8_t hex)
|
void UART2_TxHex(uint8_t hex)
|
||||||
@ -182,4 +151,52 @@ void UART2_TxHex(uint8_t hex)
|
|||||||
void UART2_TxString(uint8_t *str)
|
void UART2_TxString(uint8_t *str)
|
||||||
{
|
{
|
||||||
while (*str) UART2_TxChar(*str++);
|
while (*str) UART2_TxChar(*str++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************** /
|
||||||
|
* UART3
|
||||||
|
*/
|
||||||
|
|
||||||
|
void UART3_ConfigOnTimer2(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
|
{
|
||||||
|
UART3_SetBaudSource(0x00);
|
||||||
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
|
// Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
|
||||||
|
TIM_Timer2_Set1TMode(freq1t);
|
||||||
|
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
||||||
|
TIM_Timer2_SetRunState(HAL_State_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UART3_ConfigOnTimer3(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
|
{
|
||||||
|
UART3_SetBaudSource(0x01);
|
||||||
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
|
// Timer3: 1T mode and initial value. prescaler is ignored, no interrupt.
|
||||||
|
TIM_Timer3_Set1TMode(freq1t);
|
||||||
|
TIM_Timer3_SetInitValue(init >> 8, init & 0xFF);
|
||||||
|
TIM_Timer3_SetRunState(HAL_State_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************** /
|
||||||
|
* UART4
|
||||||
|
*/
|
||||||
|
|
||||||
|
void UART4_ConfigOnTimer2(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
|
{
|
||||||
|
UART4_SetBaudSource(0x00);
|
||||||
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
|
TIM_Timer2_Set1TMode(freq1t);
|
||||||
|
TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
|
||||||
|
TIM_Timer2_SetRunState(HAL_State_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UART4_ConfigOnTimer4(HAL_State_t freq1t, uint32_t baudrate)
|
||||||
|
{
|
||||||
|
UART4_SetBaudSource(0x01);
|
||||||
|
uint16_t init = _UART1_Timer_InitValueCalculate(freq1t, baudrate);
|
||||||
|
TIM_Timer4_Set1TMode(freq1t);
|
||||||
|
TIM_Timer4_SetInitValue(init >> 8, init & 0xFF);
|
||||||
|
TIM_Timer4_SetRunState(HAL_State_ON);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user