Basic I2C functionality
This commit is contained in:
@@ -12,13 +12,29 @@ namespace driver::usart {
|
||||
Usart::Usart(USART_TypeDef* usart, uint32_t baudRate, uint32_t wordLength, uint32_t stopBits,
|
||||
uint32_t parity, uint32_t mode, uint32_t hwFlowCtl, uint32_t overSampling)
|
||||
: mHandle{.Instance = usart,
|
||||
.Init{.BaudRate = baudRate,
|
||||
.WordLength = wordLength,
|
||||
.StopBits = stopBits,
|
||||
.Parity = parity,
|
||||
.Mode = mode,
|
||||
.HwFlowCtl = hwFlowCtl,
|
||||
.OverSampling = overSampling}} {}
|
||||
.Init{
|
||||
.BaudRate = baudRate,
|
||||
.WordLength = wordLength,
|
||||
.StopBits = stopBits,
|
||||
.Parity = parity,
|
||||
.Mode = mode,
|
||||
.HwFlowCtl = hwFlowCtl,
|
||||
.OverSampling = overSampling,
|
||||
},
|
||||
.pTxBuffPtr = nullptr,
|
||||
.TxXferSize = 0,
|
||||
.TxXferCount = 0,
|
||||
.pRxBuffPtr = nullptr,
|
||||
.RxXferSize = 0,
|
||||
.RxXferCount = 0,
|
||||
.ReceptionType = HAL_UART_RECEPTION_STANDARD,
|
||||
.RxEventType = HAL_UART_RXEVENT_TC,
|
||||
.hdmatx = nullptr,
|
||||
.hdmarx = nullptr,
|
||||
.Lock = HAL_UNLOCKED,
|
||||
.gState = HAL_UART_STATE_RESET,
|
||||
.RxState = HAL_UART_STATE_RESET,
|
||||
.ErrorCode = 0} {}
|
||||
|
||||
bool Usart::init() {
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
@@ -38,7 +54,7 @@ bool Usart::init() {
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
}
|
||||
|
||||
return HAL_UART_Init(&mHandle) != HAL_OK;
|
||||
return HAL_UART_Init(&mHandle) == HAL_OK;
|
||||
}
|
||||
|
||||
void Usart::deinit() {
|
||||
@@ -60,14 +76,9 @@ void Usart::println(const std::string_view str) {
|
||||
}
|
||||
|
||||
void Usart::tx(const std::string_view range) {
|
||||
for (uint32_t pt{0}; pt <= range.size(); pt += TX_BUFSIZE) {
|
||||
uint8_t txLen{TX_BUFSIZE};
|
||||
if (range.length() < TX_BUFSIZE) {
|
||||
txLen = range.length();
|
||||
}
|
||||
HAL_UART_Transmit(&mHandle, reinterpret_cast<const uint8_t*>(range.begin() + pt), txLen,
|
||||
TX_TIMEOUT_MS);
|
||||
}
|
||||
|
||||
HAL_UART_Transmit(&mHandle, reinterpret_cast<const uint8_t*>(range.begin()), range.size(),
|
||||
TX_TIMEOUT_MS);
|
||||
};
|
||||
|
||||
} // namespace driver::usart
|
Reference in New Issue
Block a user