Browse Source

两路雷达数据发送

master
binsir 4 years ago
parent
commit
207ec8c06c
  1. 104
      App/freertos_action.c
  2. 16
      App/freertos_action.h
  3. 65
      BSP/bsp_common.c
  4. 7
      BSP/bsp_common.h
  5. 8
      BSP/custom_data_def.h
  6. 45
      BSP/insifhtica_QOAR1271.c
  7. 6
      Core/Inc/main.h
  8. 1
      Core/Inc/stm32f1xx_it.h
  9. 5
      Core/Src/dma.c
  10. 59
      Core/Src/freertos.c
  11. 15
      Core/Src/stm32f1xx_it.c
  12. 22
      Core/Src/usart.c
  13. 4
      MDK-ARM/WaterLidar.uvprojx
  14. 26
      WaterLidar.ioc

104
App/freertos_action.c

@ -1,21 +1,14 @@ @@ -1,21 +1,14 @@
/*
* @Author: your name
* @Date: 2021-06-26 15:37:21
* @LastEditTime: 2021-07-15 08:36:21
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \warter_rader\App\freertos_action.c
*/
#include "freertos_action.h"
void send_uavcan_proximity(uavcan_proximity_t *data);
void task_usart_rev_action(void)
{
usart_data_t data = {0};
// uint8_t data_uart;
osStatus_t os_status;
osDelay(5000);
request_QOAR1271_data();
active_uasrt_irq();
for(;;)
{
if (usart_rev_queueHandle != NULL)
@ -96,23 +89,78 @@ void task_default_action(void) @@ -96,23 +89,78 @@ void task_default_action(void)
osMessageQueuePut(uavcan_send_queueHandle,&send_data,0,10);
}
}
// if (last_send_proximity_tick + 200 < HAL_GetTick())
// {
// last_send_proximity_tick = HAL_GetTick();
// if (uavcan_send_queueHandle != NULL)
// {
// uavcan_send_data_t send_data = {0};
// send_data.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID;
// uavcan_proximity_t data = {0};
// data.d0 = 200;
// data.d45 = 300;
// data.d315 = 400;
// data.d135 = 500;
// memcpy(&send_data.content.node_state, &data, sizeof(uavcan_node_status_t));
// osMessageQueuePut(uavcan_send_queueHandle, &send_data, 0, 10);
// }
// }
osDelay(200);
}
}
void task_usart_send(void)
{
osDelay(5000);
request_QOAR1271_data();
active_uasrt_irq(1);
active_uasrt_irq(2);
for (;;)
{
osDelay(1000);
}
}
void task_proximity(void)
{
proximity_data_t proximity1 ={0};
proximity_data_t proximity2 ={0};
osStatus_t os_p1 =osError;
osStatus_t os_p2 =osError;
for (;;)
{
if (proximity1_queueHandle != NULL && proximity2_queueHandle != NULL)
{
os_p1 = osMessageQueueGet(proximity1_queueHandle, &proximity1, NULL, 100);
os_p2 = osMessageQueueGet(proximity2_queueHandle, &proximity2, NULL, 100);
if ((os_p1 == osOK) && (os_p2 == osOK))
{
uavcan_proximity_t data = {0};
data.d0 = min(proximity1.d0, proximity2.d0);
data.d315 = proximity1.d_left;
data.d45 = proximity2.d_left;
send_uavcan_proximity(&data);
}
else
{
if (os_p1 == osOK) //左边的雷达是反的
{
uavcan_proximity_t data = {0};
data.d0 = proximity1.d0;
data.d315 = proximity1.d_right;
data.d45 = proximity1.d_left;
send_uavcan_proximity(&data);
}
else if (os_p2 == osOK)
{
uavcan_proximity_t data = {0};
data.d0 = proximity2.d0;
data.d315 = proximity2.d_left;
data.d45 = proximity2.d_right;
send_uavcan_proximity(&data);
}
}
}
}
}
uint16_t min(uint16_t one, uint16_t two)
{
return one < two ? one : two;
}
void send_uavcan_proximity(uavcan_proximity_t *data)
{
uavcan_send_data_t msg = {0};
if (uavcan_send_queueHandle != NULL)
{
msg.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID;
memcpy(&msg.content.proximity, data, sizeof(uavcan_proximity_t));
osMessageQueuePut(uavcan_send_queueHandle, &msg, NULL, 10U);
}
}

