Browse Source

修复:超时使用固定节点 消息过滤设置问题,重启节点判断

boat
binsir 3 years ago
parent
commit
c0849cd594
  1. 1
      .gitignore
  2. 1209
      MDK-ARM/startup_stm32f103xb.lst
  3. 36
      UAVCAN/uavcan.c

1
.gitignore vendored

@ -64,3 +64,4 @@ MDK-ARM/DebugConfig/proximity_uavcan_converter_STM32F103T8_1.0.0.dbgconf @@ -64,3 +64,4 @@ MDK-ARM/DebugConfig/proximity_uavcan_converter_STM32F103T8_1.0.0.dbgconf
.vscode/.BROWSE.C_CPP.DB
.vscode/.BROWSE.C_CPP.DB-shm
.vscode/.BROWSE.C_CPP.DB-wal
MDK-ARM/proximity_uavcan_converter/priximity.bin

1209
MDK-ARM/startup_stm32f103xb.lst

File diff suppressed because it is too large Load Diff

36
UAVCAN/uavcan.c

@ -474,11 +474,13 @@ void request_node_restart(void) @@ -474,11 +474,13 @@ void request_node_restart(void)
void check_need_to_jump_boot(void)
{
if ((last_invocation + 1000) < HAL_GetTick())
{
// process1HzTasks(getMonotonicTimestamp());
last_invocation = HAL_GetTick(); /* Intentionally exclude processing time */
if (node_restart_at && (HAL_GetTick() > node_restart_at))
{
NVIC_SystemReset();
if (node_restart_at && (HAL_GetTick() > node_restart_at))
{
NVIC_SystemReset();
}
}
}
@ -616,10 +618,12 @@ void allocation_update(void) @@ -616,10 +618,12 @@ void allocation_update(void)
bootloader_interface.node_id)
{
canardSetLocalNodeID(&g_canard, bootloader_interface.node_id);
init_uavcan_fifo(get_node_id());
}
else
{
canardSetLocalNodeID(&g_canard, DEFAULT_NODE_ID);
init_uavcan_fifo(get_node_id());
}
}
}
@ -743,19 +747,19 @@ static float uavcan_get_radom_float(void) @@ -743,19 +747,19 @@ static float uavcan_get_radom_float(void)
void uavcan_init_by_allocation(void)
{
can_filter_none();
can_init_irq();
canardInit(&g_canard, // Uninitialized library instance
g_canard_memory_pool, // Raw memory chunk used for dynamic allocation
sizeof(g_canard_memory_pool), // Size of the above, in bytes
onTransferReceived, // Callback, see CanardOnTransferReception
shouldAcceptTransfer, // Callback, see CanardShouldAcceptTransfer
NULL);
can_init_irq();
read_unique_id(&node_unique_id[0]);
allocation_init();
// canard_initialized = true;
allocation_init_tick = HAL_GetTick();
can_filter_none();
can_init_irq();
canardInit(&g_canard, // Uninitialized library instance
g_canard_memory_pool, // Raw memory chunk used for dynamic allocation
sizeof(g_canard_memory_pool), // Size of the above, in bytes
onTransferReceived, // Callback, see CanardOnTransferReception
shouldAcceptTransfer, // Callback, see CanardShouldAcceptTransfer
NULL);
can_init_irq();
read_unique_id(&node_unique_id[0]);
allocation_init();
// canard_initialized = true;
allocation_init_tick = HAL_GetTick();
}
uint64_t micros(void)

Loading…
Cancel
Save