149 lines
5.4 KiB
C
149 lines
5.4 KiB
C
|
|
/**************** (C) COPYRIGHT 2023 ɽ<><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿƼ<DCBF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ *******************
|
|||
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Kaiser
|
|||
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> :
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
|
*********************************** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ ************************************
|
|||
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
|
********************************************************************************/
|
|||
|
|
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
*
|
|||
|
|
*******************************************************************************/
|
|||
|
|
|
|||
|
|
/* USER CODE BEGIN Header */
|
|||
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* @file usart.c
|
|||
|
|
* @brief This file provides code for the configuration
|
|||
|
|
* of the USART instances.
|
|||
|
|
******************************************************************************
|
|||
|
|
* @attention
|
|||
|
|
*
|
|||
|
|
* Copyright (c) 2022 STMicroelectronics.
|
|||
|
|
* All rights reserved.
|
|||
|
|
*
|
|||
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|||
|
|
* in the root directory of this software component.
|
|||
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|||
|
|
*
|
|||
|
|
******************************************************************************
|
|||
|
|
*/
|
|||
|
|
/* USER CODE END Header */
|
|||
|
|
/* Includes ------------------------------------------------------------------*/
|
|||
|
|
#include "stm32f10x.h"
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void BIOS_USART3_Init(void)
|
|||
|
|
{
|
|||
|
|
USART_TypeDef *USARTx = USART3;
|
|||
|
|
|
|||
|
|
SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);
|
|||
|
|
|
|||
|
|
// USART1 configured as follow:
|
|||
|
|
// - BaudRate = 9600 baud
|
|||
|
|
// - Word Length = 8 Bits
|
|||
|
|
// - One Stop Bit
|
|||
|
|
// - No parity
|
|||
|
|
// - Hardware flow control disabled (RTS and CTS signals)
|
|||
|
|
// - Receive disable and transmit enabled
|
|||
|
|
USARTx->BRR = SystemCoreClock / 9600u / 2u; /* 115200 bps */
|
|||
|
|
USARTx->CR1 = 0x0000u; /* 1 start bit, 8 data bits */
|
|||
|
|
USARTx->CR2 = 0x0000u; /* 1 stop bit */
|
|||
|
|
USARTx->CR3 = 0x0000u; /* no flow control */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_TE); /* enable TX */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_RE); /* enable TX */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_UE); /* Enable USARTx */
|
|||
|
|
USART_ITConfig(USART3, /*USART_IT_TXE |*/ USART_IT_RXNE, ENABLE);
|
|||
|
|
|
|||
|
|
/* Configure USART1 Rx (PA10) as input floating */
|
|||
|
|
/* Configure USART1 Tx (PA9) as alternate function push-pull */
|
|||
|
|
SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPBEN);
|
|||
|
|
MODIFY_REG(GPIOB->CRH, 0x0000FF00u, 0x00004B00u);
|
|||
|
|
|
|||
|
|
NVIC_EnableIRQ(USART3_IRQn);
|
|||
|
|
}
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> USART3<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>RS232<EFBFBD>շ<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART3_Send(uint8_t OutByte)
|
|||
|
|
{
|
|||
|
|
USART_TypeDef *USARTx = USART3;
|
|||
|
|
|
|||
|
|
while (!(READ_BIT(USARTx->SR, USART_SR_TXE))) {
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
USARTx->DR = OutByte;
|
|||
|
|
}
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> USART3<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>RS232<EFBFBD>շ<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t UART3_Received(void)
|
|||
|
|
{
|
|||
|
|
USART_TypeDef *USARTx = USART3;
|
|||
|
|
|
|||
|
|
while (!(READ_BIT(USARTx->SR, USART_SR_RXNE))) {
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return USARTx->DR;
|
|||
|
|
}
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void BIOS_USART2_Init(uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
USART_TypeDef *USARTx = USART2;
|
|||
|
|
|
|||
|
|
SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);
|
|||
|
|
|
|||
|
|
// USART1 configured as follow:
|
|||
|
|
// - BaudRate = 9600 baud
|
|||
|
|
// - Word Length = 8 Bits
|
|||
|
|
// - One Stop Bit
|
|||
|
|
// - No parity
|
|||
|
|
// - Hardware flow control disabled (RTS and CTS signals)
|
|||
|
|
// - Receive disable and transmit enabled
|
|||
|
|
USARTx->BRR = SystemCoreClock / baudrate / 2u; /* 115200 bps */
|
|||
|
|
USARTx->CR1 = 0x0000u; /* 1 start bit, 8 data bits */
|
|||
|
|
USARTx->CR2 = 0x0000u; /* 1 stop bit */
|
|||
|
|
USARTx->CR3 = 0x0000u; /* no flow control */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_TE); /* enable TX */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_RE); /* enable TX */
|
|||
|
|
SET_BIT(USARTx->CR1, USART_CR1_UE); /* Enable USARTx */
|
|||
|
|
|
|||
|
|
/* Configure USART1 Rx (PA10) as input floating */
|
|||
|
|
/* Configure USART1 Tx (PA9) as alternate function push-pull */
|
|||
|
|
SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPAEN);
|
|||
|
|
MODIFY_REG(GPIOA->CRL, 0x0000FF00u, 0x00004B00u);
|
|||
|
|
}
|
|||
|
|
/******************************** <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *************************************
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> USART2<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>TTL<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void USART2_Send(uint8_t OutByte)
|
|||
|
|
{
|
|||
|
|
USART_TypeDef *USARTx = USART2;
|
|||
|
|
|
|||
|
|
while (!(READ_BIT(USARTx->SR, USART_SR_TXE))) {
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
USARTx->DR = OutByte;
|
|||
|
|
}
|
|||
|
|
extern void delay_us(uint32_t us);
|
|||
|
|
|
|||
|
|
void USART2Print(uint8_t *buffer, uint8_t lenth)
|
|||
|
|
{
|
|||
|
|
uint8_t i;
|
|||
|
|
for (i = 0u; i < lenth; i++) {
|
|||
|
|
USART2_Send(*buffer++);
|
|||
|
|
|
|||
|
|
while (!READ_BIT(USART2->SR, USART_SR_TC))
|
|||
|
|
delay_us(50u);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/******** (C) COPYRIGHT 2023 ɽ<><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿƼ<DCBF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ **** End Of File ********/
|