16
App/freertos_action.h

@ -8,10 +8,26 @@ extern "C" @@ -8,10 +8,26 @@ extern "C"
#include "main.h"
extern osMessageQueueId_t uavcan_rev_queueHandle;
extern osMessageQueueId_t usart_rev_queueHandle;
extern osMessageQueueId_t uavcan_send_queueHandle;
extern osMessageQueueId_t depth_data_queueHandle;
extern osMessageQueueId_t proximity1_queueHandle;
extern osMessageQueueId_t proximity2_queueHandle;
extern osMutexId_t uavcan_send_mutexHandle;
extern osMutexId_t radar_parse_mutexHandle;
void task_usart_rev_action(void);
void task_uavcan_rev_action(void);
void task_uavcan_send_action(void);
void task_default_action(void);
void task_usart2_rev_action(void);
void task_usart_send(void);
void task_proximity(void);
uint16_t min(uint16_t one, uint16_t two);
#ifdef __cplusplus
}
#endif

65
BSP/bsp_common.c

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-06-01 17:04:59
* @LastEditTime: 2021-07-14 14:39:56
* @LastEditTime: 2021-08-10 17:28:33
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \flow-radar-convertor\BSP\bsp_common.c
@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
#include "stdarg.h"
uint8_t hart1_rev_buff[BUFFER_SIZE];
uint8_t hart2_rev_buff[BUFFER_SIZE];
uint32_t last_usart1_rev_tick = 0;
extern DMA_HandleTypeDef hdma_usart1_rx;
extern DMA_HandleTypeDef hdma_usart1_tx;
@ -50,33 +51,42 @@ void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan) @@ -50,33 +51,42 @@ void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
//-----------usart funtion-------
void active_uasrt_irq(void)
void active_uasrt_irq(uint8_t instance)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)hart1_rev_buff, BUFFER_SIZE);
// __HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);
// HAL_UART_Receive_IT(&huart1, &usart_rev_data, 1);
switch (instance)
{
case 1:
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)hart1_rev_buff, BUFFER_SIZE);
break;
case 2:
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, (uint8_t *)hart2_rev_buff, BUFFER_SIZE);
break;
default:
break;
}
}
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
if (huart1.Instance == USART1)
if (huart->Instance == USART1)
{
// my_printf("err tick:%u \r\n", HAL_GetTick());
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)hart1_rev_buff, BUFFER_SIZE);
}
else if (huart->Instance == USART2)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, (uint8_t *)hart2_rev_buff, BUFFER_SIZE);
}
}
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
// uint8_t data_length = BUFFER_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);
// my_printf("tick:%u,rx-size:%u\r\n", HAL_GetTick(), Size);
if (huart->Instance == USART1)
{
usart_data_t msg = {0};
msg.len = Size;
msg.usart_instance =1;
msg.usart_instance = 1;
if (Size > BUFFER_SIZE)
{
@ -91,20 +101,31 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) @@ -91,20 +101,31 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
memset(&hart1_rev_buff[0], 0, sizeof(hart1_rev_buff));
active_uasrt_irq();
active_uasrt_irq(1);
}
}
else if (huart->Instance == USART2)
{
usart_data_t msg = {0};
void my_printf(const char *format, ...)
{
static uint8_t _dbg_TXBuff[300];
memset(&_dbg_TXBuff[0], 0, sizeof(_dbg_TXBuff));
uint32_t length;
va_list args;
va_start(args, format);
length = vsnprintf((char *)_dbg_TXBuff, sizeof(_dbg_TXBuff) + 1, (char *)format, args);
va_end(args);
HAL_UART_Transmit_DMA(&huart2, _dbg_TXBuff, length);
msg.len = Size;
msg.usart_instance = 2;
if (Size > BUFFER_SIZE)
{
Size = BUFFER_SIZE;
}
memcpy(&msg.data, &hart2_rev_buff[0], msg.len);
if (usart_rev_queueHandle != NULL && msg.len > 0)
{
osMessageQueuePut(usart_rev_queueHandle, &msg, NULL, 0U);
}
memset(&hart2_rev_buff[0], 0, sizeof(hart2_rev_buff));
active_uasrt_irq(2);
}
}
//--------------------------------------------

