mirror of
https://gitee.com/lzc56/MiaoUI.git
synced 2025-07-18 17:52:09 +00:00
160 lines
4.0 KiB
C
160 lines
4.0 KiB
C
![]() |
#include "bsp_usart.h"
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NVIC
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static void NVIC_Configuration(void)
|
|||
|
{
|
|||
|
NVIC_InitTypeDef NVIC_InitStructure;
|
|||
|
|
|||
|
/* Ƕ<><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϿ<D0B6><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
|
|||
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>USARTΪ<54>ж<EFBFBD>Դ */
|
|||
|
NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>*/
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD> */
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
|||
|
/* ʹ<><CAB9><EFBFBD>ж<EFBFBD> */
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
|||
|
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NVIC */
|
|||
|
NVIC_Init(&NVIC_InitStructure);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART GPIO <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void USART_Config(void)
|
|||
|
{
|
|||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|||
|
USART_InitTypeDef USART_InitStructure;
|
|||
|
|
|||
|
// <20><EFBFBD><F2BFAAB4><EFBFBD>GPIO<49><4F>ʱ<EFBFBD><CAB1>
|
|||
|
DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
|
|||
|
|
|||
|
// <20><EFBFBD><F2BFAAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
|
|||
|
|
|||
|
// <20><>USART Tx<54><78>GPIO<49><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>츴<EFBFBD><ECB8B4>ģʽ
|
|||
|
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
|
|||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|||
|
GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);
|
|||
|
|
|||
|
// <20><>USART Rx<52><78>GPIO<49><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
|
|||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|||
|
GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
|
|||
|
|
|||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4>ڵĹ<DAB5><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
|
|||
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>
|
|||
|
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
|||
|
// <20><><EFBFBD><EFBFBD>ֹͣλ
|
|||
|
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
|||
|
// <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λ
|
|||
|
USART_InitStructure.USART_Parity = USART_Parity_No ;
|
|||
|
// <20><><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
|||
|
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>շ<EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
|||
|
// <20><><EFBFBD>ɴ<EFBFBD><C9B4>ڵij<DAB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
USART_Init(DEBUG_USARTx, &USART_InitStructure);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
NVIC_Configuration();
|
|||
|
|
|||
|
// ʹ<>ܴ<EFBFBD><DCB4>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
|
|||
|
|
|||
|
// ʹ<>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
USART_Cmd(DEBUG_USARTx, ENABLE);
|
|||
|
}
|
|||
|
|
|||
|
/***************** <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD> **********************/
|
|||
|
void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݵ<EFBFBD>USART */
|
|||
|
USART_SendData(pUSARTx,ch);
|
|||
|
|
|||
|
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD>Ϊ<EFBFBD><CEAA> */
|
|||
|
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
|
|||
|
}
|
|||
|
|
|||
|
/****************** <20><><EFBFBD><EFBFBD>8λ<38><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ************************/
|
|||
|
void Usart_SendArray( USART_TypeDef * pUSARTx, uint8_t *array, uint16_t num)
|
|||
|
{
|
|||
|
uint8_t i;
|
|||
|
|
|||
|
for(i=0; i<num; i++)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݵ<EFBFBD>USART */
|
|||
|
Usart_SendByte(pUSARTx,array[i]);
|
|||
|
|
|||
|
}
|
|||
|
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
|
|||
|
}
|
|||
|
|
|||
|
/***************** <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> **********************/
|
|||
|
void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
|
|||
|
{
|
|||
|
unsigned int k=0;
|
|||
|
do
|
|||
|
{
|
|||
|
Usart_SendByte( pUSARTx, *(str + k) );
|
|||
|
k++;
|
|||
|
} while(*(str + k)!='\0');
|
|||
|
|
|||
|
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
|
|||
|
{}
|
|||
|
}
|
|||
|
|
|||
|
/***************** <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>16λ<36><CEBB> **********************/
|
|||
|
void Usart_SendHalfWord( USART_TypeDef * pUSARTx, uint16_t ch)
|
|||
|
{
|
|||
|
uint8_t temp_h, temp_l;
|
|||
|
|
|||
|
/* ȡ<><C8A1><EFBFBD>߰<EFBFBD>λ */
|
|||
|
temp_h = (ch&0XFF00)>>8;
|
|||
|
/* ȡ<><C8A1><EFBFBD>Ͱ<EFBFBD>λ */
|
|||
|
temp_l = ch&0XFF;
|
|||
|
|
|||
|
/* <20><><EFBFBD>߰<CDB8>λ */
|
|||
|
USART_SendData(pUSARTx,temp_h);
|
|||
|
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
|
|||
|
|
|||
|
/* <20><><EFBFBD>͵Ͱ<CDB5>λ */
|
|||
|
USART_SendData(pUSARTx,temp_l);
|
|||
|
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
|
|||
|
}
|
|||
|
|
|||
|
///<2F>ض<EFBFBD><D8B6><EFBFBD>c<EFBFBD>⺯<EFBFBD><E2BAAF>printf<74><66><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>printf<74><66><EFBFBD><EFBFBD>
|
|||
|
int fputc(int ch, FILE *f)
|
|||
|
{
|
|||
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
|
|||
|
|
|||
|
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
|
|||
|
|
|||
|
return (ch);
|
|||
|
}
|
|||
|
|
|||
|
///<2F>ض<EFBFBD><D8B6><EFBFBD>c<EFBFBD>⺯<EFBFBD><E2BAAF>scanf<6E><66><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>scanf<6E><66>getchar<61>Ⱥ<EFBFBD><C8BA><EFBFBD>
|
|||
|
int fgetc(FILE *f)
|
|||
|
{
|
|||
|
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
|
|||
|
|
|||
|
return (int)USART_ReceiveData(DEBUG_USARTx);
|
|||
|
}
|
|||
|
|