Browse Source

修改cmsis_rtos的队列推送不会覆盖问题;keil工程.bin文件名生成更改;can.c:can_filter_none返回值修正

uav_8_target
binsir 3 years ago
parent
commit
bc6128bad7
  1. 40
      App/freertos_action.c
  2. 2
      App/freertos_action.h
  3. 6
      BSP/bsp_common.c
  4. 14
      BSP/insifhtica_QOAR1271.c
  5. 5
      Core/Src/can.c
  6. 15
      MDK-ARM/proximity_uavcan_converter.uvprojx
  7. 10
      MDK-ARM/startup_stm32f103xb.lst
  8. 2
      UAVCAN/uavcan.c

40
App/freertos_action.c

@ -4,6 +4,8 @@ @@ -4,6 +4,8 @@
extern uint32_t last_rev_usart1_tick;
extern uint32_t last_rev_usart2_tick;
osStatus_t handleQueuePutErrorResource(osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout);
void task_usart_rev_action(void)
{
usart_data_t data = {0};
@ -100,7 +102,7 @@ void task_default_action(void) @@ -100,7 +102,7 @@ void task_default_action(void)
send_data.id = UAVCAN_NODE_STATUS_DATA_TYPE_ID;
uavcan_node_status_t data = {0};
memcpy(&send_data.content.node_state, &data, sizeof(uavcan_node_status_t));
osMessageQueuePut(uavcan_send_queueHandle, &send_data, 0, 10);
myOsMessageQueuePut(uavcan_send_queueHandle, &send_data, 0, 10);
}
}
osDelay(200);
@ -201,4 +203,40 @@ uint16_t min(uint16_t one, uint16_t two) @@ -201,4 +203,40 @@ uint16_t min(uint16_t one, uint16_t two)
return one < two ? one : two;
}
osStatus_t myOsMessageQueuePut(osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
{
osStatus_t osStatus = osMessageQueuePut(mq_id, msg_ptr, msg_prio, timeout);
switch (osStatus)
{
case osOK:
return osOK;
case osErrorTimeout:
return osErrorTimeout;
case osErrorResource:
return handleQueuePutErrorResource(mq_id, msg_ptr, msg_prio, timeout);
case osErrorParameter:
return osMessageQueuePut(mq_id, msg_ptr, msg_prio, 0);
default:
return osError;
}
}
osStatus_t handleQueuePutErrorResource(osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
{
uint32_t size = osMessageQueueGetMsgSize(mq_id);
if (size <= 0)
{
size = 100;
}
uint8_t *temp = pvPortMalloc(size);
osStatus_t osStatus = osMessageQueueGet(mq_id, temp, &msg_prio, timeout);
osStatus = myOsMessageQueuePut(mq_id, temp, msg_prio, timeout);
vPortFree(temp);
// osMemoryPoolId_t mpid_MemPool = osMemoryPoolNew(1, size, NULL);
// uint8_t *temp = osMemoryPoolAlloc(mpid_MemPool, 0);
// osStatus_t osStatus = osMessageQueueGet(mq_id, temp, &msg_prio, timeout);
// osStatus = myOsMessageQueuePut(mq_id, temp, msg_prio, timeout);
// osStatus = osMemoryPoolFree(mpid_MemPool, temp);
// osStatus = osMemoryPoolDelete(mpid_MemPool);
return osStatus;
}

2
App/freertos_action.h

@ -27,7 +27,7 @@ void task_usart2_rev_action(void); @@ -27,7 +27,7 @@ void task_usart2_rev_action(void);
void task_usart_send(void);
void task_proximity(void);
uint16_t min(uint16_t one, uint16_t two);
osStatus_t myOsMessageQueuePut(osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout);
#ifdef __cplusplus
}
#endif

6
BSP/bsp_common.c

@ -56,7 +56,7 @@ void avtion_do_can_back(CAN_HandleTypeDef *hcan) @@ -56,7 +56,7 @@ void avtion_do_can_back(CAN_HandleTypeDef *hcan)
{
if (uavcan_rev_queueHandle != NULL)
{
osStatus status = osMessageQueuePut(uavcan_rev_queueHandle, &can_rev, 0U, 0U);
osStatus status = myOsMessageQueuePut(uavcan_rev_queueHandle, &can_rev, 0U, 0U);
}
}
}
@ -106,7 +106,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) @@ -106,7 +106,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
if (usart_rev_queueHandle != NULL && msg.len > 0)
{
osMessageQueuePut(usart_rev_queueHandle, &msg, NULL, 0U);
myOsMessageQueuePut(usart_rev_queueHandle, &msg, NULL, 0U);
}
memset(&hart1_rev_buff[0], 0, sizeof(hart1_rev_buff));
@ -128,7 +128,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) @@ -128,7 +128,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
if (usart_rev_queueHandle != NULL && msg.len > 0)
{
osMessageQueuePut(usart_rev_queueHandle, &msg, NULL, 0U);
myOsMessageQueuePut(usart_rev_queueHandle, &msg, NULL, 0U);
}
memset(&hart2_rev_buff[0], 0, sizeof(hart2_rev_buff));

14
BSP/insifhtica_QOAR1271.c