7
BSP/bsp_common.h

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-06-01 17:05:15
* @LastEditTime: 2021-07-14 14:32:04
* @LastEditTime: 2021-08-10 17:10:46
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \flow-radar-convertor\BSP\bsp_common.h
@ -27,13 +27,10 @@ void close_timer(TIM_HandleTypeDef *htim); @@ -27,13 +27,10 @@ void close_timer(TIM_HandleTypeDef *htim);
void USAR_UART_IDLECallback(UART_HandleTypeDef *huart);
void USER_UART_IRQHandler(UART_HandleTypeDef *huart);
void action_do_uasrt1_sigle_data(uint8_t data);
void usart1_IRQ_action(void);
void active_uasrt_irq(void);
void active_uasrt_irq(uint8_t instance);
void action_rev_usart(uint8_t data);
void my_printf(const char *format, ...);
#ifdef __cplusplus
}

8
BSP/custom_data_def.h

@ -12,4 +12,12 @@ typedef struct @@ -12,4 +12,12 @@ typedef struct
uint8_t data[BUFFER_SIZE];
} usart_data_t;
typedef struct
{
uint16_t d0;
uint16_t d_left;
uint16_t d_right;
}proximity_data_t;
#endif /* CUSTOM_DATA_DEF_H */

45
BSP/insifhtica_QOAR1271.c

@ -6,6 +6,7 @@ uint16_t ar1271_rev_flag = 0; @@ -6,6 +6,7 @@ uint16_t ar1271_rev_flag = 0;
void parse_ar1271_data(usart_data_t *usart_data)
{
osSemaphoreAcquire(radar_parse_mutexHandle,30);
uint8_t buffer_count;
uint8_t buffer[LIDAR_360_SIZE] = {0};
uint8_t message_count;
@ -32,27 +33,29 @@ void parse_ar1271_data(usart_data_t *usart_data) @@ -32,27 +33,29 @@ void parse_ar1271_data(usart_data_t *usart_data)
// check if message has right CRC
if (crc_crc8(buffer, 19) == buffer[19])
{
proximity_data_t proximity_data = {0};
proximity_data.d0 = uint16_value(buffer[2], buffer[3]);
proximity_data.d_right = uint16_value(buffer[4], buffer[5]);
proximity_data.d_left = uint16_value(buffer[16], buffer[17]);
if (usart_data->usart_instance == 1)
{
uavcan_send_data_t msg = {0};
if (uavcan_send_queueHandle != NULL)
if (proximity1_queueHandle != NULL)
{
msg.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID;
uavcan_proximity_t data = {0};
data.sensor_type = SENSOR_TYPE_RADAR;
data.d0 = uint16_value(buffer[2], buffer[3]);
data.d45 = uint16_value(buffer[4], buffer[5]);
data.d315 = uint16_value(buffer[16], buffer[17]);
memcpy(&msg.content.proximity, &data, sizeof(uavcan_proximity_t));
osMessageQueuePut(uavcan_send_queueHandle, &msg, NULL, 10U);
osMessageQueuePut(proximity1_queueHandle, &proximity_data, 0, 10);
}
}
else if (usart_data->usart_instance == 2)
{
if (proximity2_queueHandle != NULL)
{
osMessageQueuePut(proximity2_queueHandle, &proximity_data, 0, 10);
}
}
//TODO action send_data;
}
}
}
osSemaphoreRelease(radar_parse_mutexHandle);
}
static const uint8_t crc8_table[] = {
@ -106,11 +109,19 @@ void request_QOAR1271_data(void) @@ -106,11 +109,19 @@ void request_QOAR1271_data(void)
uint8_t send_data4[5] = {0x00, 0x52, 0x03, 0x03, 0xC4};
HAL_UART_Transmit_DMA(&huart1, send_data1, 4);
osDelay(1000);
osDelay(500);
HAL_UART_Transmit_DMA(&huart2, send_data1, 4);
osDelay(500);
HAL_UART_Transmit_DMA(&huart1, send_data2, 4);
osDelay(1000);
osDelay(500);
HAL_UART_Transmit_DMA(&huart2, send_data2, 4);
osDelay(500);
HAL_UART_Transmit_DMA(&huart1, send_data3, 5);
osDelay(1000);
osDelay(500);
HAL_UART_Transmit_DMA(&huart2, send_data3, 5);
osDelay(500);
HAL_UART_Transmit_DMA(&huart1, send_data4, 5);
osDelay(1000);
osDelay(500);
HAL_UART_Transmit_DMA(&huart2, send_data4, 5);
osDelay(500);
}

