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 @@
extern uint32_t last_rev_usart1_tick; extern uint32_t last_rev_usart1_tick;
extern uint32_t last_rev_usart2_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) void task_usart_rev_action(void)
{ {
usart_data_t data = {0}; usart_data_t data = {0};
@ -100,7 +102,7 @@ void task_default_action(void)
send_data.id = UAVCAN_NODE_STATUS_DATA_TYPE_ID; send_data.id = UAVCAN_NODE_STATUS_DATA_TYPE_ID;
uavcan_node_status_t data = {0}; uavcan_node_status_t data = {0};
memcpy(&send_data.content.node_state, &data, sizeof(uavcan_node_status_t)); 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); osDelay(200);
@ -201,4 +203,40 @@ uint16_t min(uint16_t one, uint16_t two)
return one < two ? one : 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);
void task_usart_send(void); void task_usart_send(void);
void task_proximity(void); void task_proximity(void);
uint16_t min(uint16_t one, uint16_t two); 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 #ifdef __cplusplus
} }
#endif #endif

6
BSP/bsp_common.c

@ -56,7 +56,7 @@ void avtion_do_can_back(CAN_HandleTypeDef *hcan)
{ {
if (uavcan_rev_queueHandle != NULL) 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)
if (usart_rev_queueHandle != NULL && msg.len > 0) 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)); memset(&hart1_rev_buff[0], 0, sizeof(hart1_rev_buff));
@ -128,7 +128,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
if (usart_rev_queueHandle != NULL && msg.len > 0) 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)); 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){
{ {
if (proximity1_queueHandle != NULL) if (proximity1_queueHandle != NULL)
{ {
osMessageQueuePut(proximity1_queueHandle, &proximity_data, 0, 10); myOsMessageQueuePut(proximity1_queueHandle, &proximity_data, 0, 10);
} }
} }
else if (index == 2) else if (index == 2)
{ {
if (proximity2_queueHandle != NULL) 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){
data.d315 = range_arr[7]; data.d315 = range_arr[7];
if (proximity1_queueHandle != NULL) if (proximity1_queueHandle != NULL)
{ {
osMessageQueuePut(proximity1_queueHandle, &data, 0, 10); myOsMessageQueuePut(proximity1_queueHandle, &data, 0, 10);
} }
for (uint8_t i = 0; i < 8; i++) for (uint8_t i = 0; i < 8; i++)
{ {
@ -317,7 +317,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[1] = 0x11; send_data.data[1] = 0x11;
send_data.data[2] = 0x02; send_data.data[2] = 0x02;
send_data.data[3] = 0x4C; send_data.data[3] = 0x4C;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0); myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break; break;
case 2: case 2:
@ -326,7 +326,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[1] = 0x31; send_data.data[1] = 0x31;
send_data.data[2] = 0x03; send_data.data[2] = 0x03;
send_data.data[3] = 0xE5; send_data.data[3] = 0xE5;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0); myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break; break;
case 3: case 3:
@ -336,7 +336,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[2] = 0x02; send_data.data[2] = 0x02;
send_data.data[3] = 0x01; send_data.data[3] = 0x01;
send_data.data[4] = 0xDF; send_data.data[4] = 0xDF;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0); myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break; break;
case 4: case 4:
@ -346,7 +346,7 @@ void request_qoar1271_by_step(uint8_t step, uint8_t usart_index)
send_data.data[2] = 0x03; send_data.data[2] = 0x03;
send_data.data[3] = 0x03; send_data.data[3] = 0x03;
send_data.data[4] = 0xC4; send_data.data[4] = 0xC4;
osMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0); myOsMessageQueuePut(usart_send_queueHandle, &send_data, NULL, 0);
break; break;
default: default:
break; break;

5
Core/Src/can.c

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

15
MDK-ARM/proximity_uavcan_converter.uvprojx

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

10
MDK-ARM/startup_stm32f103xb.lst

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

2
UAVCAN/uavcan.c

@ -457,7 +457,7 @@ void send_uavcan_proximity(uavcan_proximity_t *data)
{ {
msg.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID; msg.id = ZRZK_EQUIPMENT_RANGE_SENSOR_PROXIMITY_ID;
memcpy(&msg.content.proximity, data, sizeof(uavcan_proximity_t)); 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