@ -84,14 +84,14 @@ void decode_ar1271(char c,uint8_t index){ @@ -84,14 +84,14 @@ void decode_ar1271(char c,uint8_t index){
{
if (proximity1_queueHandle != NULL)
{
osMessageQueuePut(proximity1_queueHandle, &proximity_data, 0, 10);
myOsMessageQueuePut(proximity1_queueHandle, &proximity_data, 0, 10);
}
}
else if (index == 2)
{
if (proximity2_queueHandle != NULL)
{
osMessageQueuePut(proximity2_queueHandle, &proximity_data, 0, 10);
myOsMessageQueuePut(proximity2_queueHandle, &proximity_data, 0, 10);
}
}
}
@ -208,7 +208,7 @@ void data_process(void){ @@ -208,7 +208,7 @@ void data_process(void){
data.d315 = range_arr[7];
if (proximity1_queueHandle != NULL)
{
osMessageQueuePut(proximity1_queueHandle, &data, 0, 10);
myOsMessageQueuePut(proximity1_queueHandle, &data, 0, 10);
}
for (uint8_t i = 0; i < 8; i++)
{
@ -317,7 +317,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index) @@ -317,7 +317,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[1] = 0x11;
send_data.data[2] = 0x02;
send_data.data[3] = 0x4C;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break;
case 2:
@ -326,7 +326,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index) @@ -326,7 +326,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[1] = 0x31;
send_data.data[2] = 0x03;
send_data.data[3] = 0xE5;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break;
case 3:
@ -336,7 +336,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index) @@ -336,7 +336,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[2] = 0x02;
send_data.data[3] = 0x01;
send_data.data[4] = 0xDF;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break;
case 4:
@ -346,7 +346,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index) @@ -346,7 +346,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[2] = 0x03;
send_data.data[3] = 0x03;
send_data.data[4] = 0xC4;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break;
default:
break;

5
Core/Src/can.c

@ -174,9 +174,6 @@ HAL_StatusTypeDef can_filter_none(void) @@ -174,9 +174,6 @@ HAL_StatusTypeDef can_filter_none(void)
filter1.FilterFIFOAssignment = CAN_FILTER_FIFO0; //FIFO0
filter1.FilterActivation = ENABLE;
if (HAL_CAN_ConfigFilter(&hcan, &filter1) != HAL_OK)
{
Error_Handler();
}
return HAL_CAN_ConfigFilter(&hcan, &filter1);
}
/* USER CODE END 1 */

15
MDK-ARM/proximity_uavcan_converter.uvprojx

@ -10,13 +10,13 @@ @@ -10,13 +10,13 @@
<TargetName>proximity_uavcan_converter</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32F103T8</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F1xx_DFP.2.2.0</PackID>
<PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@ -82,7 +82,7 @@ @@ -82,7 +82,7 @@
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>fromelf --bin -o "$Lpriximity.bin" "#L"</UserProg1Name>
<UserProg1Name>fromelf --bin -o "$Lzrzk.proxi.bin" "#L"</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@ -185,6 +185,7 @@ @@ -185,6 +185,7 @@
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@ -351,7 +352,7 @@ @@ -351,7 +352,7 @@
<NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc>
<useXO>0</useXO>
<uClangAs>0</uClangAs>
<ClangAsOpt>4</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
@ -565,7 +566,7 @@ @@ -565,7 +566,7 @@
<NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc>
<useXO>2</useXO>
<uClangAs>2</uClangAs>
<ClangAsOpt>0</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
@ -1479,7 +1480,7 @@ @@ -1479,7 +1480,7 @@
<NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc>
<useXO>2</useXO>
<uClangAs>2</uClangAs>
<ClangAsOpt>0</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
@ -1609,7 +1610,7 @@ @@ -1609,7 +1610,7 @@
<NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc>
<useXO>2</useXO>
<uClangAs>2</uClangAs>
<ClangAsOpt>0</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>

10
MDK-ARM/startup_stm32f103xb.lst

@ -476,11 +476,11 @@ ARM Macro Assembler Page 8 @@ -476,11 +476,11 @@ ARM Macro Assembler Page 8
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
ork --depend=proximity_uavcan_converter\startup_stm32f103xb.d -oproximity_uavca
n_converter\startup_stm32f103xb.o -I..\Core\Inc -I.\RTE\_proximity_uavcan_conve
rter -I"D:\Program Files (x86)\Keil_v5\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Inc
lude" -I"D:\Program Files (x86)\Keil_v5\Arm\Packs\Keil\STM32F1xx_DFP\2.2.0\Devi
ce\Include" --predefine="__UVISION_VERSION SETA 529" --predefine="_RTE_ SETA 1"
--predefine="STM32F10X_MD SETA 1" --list=startup_stm32f103xb.lst startup_stm32
f103xb.s
rter -IC:\Users\ZRZK\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include
-IC:\Users\ZRZK\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Includ
e --predefine="__UVISION_VERSION SETA 536" --predefine="_RTE_ SETA 1" --predefi
ne="STM32F10X_MD SETA 1" --predefine="_RTE_ SETA 1" --list=startup_stm32f103xb.
lst startup_stm32f103xb.s

2
UAVCAN/uavcan.c

@ -457,7 +457,7 @@ void send_uavcan_proximity(uavcan_proximity_t *data) @@ -457,7 +457,7 @@ void send_uavcan_proximity(uavcan_proximity_t *data)
{
msg.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID;
memcpy(&msg.content.proximity, data, sizeof(uavcan_proximity_t));
osMessageQueuePut(uavcan_send_queueHandle, &msg, NULL, 10U);
myOsMessageQueuePut(uavcan_send_queueHandle, &msg, NULL, 10U);
}
}

Loading…
Cancel
Save