6
Core/Inc/main.h

@ -45,11 +45,7 @@ extern "C" { @@ -45,11 +45,7 @@ extern "C" {
/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */
extern osMessageQueueId_t uavcan_rev_queueHandle;
extern osMessageQueueId_t usart_rev_queueHandle;
extern osMessageQueueId_t uavcan_send_queueHandle;
extern osMutexId_t uavcan_send_mutexHandle;
extern osMessageQueueId_t depth_data_queueHandle;
/* USER CODE END ET */
/* Exported constants --------------------------------------------------------*/

1
Core/Inc/stm32f1xx_it.h

@ -55,6 +55,7 @@ void UsageFault_Handler(void); @@ -55,6 +55,7 @@ void UsageFault_Handler(void);
void DebugMon_Handler(void);
void DMA1_Channel4_IRQHandler(void);
void DMA1_Channel5_IRQHandler(void);
void DMA1_Channel6_IRQHandler(void);
void DMA1_Channel7_IRQHandler(void);
void CAN1_RX1_IRQHandler(void);
void TIM2_IRQHandler(void);

5
Core/Src/dma.c

@ -46,8 +46,11 @@ void MX_DMA_Init(void) @@ -46,8 +46,11 @@ void MX_DMA_Init(void)
HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 9, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
/* DMA1_Channel5_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 6, 0);
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
/* DMA1_Channel6_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
/* DMA1_Channel7_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 10, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);

59
Core/Src/freertos.c

@ -80,9 +80,16 @@ const osThreadAttr_t UavcanSendTask_attributes = { @@ -80,9 +80,16 @@ const osThreadAttr_t UavcanSendTask_attributes = {
osThreadId_t UsartRevTaskHandle;
const osThreadAttr_t UsartRevTask_attributes = {
.name = "UsartRevTask",
.stack_size = 128 * 4,
.stack_size = 256 * 4,
.priority = (osPriority_t) osPriorityAboveNormal7,
};
/* Definitions for proximityTask */
osThreadId_t proximityTaskHandle;
const osThreadAttr_t proximityTask_attributes = {
.name = "proximityTask",
.stack_size = 256 * 4,
.priority = (osPriority_t) osPriorityAboveNormal4,
};
/* Definitions for uavcan_rev_queue */
osMessageQueueId_t uavcan_rev_queueHandle;
const osMessageQueueAttr_t uavcan_rev_queue_attributes = {
@ -98,11 +105,26 @@ osMessageQueueId_t usart_rev_queueHandle; @@ -98,11 +105,26 @@ osMessageQueueId_t usart_rev_queueHandle;
const osMessageQueueAttr_t usart_rev_queue_attributes = {
.name = "usart_rev_queue"
};
/* Definitions for proximity1_queue */
osMessageQueueId_t proximity1_queueHandle;
const osMessageQueueAttr_t proximity1_queue_attributes = {
.name = "proximity1_queue"
};
/* Definitions for proximity2_queue */
osMessageQueueId_t proximity2_queueHandle;
const osMessageQueueAttr_t proximity2_queue_attributes = {
.name = "proximity2_queue"
};
/* Definitions for uavcan_send_mutex */
osMutexId_t uavcan_send_mutexHandle;
const osMutexAttr_t uavcan_send_mutex_attributes = {
.name = "uavcan_send_mutex"
};
/* Definitions for radar_parse_mutex */
osMutexId_t radar_parse_mutexHandle;
const osMutexAttr_t radar_parse_mutex_attributes = {
.name = "radar_parse_mutex"
};
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
@ -114,6 +136,7 @@ void StartUavcanRevTask(void *argument); @@ -114,6 +136,7 @@ void StartUavcanRevTask(void *argument);
void StartTaskUsartSend(void *argument);
void StartUavcanSendTask(void *argument);
void StartUsartRevTask(void *argument);
void StartProximity(void *argument);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
@ -130,6 +153,9 @@ void MX_FREERTOS_Init(void) { @@ -130,6 +153,9 @@ void MX_FREERTOS_Init(void) {
/* creation of uavcan_send_mutex */
uavcan_send_mutexHandle = osMutexNew(&uavcan_send_mutex_attributes);
/* creation of radar_parse_mutex */
radar_parse_mutexHandle = osMutexNew(&radar_parse_mutex_attributes);
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */
@ -147,11 +173,17 @@ void MX_FREERTOS_Init(void) { @@ -147,11 +173,17 @@ void MX_FREERTOS_Init(void) {
uavcan_rev_queueHandle = osMessageQueueNew (10, sizeof(uavcan_rev_t), &uavcan_rev_queue_attributes);
/* creation of uavcan_send_queue */
uavcan_send_queueHandle = osMessageQueueNew (10, sizeof(uavcan_send_data_t), &uavcan_send_queue_attributes);
uavcan_send_queueHandle = osMessageQueueNew (5, sizeof(uavcan_send_data_t), &uavcan_send_queue_attributes);
/* creation of usart_rev_queue */
usart_rev_queueHandle = osMessageQueueNew (10, sizeof(usart_data_t), &usart_rev_queue_attributes);
/* creation of proximity1_queue */
proximity1_queueHandle = osMessageQueueNew (5, sizeof(proximity_data_t), &proximity1_queue_attributes);
/* creation of proximity2_queue */
proximity2_queueHandle = osMessageQueueNew (5, sizeof(proximity_data_t), &proximity2_queue_attributes);
/* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */
/* USER CODE END RTOS_QUEUES */
@ -172,6 +204,9 @@ void MX_FREERTOS_Init(void) { @@ -172,6 +204,9 @@ void MX_FREERTOS_Init(void) {
/* creation of UsartRevTask */
UsartRevTaskHandle = osThreadNew(StartUsartRevTask, NULL, &UsartRevTask_attributes);
/* creation of proximityTask */
proximityTaskHandle = osThreadNew(StartProximity, NULL, &proximityTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
@ -223,10 +258,7 @@ void StartTaskUsartSend(void *argument) @@ -223,10 +258,7 @@ void StartTaskUsartSend(void *argument)
{
/* USER CODE BEGIN StartTaskUsartSend */
/* Infinite loop */
for(;;)
{
osDelay(1000);
}
task_usart_send();
/* USER CODE END StartTaskUsartSend */
}
@ -260,6 +292,21 @@ void StartUsartRevTask(void *argument) @@ -260,6 +292,21 @@ void StartUsartRevTask(void *argument)
/* USER CODE END StartUsartRevTask */
}
/* USER CODE BEGIN Header_StartProximity */
/**
* @brief Function implementing the proximityTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartProximity */
void StartProximity(void *argument)
{
/* USER CODE BEGIN StartProximity */
/* Infinite loop */
task_proximity();
/* USER CODE END StartProximity */
}
/* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */

15
Core/Src/stm32f1xx_it.c

@ -60,6 +60,7 @@ extern CAN_HandleTypeDef hcan; @@ -60,6 +60,7 @@ extern CAN_HandleTypeDef hcan;
extern DMA_HandleTypeDef hdma_usart1_rx;
extern DMA_HandleTypeDef hdma_usart1_tx;
extern DMA_HandleTypeDef hdma_usart2_tx;
extern DMA_HandleTypeDef hdma_usart2_rx;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
extern TIM_HandleTypeDef htim2;
@ -194,6 +195,20 @@ void DMA1_Channel5_IRQHandler(void) @@ -194,6 +195,20 @@ void DMA1_Channel5_IRQHandler(void)
/* USER CODE END DMA1_Channel5_IRQn 1 */
}
/**
* @brief This function handles DMA1 channel6 global interrupt.
*/
void DMA1_Channel6_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel6_IRQn 0 */
/* USER CODE END DMA1_Channel6_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_usart2_rx);
/* USER CODE BEGIN DMA1_Channel6_IRQn 1 */
/* USER CODE END DMA1_Channel6_IRQn 1 */
}
/**
* @brief This function handles DMA1 channel7 global interrupt.
*/

22
Core/Src/usart.c

@ -29,6 +29,7 @@ UART_HandleTypeDef huart2; @@ -29,6 +29,7 @@ UART_HandleTypeDef huart2;
DMA_HandleTypeDef hdma_usart1_rx;
DMA_HandleTypeDef hdma_usart1_tx;
DMA_HandleTypeDef hdma_usart2_tx;
DMA_HandleTypeDef hdma_usart2_rx;
/* USART1 init function */
@ -72,7 +73,7 @@ void MX_USART2_UART_Init(void) @@ -72,7 +73,7 @@ void MX_USART2_UART_Init(void)
/* USER CODE END USART2_Init 1 */
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.BaudRate = 921600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
@ -196,8 +197,24 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) @@ -196,8 +197,24 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
__HAL_LINKDMA(uartHandle,hdmatx,hdma_usart2_tx);
/* USART2_RX Init */
hdma_usart2_rx.Instance = DMA1_Channel6;
hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart2_rx.Init.Mode = DMA_NORMAL;
hdma_usart2_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
if (HAL_DMA_Init(&hdma_usart2_rx) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart2_rx);
/* USART2 interrupt Init */
HAL_NVIC_SetPriority(USART2_IRQn, 8, 0);
HAL_NVIC_SetPriority(USART2_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(USART2_IRQn);
/* USER CODE BEGIN USART2_MspInit 1 */
@ -248,6 +265,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) @@ -248,6 +265,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
/* USART2 DMA DeInit */
HAL_DMA_DeInit(uartHandle->hdmatx);
HAL_DMA_DeInit(uartHandle->hdmarx);
/* USART2 interrupt Deinit */
HAL_NVIC_DisableIRQ(USART2_IRQn);

4
MDK-ARM/WaterLidar.uvprojx

@ -189,7 +189,7 @@ @@ -189,7 +189,7 @@
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
<useUlib>1</useUlib>
<useUlib>0</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
<nSecure>0</nSecure>
@ -339,7 +339,7 @@ @@ -339,7 +339,7 @@
<MiscControls></MiscControls>
<Define>USE_HAL_DRIVER,STM32F103xB</Define>
<Undefine></Undefine>
<IncludePath>../Core/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3; ../Drivers/CMSIS/Device/ST/STM32F1xx/Include; ../Drivers/CMSIS/Include; ..\BSP; ..\App; ..\UAVCAN; ..\UAVCAN\libcanard; ..\UAVCAN\libcanard\drivers\stm32</IncludePath>
<IncludePath>../Core/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM3; ../Drivers/CMSIS/Device/ST/STM32F1xx/Include; ../Drivers/CMSIS/Include; ..\BSP; ..\App; ..\UAVCAN; ..\UAVCAN\libcanard; ..\UAVCAN\libcanard\drivers\stm32</IncludePath>
</VariousControls>
</Cads>
<Aads>

26
WaterLidar.ioc

@ -10,7 +10,8 @@ CAN.Prescaler=4 @@ -10,7 +10,8 @@ CAN.Prescaler=4
Dma.Request0=USART1_RX
Dma.Request1=USART2_TX
Dma.Request2=USART1_TX
Dma.RequestsNb=3
Dma.Request3=USART2_RX
Dma.RequestsNb=4
Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART1_RX.0.Instance=DMA1_Channel5
Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
@ -29,6 +30,15 @@ Dma.USART1_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE @@ -29,6 +30,15 @@ Dma.USART1_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART1_TX.2.PeriphInc=DMA_PINC_DISABLE
Dma.USART1_TX.2.Priority=DMA_PRIORITY_MEDIUM
Dma.USART1_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.USART2_RX.3.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART2_RX.3.Instance=DMA1_Channel6
Dma.USART2_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART2_RX.3.MemInc=DMA_MINC_ENABLE
Dma.USART2_RX.3.Mode=DMA_NORMAL
Dma.USART2_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART2_RX.3.PeriphInc=DMA_PINC_DISABLE
Dma.USART2_RX.3.Priority=DMA_PRIORITY_VERY_HIGH
Dma.USART2_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.USART2_TX.1.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART2_TX.1.Instance=DMA1_Channel7
Dma.USART2_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
@ -40,9 +50,9 @@ Dma.USART2_TX.1.Priority=DMA_PRIORITY_MEDIUM @@ -40,9 +50,9 @@ Dma.USART2_TX.1.Priority=DMA_PRIORITY_MEDIUM
Dma.USART2_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
FREERTOS.FootprintOK=true
FREERTOS.IPParameters=Tasks01,Queues01,configTOTAL_HEAP_SIZE,configQUEUE_REGISTRY_SIZE,configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY,FootprintOK,Mutexes01
FREERTOS.Mutexes01=uavcan_send_mutex,Dynamic,NULL
FREERTOS.Queues01=uavcan_rev_queue,10,uavcan_rev_t,0,Dynamic,NULL,NULL;uavcan_send_queue,10,uavcan_send_data_t,0,Dynamic,NULL,NULL;usart_rev_queue,10,usart_data_t,0,Dynamic,NULL,NULL
FREERTOS.Tasks01=DefaultTask,24,256,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;UavcanRevTask,35,256,StartUavcanRevTask,Default,NULL,Dynamic,NULL,NULL;UsartSendTask,18,128,StartTaskUsartSend,Default,NULL,Dynamic,NULL,NULL;UavcanSendTask,36,512,StartUavcanSendTask,Default,NULL,Dynamic,NULL,NULL;UsartRevTask,39,128,StartUsartRevTask,Default,NULL,Dynamic,NULL,NULL
FREERTOS.Mutexes01=uavcan_send_mutex,Dynamic,NULL;radar_parse_mutex,Dynamic,NULL
FREERTOS.Queues01=uavcan_rev_queue,10,uavcan_rev_t,0,Dynamic,NULL,NULL;uavcan_send_queue,5,uavcan_send_data_t,0,Dynamic,NULL,NULL;usart_rev_queue,10,usart_data_t,0,Dynamic,NULL,NULL;proximity1_queue,5,proximity_data_t,0,Dynamic,NULL,NULL;proximity2_queue,5,proximity_data_t,0,Dynamic,NULL,NULL
FREERTOS.Tasks01=DefaultTask,24,256,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;UavcanRevTask,35,256,StartUavcanRevTask,Default,NULL,Dynamic,NULL,NULL;UsartSendTask,18,128,StartTaskUsartSend,Default,NULL,Dynamic,NULL,NULL;UavcanSendTask,36,512,StartUavcanSendTask,Default,NULL,Dynamic,NULL,NULL;UsartRevTask,39,256,StartUsartRevTask,Default,NULL,Dynamic,NULL,NULL;proximityTask,36,256,StartProximity,Default,NULL,Dynamic,NULL,NULL
FREERTOS.configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY=5
FREERTOS.configQUEUE_REGISTRY_SIZE=40
FREERTOS.configTOTAL_HEAP_SIZE=11264
@ -82,7 +92,8 @@ MxDb.Version=DB.6.0.30 @@ -82,7 +92,8 @@ MxDb.Version=DB.6.0.30
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.CAN1_RX1_IRQn=true\:7\:0\:true\:false\:true\:true\:true\:true
NVIC.DMA1_Channel4_IRQn=true\:9\:0\:true\:false\:true\:true\:false\:true
NVIC.DMA1_Channel5_IRQn=true\:6\:0\:true\:false\:true\:true\:false\:true
NVIC.DMA1_Channel5_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true
NVIC.DMA1_Channel6_IRQn=true\:6\:0\:true\:false\:true\:true\:false\:true
NVIC.DMA1_Channel7_IRQn=true\:10\:0\:true\:false\:true\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ForceEnableDMAVector=true
@ -100,7 +111,7 @@ NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true @@ -100,7 +111,7 @@ NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.TimeBase=TIM2_IRQn
NVIC.TimeBaseIP=TIM2
NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:8\:0\:true\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
@ -177,7 +188,8 @@ RCC.VCOOutput2Freq_Value=8000000 @@ -177,7 +188,8 @@ RCC.VCOOutput2Freq_Value=8000000
USART1.BaudRate=921600
USART1.IPParameters=VirtualMode,BaudRate
USART1.VirtualMode=VM_ASYNC
USART2.IPParameters=VirtualMode
USART2.BaudRate=921600
USART2.IPParameters=VirtualMode,BaudRate
USART2.VirtualMode=VM_ASYNC
VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2
VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2

Loading…
Cancel
Save