working receive

This commit is contained in:
2023-02-17 19:19:11 +01:00
parent e313b8f2be
commit 2d3a358dfe
5 changed files with 36 additions and 23 deletions

View File

@@ -6,7 +6,7 @@ set(MAIN_SOURCE_FILE main.cpp)
set(CMAKE_INCLUDE_CURRENT_DIR TRUE) set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
set(HAL_COMP_LIST RCC GPIO CORTEX UART SPI) set(HAL_COMP_LIST RCC GPIO CORTEX UART SPI DMA)
set(CMSIS_COMP_LIST "") set(CMSIS_COMP_LIST "")
list(APPEND CMSIS_COMP_LIST STM32F1) list(APPEND CMSIS_COMP_LIST STM32F1)
@@ -31,6 +31,7 @@ add_executable(stm32-blinky-f1
uart_handler.cpp uart_handler.cpp
spi.cpp spi.cpp
rfm95.cpp rfm95.cpp
stm32f1xx_it.c
stm32f1xx_hal_conf.h stm32f1xx_hal_conf.h
) )
@@ -42,6 +43,7 @@ target_link_libraries(stm32-blinky-f1
HAL::STM32::F1::GPIO HAL::STM32::F1::GPIO
HAL::STM32::F1::CORTEX HAL::STM32::F1::CORTEX
HAL::STM32::F1::SPI HAL::STM32::F1::SPI
HAL::STM32::F1::DMA
CMSIS::STM32::F100RB CMSIS::STM32::F100RB
STM32::NoSys STM32::NoSys
) )
@@ -62,5 +64,3 @@ stm32_print_size_of_target(stm32-blinky-f1)
# STM32::NoSys # STM32::NoSys
#) #)
#stm32_print_size_of_target(stm32-blinky-f1) #stm32_print_size_of_target(stm32-blinky-f1)

View File

@@ -32,7 +32,7 @@ inline std::string_view get_loglevel_string(LogLevel level) {
class logging_adapter { class logging_adapter {
public: public:
virtual bool init(){} virtual bool init() { return true; }
virtual void log(std::string_view message) const = 0; virtual void log(std::string_view message) const = 0;
}; };
@@ -79,8 +79,8 @@ class log {
return; return;
} }
//std::stringstream msg; // std::stringstream msg;
//msg << get_loglevel_string(level) << ": " << message; // msg << get_loglevel_string(level) << ": " << message;
logger->log(get_loglevel_string(level)); logger->log(get_loglevel_string(level));
logger->log(": "); logger->log(": ");
logger->log(message); logger->log(message);

View File

@@ -1,4 +1,5 @@
#include <stm32f1xx_hal.h> #include <stm32f1xx_hal.h>
#include <stm32f1xx_hal_uart.h>
#include "logging.hpp" #include "logging.hpp"
#include "spi.hpp" #include "spi.hpp"
@@ -27,6 +28,22 @@ void SysTick_Handler(void) {
HAL_IncTick(); HAL_IncTick();
HAL_SYSTICK_IRQHandler(); HAL_SYSTICK_IRQHandler();
} }
void USART1_IRQHandler(void) {
HAL_UART_IRQHandler(&uart_interface::s_UARTHandle);
HAL_UART_Receive_IT(&uart_interface::s_UARTHandle, uart_interface::get_buf(),
1);
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
const char value = *reinterpret_cast<const char *>(uart_interface::get_buf());
if (value == '\r') {
HAL_GPIO_TogglePin(LED_PORT, LED2_PIN);
}
log::debug({&value, 1});
}
} }
void initGPIO() { void initGPIO() {
@@ -105,11 +122,9 @@ int main(void) {
while (1) { while (1) {
// RF95_setModeRx_Continuous(); // RF95_setModeRx_Continuous();
HAL_GPIO_WritePin(LED_PORT, LED1_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_PORT, LED1_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_PORT, LED2_PIN, GPIO_PIN_RESET);
// RF95_receive(LoRa_buff); // RF95_receive(LoRa_buff);
HAL_Delay(500); HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT, LED1_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(LED_PORT, LED1_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_PORT, LED2_PIN, GPIO_PIN_SET);
HAL_Delay(500); HAL_Delay(500);
// std::string_view msg{reinterpret_cast<char *>(LoRa_buff)}; // std::string_view msg{reinterpret_cast<char *>(LoRa_buff)};

View File

@@ -1 +1,5 @@
#include "uart_handler.hpp" #include "uart_handler.hpp"
template <>
// uint8_t* uart_interface::rx_buff = new uint8_t[10];
uint8_t uart_interface::rx_buff = 0;

View File

@@ -4,6 +4,8 @@
#include <string_view> #include <string_view>
#include "stm32f1xx_it.h"
constexpr auto UART_PORT = GPIOA_BASE; constexpr auto UART_PORT = GPIOA_BASE;
#define UARTPORT GPIOA #define UARTPORT GPIOA
#define UARTTX_PIN GPIO_PIN_9 #define UARTTX_PIN GPIO_PIN_9
@@ -37,8 +39,8 @@ struct uart_handler {
HAL_GPIO_Init(reinterpret_cast<GPIO_TypeDef*>(port), &ua_rx); HAL_GPIO_Init(reinterpret_cast<GPIO_TypeDef*>(port), &ua_rx);
/* USART1 interrupt Init */ /* USART1 interrupt Init */
// HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
// HAL_NVIC_EnableIRQ(USART1_IRQn); HAL_NVIC_EnableIRQ(USART1_IRQn);
} }
static bool enable_oscillators() { static bool enable_oscillators() {
@@ -87,7 +89,7 @@ struct uart_handler {
return false; return false;
} }
// result = HAL_UART_Receive_IT(&s_UARTHandle, rx_buff, rx_buff_size); result = HAL_UART_Receive_IT(&s_UARTHandle, &rx_buff, rx_buff_size);
return result == HAL_OK; return result == HAL_OK;
} }
@@ -122,15 +124,16 @@ struct uart_handler {
static UART_HandleTypeDef s_UARTHandle; static UART_HandleTypeDef s_UARTHandle;
static uint8_t* get_buf() { return rx_buff; } static uint8_t* get_buf() { return &rx_buff; }
static const uint8_t* get_buf_c() { return &rx_buff; }
private: private:
static constexpr auto pin_tx = PinTX; static constexpr auto pin_tx = PinTX;
static constexpr auto pin_rx = PinRX; static constexpr auto pin_rx = PinRX;
static constexpr auto port = Port; static constexpr auto port = Port;
static constexpr auto usart_base = UsartBase; static constexpr auto usart_base = UsartBase;
static constexpr size_t rx_buff_size = 10; static constexpr size_t rx_buff_size = 1;
static inline uint8_t* rx_buff; static uint8_t rx_buff;
}; };
template <uint16_t PinTX, uint16_t PinRX, uint32_t Port, uint32_t UsartBase> template <uint16_t PinTX, uint16_t PinRX, uint32_t Port, uint32_t UsartBase>
@@ -139,12 +142,3 @@ UART_HandleTypeDef uart_handler<PinTX, PinRX, Port, UsartBase>::s_UARTHandle =
using uart_interface = using uart_interface =
uart_handler<UARTTX_PIN, UARTRX_PIN, UART_PORT, USART1_BASE>; uart_handler<UARTTX_PIN, UARTRX_PIN, UART_PORT, USART1_BASE>;
template <>
uint8_t* uart_interface::rx_buff = new uint8_t[10];
// inline void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) {
// static int count = 0;
// count++;
// HAL_UART_Receive_IT(huart, uart_interface::get_buf(), 10);
// }