20260324
This commit is contained in:
196
RTX5_20220316/Driver/usart/usart.c
Normal file
196
RTX5_20220316/Driver/usart/usart.c
Normal file
@ -0,0 +1,196 @@
|
||||
/*
|
||||
*****************************************************************
|
||||
ͷ<>ļ<EFBFBD>
|
||||
*****************************************************************
|
||||
*/
|
||||
#include "usart.h"
|
||||
#include "pbdata.h"
|
||||
/*
|
||||
************************************************************************************
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
************************************************************************************
|
||||
*/
|
||||
char USART1_TX_BUF[USART1_MAX_SEND_LEN]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART1_MAX_SEND_LEN<45>ֽ<EFBFBD>
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: UART_PutChar
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>USARTx
|
||||
* <20><><EFBFBD><EFBFBD>Data
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)
|
||||
{
|
||||
USART_SendData(USARTx, Data);
|
||||
while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET){}
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: UART_PutStr
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>USARTx
|
||||
* <20><><EFBFBD><EFBFBD>str
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void UART_PutStr (USART_TypeDef* USARTx, char *str)
|
||||
{
|
||||
while (0 != *str)
|
||||
{
|
||||
UART_PutChar(USARTx, *str);
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: fputc()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: printf<74>ض<EFBFBD><D8B6><EFBFBD>
|
||||
* <09><> <20><> <20><>USART2
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
int fputc(int ch,FILE *f)
|
||||
{
|
||||
USART_ClearFlag(USART2,USART_FLAG_TC);
|
||||
USART_SendData(USART2,(u8)ch);
|
||||
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
|
||||
return ch;
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: USART1_Configuration()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>baund
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void USART1_Configuration(u32 baund)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
NVIC_InitTypeDef NVIC_InitStructure;
|
||||
|
||||
USART_SDI_DEinit();
|
||||
Enable_SDI_RS232=1;
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //ʹ<><CAB9>USART1
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //GPIOAʱ<41><CAB1>
|
||||
USART_DeInit(USART1); //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>1
|
||||
//Usart1 IO <20><><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
|
||||
//Usart1 <20><><EFBFBD>ڼĴ<DABC><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
USART_InitStructure.USART_BaudRate = baund;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
||||
USART_Init(USART1,&USART_InitStructure);
|
||||
|
||||
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//<2F><><EFBFBD><EFBFBD>USART1<54>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
//Usart1 NVIC <20><><EFBFBD><EFBFBD>
|
||||
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//<2F><><EFBFBD><EFBFBD>1<EFBFBD>ж<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>3
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨ<51><CDA8>ʹ<EFBFBD><CAB9>
|
||||
NVIC_Init(&NVIC_InitStructure); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>VIC<49>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_Cmd(USART1,ENABLE);
|
||||
USART_ClearFlag(USART1,USART_FLAG_TC); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: USART_RS232_DEinit()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>1<EFBFBD><31>λ
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void USART_RS232_DEinit(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
USART_Cmd(USART1,DISABLE);
|
||||
USART_DeInit(USART1);
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //ʹ<><CAB9>PB<50>˿<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_400KHz; //IO<49><4F><EFBFBD>ٶ<EFBFBD>Ϊ400KHz
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_SetBits(GPIOA,GPIO_Pin_9);
|
||||
GPIO_SetBits(GPIOA,GPIO_Pin_10);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: USART_SDI_DEinit()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ø<EFBFBD>λ
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void USART_SDI_DEinit(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
USART_Cmd(USART1,DISABLE);
|
||||
USART_DeInit(USART1);
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); //ʹ<><CAB9>PB<50>˿<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_400KHz; //IO<49><4F><EFBFBD>ٶ<EFBFBD>Ϊ400KHz
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
GPIO_SetBits(GPIOB,GPIO_Pin_6);
|
||||
GPIO_SetBits(GPIOB,GPIO_Pin_7);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: USART1_IRQHandler()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
* <09><> <20><> <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART1_SDI_RX_BUF[]
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void USART1_IRQHandler(void)
|
||||
{
|
||||
u8 ucCh;//<2F><>ʱ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!Enable_SDI_RS232)
|
||||
{
|
||||
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
ucCh =USART_ReceiveData(USART1);
|
||||
ucCh=ucCh&0x7F;
|
||||
if((USART_SDI_RX_STA&(1<<15))==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
if(USART_SDI_RX_STA<USART1_SDI_REC_LEN) //<2F><><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
USART1_SDI_RX_BUF[USART_SDI_RX_STA++]=ucCh; //<2F><>¼<EFBFBD><C2BC><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ֵ
|
||||
}else
|
||||
{
|
||||
USART_SDI_RX_STA|=1<<15; //ǿ<>Ʊ<EFBFBD><C6B1>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/***************************** END OF FILE *********************************/
|
||||
|
||||
Reference in New Issue
Block a user