1137|0

6105

帖子

4

TA的资源

版主

楼主
 

【STM32WBA52CG】+6 SEQUENCER调度器 [复制链接]

本帖最后由 damiaa 于 2023-9-3 18:55 编辑

                       

                           STM32WBA52CG】+6 SEQUENCER调度器

 

【NUCLEO-WBA52CG】+1开箱贴

STM32WBA52CG】+2 STM32WBA Web Bluetooth试玩

STM32WBA52CG】+3 STM32WBA 外设应用 按键和点灯

STM32WBA52CG】+4 外设应用二 串口使用

【STM32WBA52CG】+5 THREADX使用之后继续

 

看看STM32WBAA软件架构

 

发现STM32WBAA软件架构中有个调度器,据说这玩意还不是真正的操作系统 ,但可以简单的管理任务,很多嵌入式软件里面 用 到 这种。主要代码在stm32_seq.c stm32_seq.h utilities_conf.h中

 

管理任务的主要相关变量,其他的可以在代码中查看

从下面的函数可以看出要用 到的全局变量和全局数组

void UTIL_SEQ_Init( void )

{

  TaskSet = UTIL_SEQ_NO_BIT_SET; //当前需要执行的任务集 32位。

  TaskMask = UTIL_SEQ_ALL_BIT_SET; //可以执行的任务集32位。

  SuperMask = UTIL_SEQ_ALL_BIT_SET; //可以暂停的任务集32位。

  EvtSet = UTIL_SEQ_NO_BIT_SET; //当前设置的事件集32位。

  EvtWaited = UTIL_SEQ_NO_BIT_SET; //表示当前正等待的事件集32位。

  CurrentTaskIdx = 0U; //32位。//正在执行的任务

  (void)UTIL_SEQ_MEMSET8((uint8_t *)TaskCb, 0, sizeof(TaskCb));

  for(uint32_t index = 0; index < UTIL_SEQ_CONF_PRIO_NBR; index++)//任务优先级

  {

    TaskPrio[index].priority = 0;

    TaskPrio[index].round_robin = 0;

  }

  UTIL_SEQ_INIT_CRITICAL_SECTION( );

}

 

调度器功能简单描述:

每个任务都分配一个优先级,来确定任务在任务序列中的执行顺序。一个任务完成后,调度器会检查 TaskSet 和 TaskMask,选择下一个要执行的任务。如果没有任务需要执行,调度器进入休眠Idle状态,等待下一个事件的发生。

任务的执行 还可以指定延迟时间。

任务还可以等待事件的发生

任务可以按轮询方式执行,这样每个任务都可以执行到,任务有

临界区保护功能,以避免竞争条件和死锁。

具体的实现可以看stm32_seq.c相关代码。

 

调度器的主要api介绍:

SEQ初始化

void UTIL_SEQ_Init( void );

SEQ反初始化

void UTIL_SEQ_DeInit( void );

进入Idle状态

void UTIL_SEQ_Idle( void );

UTIL_SEQ_Idle调用前执行

void UTIL_SEQ_PreIdle( void );

调用 UTIL _ SEQ _ PreIdle ()之后,这个函数由关键部分之外的测序器调用,而不调用 UTIL _ SEQ _ Idle () 

void UTIL_SEQ_PostIdle( void );

SEQ运行

void UTIL_SEQ_Run( UTIL_SEQ_bm_t Mask_bm );

SEQ注册

void UTIL_SEQ_RegTask( UTIL_SEQ_bm_t TaskId_bm, uint32_t Flags, void (*Task)( void ) );

SEQ检查是否注册

uint32_t UTIL_SEQ_IsRegisteredTask( UTIL_SEQ_bm_t TaskId_bm );

任务请求执行

void UTIL_SEQ_SetTask( UTIL_SEQ_bm_t TaskId_bm , uint32_t Task_Prio );

检查是否可以调度

uint32_t UTIL_SEQ_IsSchedulableTask( UTIL_SEQ_bm_t TaskId_bm);

任务停止

void UTIL_SEQ_PauseTask( UTIL_SEQ_bm_t TaskId_bm );

检查任务是否停止

uint32_t UTIL_SEQ_IsPauseTask( UTIL_SEQ_bm_t TaskId_bm );

任务从停止状态转入可以运行

void UTIL_SEQ_ResumeTask( UTIL_SEQ_bm_t TaskId_bm );

设置事件

void UTIL_SEQ_SetEvt( UTIL_SEQ_bm_t EvtId_bm );

清除设置的事件

void UTIL_SEQ_ClrEvt( UTIL_SEQ_bm_t EvtId_bm );

等待事件

void UTIL_SEQ_WaitEvt( UTIL_SEQ_bm_t EvtId_bm );

函数返回等待事件是否挂起 * 仅当应用程序重载 UTIL _ SEQ _ EvtIdle ()时才有用

UTIL_SEQ_bm_t UTIL_SEQ_IsEvtPend( void );

循环直到等待事件

void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t TaskId_bm, UTIL_SEQ_bm_t EvtWaited_bm );

 

读UTIL_SEQ_Run函数:

void UTIL_SEQ_Run( UTIL_SEQ_bm_t Mask_bm )

{

  uint32_t counter;

  UTIL_SEQ_bm_t current_task_set;

  UTIL_SEQ_bm_t super_mask_backup;

  UTIL_SEQ_bm_t local_taskset;

  UTIL_SEQ_bm_t local_evtset;

  UTIL_SEQ_bm_t local_taskmask;

  UTIL_SEQ_bm_t local_evtwaited;

  /* When this function is nested, the mask to be applied cannot be larger than the first call

  * The mask is always getting smaller and smaller

  * A copy is made of the mask set by UTIL_SEQ_Run() in case it is called again in the task

  /* 当这个函数被嵌套时,要应用的掩码不能大于第一次调用

  * 掩码总是变得越来越小

  * 一个由 UTIL _ SEQ _ Run ()设置的掩码复制,以防在任务中再次调用 */

  super_mask_backup = SuperMask;

  SuperMask &= Mask_bm;

  /*

  * There are two independent mask to check: 有两个独立的掩码需要检查

  * TaskMask that comes from UTIL_SEQ_PauseTask() / UTIL_SEQ_ResumeTask

  *TaskMask掩码来自 UTIL _ SEQ _ PauseTask ()/UTIL _ SEQ _ ResumeTask

  * SuperMask that comes from UTIL_SEQ_Run

  * SuperMask掩码来自 UTIL _ SEQ _ Run 的 SuperMask

  * If the waited event is there, exit from UTIL_SEQ_Run() to return to the waiting task

  * 如果等待事件存在,退出 UTIL _ SEQ _ Run ()返回到 wait 任务

  */

  local_taskset = TaskSet;

  local_evtset = EvtSet;

  local_taskmask = TaskMask;

  local_evtwaited = EvtWaited;

  //如果有任务要执行

  while(((local_taskset & local_taskmask & SuperMask) != 0U) && ((local_evtset & local_evtwaited)==0U))

  {

    counter = 0U;

    /* When a flag is set, the associated bit is set in TaskPrio[counter].priority mask depending

    * on the priority parameter given from UTIL_SEQ_SetTask()

    * The while loop is looking for a flag set from the highest priority maskr to the lower

    * 设置标志时,相关位在 TaskPrio [ counter ]中设置。优先级掩码取决于从 UTIL _ SEQ _ SetTask () 给出的优先级参数 .下面的while 循环查找从最高优先级掩码到较低 的标志集

    */

    while((TaskPrio[counter].priority & local_taskmask & SuperMask)== 0U)

    {

      counter++;

    }

    current_task_set = TaskPrio[counter].priority & local_taskmask & SuperMask;//查到后设置现行任务

    /*

    * The round_robin register is a mask of allowed flags to be evaluated.

    * The concept is to make sure that on each round on UTIL_SEQ_Run(), if two same flags are always set,

    * the sequencer does not run always only the first one.

    * When a task has been executed, The flag is removed from the round_robin mask.

    * If on the next UTIL_SEQ_RUN(), the two same flags are set again, the round_robin mask will mask out the first flag

    * so that the second one can be executed.

    * Note that the first flag is not removed from the list of pending task but just masked by the round_robin mask

    * In the check below, the round_robin mask is reinitialize in case all pending tasks haven been executed at least once

    * round _ robin 寄存器是被评估的允许标志的掩码。

    * 这个概念是为了确保在 UTIL _ SEQ _ Run ()上的每一回合中,如果总是设置两个相同的标志,* 排序器并不总是只运行第一个标志。

    * 当一个任务被执行时,标志将从 round _ robin 掩码中移除。

    * 如果在下一个 UTIL _ SEQ _ RUN ()上,再次设置两个相同的标志,则 round _ robin 掩码将掩盖第一个标志

    * ,以便可以执行第二个标志。注意,第一个标志没有从挂起任务列表中移除,只是被 round _ robin 掩码掩盖了。在下面的检查中,round _ robin 掩码被重新初始化,以防所有挂起的任务至少执行了一次

    */

    if ((TaskPrio[counter].round_robin & current_task_set) == 0U)

    {

      TaskPrio[counter].round_robin = UTIL_SEQ_ALL_BIT_SET;

    }

    /* Read the flag index of the task to be executed

    * Once the index is read, the associated task will be executed even though a higher priority stack is requested

    * before task execution.

    * 读取要执行的任务的标志索引 一旦读取了索引,即使在任务执行之前请求了更高的优先级堆栈,关联的任务也将被执行。*/

    CurrentTaskIdx = (SEQ_BitPosition(current_task_set & TaskPrio[counter].round_robin));

    /*

    * remove from the roun_robin mask the task that has been selected to be executed

    * 从 roun _ robin 掩码中删除要执行的任务

    */

    TaskPrio[counter].round_robin &= ~(1U << CurrentTaskIdx);

    UTIL_SEQ_ENTER_CRITICAL_SECTION( );

    /* remove from the list or pending task the one that has been selected to be executed

    *从列表或挂起的任务中删除已选择要执行的任务 */

    TaskSet &= ~(1U << CurrentTaskIdx);

    /* remove from all priority mask the task that has been selected to be executed从所有优先级屏蔽中删除已选择要执行的任务 */

    for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--)

    {

      TaskPrio[counter - 1U].priority &= ~(1U << CurrentTaskIdx);

    }

    UTIL_SEQ_EXIT_CRITICAL_SECTION( );

    /* Execute the task 进入任务回调 函数执行任务*/

    TaskCb[CurrentTaskIdx]( );

    local_taskset = TaskSet;

    local_evtset = EvtSet;

    local_taskmask = TaskMask;

    local_evtwaited = EvtWaited;

  } //任务执行while循环结束

  /* the set of CurrentTaskIdx to no task running allows to call WaitEvt in the Pre/Post ilde context CurrentTaskIdx 设置为无任务运行,允许在 Pre/Post ilde 上下文中调用 WaitEvt */

  CurrentTaskIdx = UTIL_SEQ_NOTASKRUNNING;

  /* if a waited event is present, ignore the IDLE sequence 如果存在等待事件,则忽略 IDLE 行为*/

  if ((local_evtset & EvtWaited)== 0U)

  {

    UTIL_SEQ_PreIdle( );

    UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE( );

    local_taskset = TaskSet;

    local_evtset = EvtSet;

    local_taskmask = TaskMask;

    if ((local_taskset & local_taskmask & SuperMask) == 0U)

    {

      if ((local_evtset & EvtWaited)== 0U)

      {

        UTIL_SEQ_Idle( );

      }

    }

    UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE( );

    UTIL_SEQ_PostIdle( );

  }

  /* restore the mask from UTIL_SEQ_Run() */

  SuperMask = super_mask_backup;

  return;

}

上面是调度器运行函数的实现部分,其他的可以从代码中了解。

 

在下面的文件中调用和使用它们:

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(39) : } UTIL_SEQ_Priority_t;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(54) : * UTIL_SEQ_ENTER_CRITICAL_SECTION. The redefinition of this macro will allow

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(58) : #ifndef UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(59) : #define UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE( ) UTIL_SEQ_ENTER_CRITICAL_SECTION( )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(65) : * UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(67) : #ifndef UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(68) : #define UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE( ) UTIL_SEQ_EXIT_CRITICAL_SECTION( )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(74) : #define UTIL_SEQ_NOTASKRUNNING (0xFFFFFFFFU)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(79) : #define UTIL_SEQ_NO_BIT_SET (0U)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(84) : #define UTIL_SEQ_ALL_BIT_SET (~0U)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(89) : #ifndef UTIL_SEQ_CONF_TASK_NBR

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(90) : #define UTIL_SEQ_CONF_TASK_NBR (32)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(93) : #if UTIL_SEQ_CONF_TASK_NBR > 32

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(94) : #error "UTIL_SEQ_CONF_PRIO_NBR must be less of equal then 32"

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(100) : #ifndef UTIL_SEQ_CONF_PRIO_NBR

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(101) : #define UTIL_SEQ_CONF_PRIO_NBR (2)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(107) : #ifndef UTIL_SEQ_MEMSET8

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(108) : #define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(124) : static volatile UTIL_SEQ_bm_t TaskSet;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(129) : static volatile UTIL_SEQ_bm_t TaskMask = UTIL_SEQ_ALL_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(134) : static UTIL_SEQ_bm_t SuperMask = UTIL_SEQ_ALL_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(139) : static volatile UTIL_SEQ_bm_t EvtSet = UTIL_SEQ_NO_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(144) : static volatile UTIL_SEQ_bm_t EvtWaited = UTIL_SEQ_NO_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(154) : static void (*TaskCb[UTIL_SEQ_CONF_TASK_NBR])( void );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(159) : static volatile UTIL_SEQ_Priority_t TaskPrio[UTIL_SEQ_CONF_PRIO_NBR];

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(180) : void UTIL_SEQ_Init( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(182) : TaskSet = UTIL_SEQ_NO_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(183) : TaskMask = UTIL_SEQ_ALL_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(184) : SuperMask = UTIL_SEQ_ALL_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(185) : EvtSet = UTIL_SEQ_NO_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(186) : EvtWaited = UTIL_SEQ_NO_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(188) : (void)UTIL_SEQ_MEMSET8((uint8_t *)TaskCb, 0, sizeof(TaskCb));

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(189) : for(uint32_t index = 0; index < UTIL_SEQ_CONF_PRIO_NBR; index++)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(194) : UTIL_SEQ_INIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(197) : void UTIL_SEQ_DeInit( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(207) : void UTIL_SEQ_Run( UTIL_SEQ_bm_t Mask_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(210) : UTIL_SEQ_bm_t current_task_set;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(211) : UTIL_SEQ_bm_t super_mask_backup;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(212) : UTIL_SEQ_bm_t local_taskset;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(213) : UTIL_SEQ_bm_t local_evtset;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(214) : UTIL_SEQ_bm_t local_taskmask;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(215) : UTIL_SEQ_bm_t local_evtwaited;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(220) : * A copy is made of the mask set by UTIL_SEQ_Run() in case it is called again in the task

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(227) : * TaskMask that comes from UTIL_SEQ_PauseTask() / UTIL_SEQ_ResumeTask

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(228) : * SuperMask that comes from UTIL_SEQ_Run

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(229) : * If the waited event is there, exit from UTIL_SEQ_Run() to return to the

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(241) : * on the priority parameter given from UTIL_SEQ_SetTask()

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(253) : * The concept is to make sure that on each round on UTIL_SEQ_Run(), if two same flags are always set,

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(256) : * If on the next UTIL_SEQ_RUN(), the two same flags are set again, the round_robin mask will mask out the first flag

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(264) : TaskPrio[counter].round_robin = UTIL_SEQ_ALL_BIT_SET;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(279) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(283) : for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(287) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(299) : CurrentTaskIdx = UTIL_SEQ_NOTASKRUNNING;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(303) : UTIL_SEQ_PreIdle( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(305) : UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(313) : UTIL_SEQ_Idle( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(316) : UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(318) : UTIL_SEQ_PostIdle( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(321) : /* restore the mask from UTIL_SEQ_Run() */

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(327) : void UTIL_SEQ_RegTask(UTIL_SEQ_bm_t TaskId_bm, uint32_t Flags, void (*Task)( void ))

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(330) : UTIL_SEQ_ENTER_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(334) : UTIL_SEQ_EXIT_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(339) : uint32_t UTIL_SEQ_IsRegisteredTask(UTIL_SEQ_bm_t TaskId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(342) : UTIL_SEQ_ENTER_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(349) : UTIL_SEQ_EXIT_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(353) : void UTIL_SEQ_SetTask( UTIL_SEQ_bm_t TaskId_bm , uint32_t Task_Prio )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(355) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(360) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(365) : uint32_t UTIL_SEQ_IsSchedulableTask( UTIL_SEQ_bm_t TaskId_bm)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(368) : UTIL_SEQ_bm_t local_taskset;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(370) : UTIL_SEQ_ENTER_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(375) : UTIL_SEQ_EXIT_CRITICAL_SECTION();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(379) : void UTIL_SEQ_PauseTask( UTIL_SEQ_bm_t TaskId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(381) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(385) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(390) : uint32_t UTIL_SEQ_IsPauseTask( UTIL_SEQ_bm_t TaskId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(393) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(397) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(401) : void UTIL_SEQ_ResumeTask( UTIL_SEQ_bm_t TaskId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(403) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(407) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(412) : void UTIL_SEQ_SetEvt( UTIL_SEQ_bm_t EvtId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(414) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(418) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(423) : void UTIL_SEQ_ClrEvt( UTIL_SEQ_bm_t EvtId_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(425) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(429) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(434) : void UTIL_SEQ_WaitEvt(UTIL_SEQ_bm_t EvtId_bm)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(436) : UTIL_SEQ_bm_t event_waited_id_backup;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(437) : UTIL_SEQ_bm_t current_task_idx;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(438) : UTIL_SEQ_bm_t wait_task_idx;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(441) : * may be overwritten in case there are nested call of UTIL_SEQ_Run()

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(444) : if(UTIL_SEQ_NOTASKRUNNING == CurrentTaskIdx)

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(467) : UTIL_SEQ_EvtIdle(wait_task_idx, EvtId_bm);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(471) : * Restore the CurrentTaskIdx that may have been modified by call of UTIL_SEQ_Run() from UTIL_SEQ_EvtIdle()

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(472) : * This is required so that a second call of UTIL_SEQ_WaitEvt() in the same process pass the correct current_task_id_bm

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(473) : * in the call of UTIL_SEQ_EvtIdle()

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(477) : UTIL_SEQ_ENTER_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(481) : UTIL_SEQ_EXIT_CRITICAL_SECTION( );

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(487) : UTIL_SEQ_bm_t UTIL_SEQ_IsEvtPend( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(489) : UTIL_SEQ_bm_t local_evtwaited = EvtWaited;

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(493) : __WEAK void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t TaskId_bm, UTIL_SEQ_bm_t EvtWaited_bm )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(496) : UTIL_SEQ_Run(~TaskId_bm);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(500) : __WEAK void UTIL_SEQ_Idle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(505) : __WEAK void UTIL_SEQ_PreIdle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Utilities\sequencer\stm32_seq.c(513) : __WEAK void UTIL_SEQ_PostIdle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(253) : UTIL_SEQ_INIT_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(348) : UTIL_SEQ_ENTER_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(390) : UTIL_SEQ_EXIT_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(398) : UTIL_SEQ_ENTER_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(469) : UTIL_SEQ_EXIT_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(505) : UTIL_SEQ_ENTER_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\MemoryManager\advanced_memory_manager.c(559) : UTIL_SEQ_EXIT_CRITICAL_SECTION ();

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\ble_timer.c(58) : UTIL_SEQ_RegTask(1U << CFG_TASK_BLE_TIMER_BCKGND, UTIL_SEQ_RFU, BLE_TIMER_Background);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\System\Modules\ble_timer.c(129) : UTIL_SEQ_SetTask( 1U << CFG_TASK_BLE_TIMER_BCKGND, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\Target\ll_sys_if.c(65) : UTIL_SEQ_RegTask( 1U << CFG_TASK_LINK_LAYER, UTIL_SEQ_RFU, ll_sys_bg_process);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\Target\ll_sys_if.c(75) : UTIL_SEQ_SetTask(1U << CFG_TASK_LINK_LAYER, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\Target\ll_sys_if.c(108) : UTIL_SEQ_RegTask( 1U << CFG_TASK_LINK_LAYER_TEMP_MEAS, UTIL_SEQ_RFU, request_temperature_measurement);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\Target\ll_sys_if.c(118) : UTIL_SEQ_SetTask(1U << CFG_TASK_LINK_LAYER_TEMP_MEAS, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\Target\host_stack_if.c(63) : UTIL_SEQ_SetTask( 1U << CFG_TASK_BLE_HOST, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\p2p_server_app.c(207) : UTIL_SEQ_RegTask( 1U << CFG_TASK_SEND_NOTIF_ID, UTIL_SEQ_RFU, P2P_SERVER_Switch_c_SendNotification);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(247) : UTIL_SEQ_RegTask(1U << CFG_TASK_BLE_HOST, UTIL_SEQ_RFU, BleStack_Process_BG);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(248) : UTIL_SEQ_RegTask(1U << CFG_TASK_HCI_ASYNCH_EVT_ID, UTIL_SEQ_RFU, Ble_UserEvtRx);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(287) : UTIL_SEQ_RegTask(1<<CFG_TASK_ADV_CANCEL_ID, UTIL_SEQ_RFU, Adv_Cancel);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1182) : UTIL_SEQ_SetTask(1U << CFG_TASK_HCI_ASYNCH_EVT_ID, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1186) : UTIL_SEQ_SetTask(1U << CFG_TASK_BLE_HOST, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1248) : UTIL_SEQ_SetEvt(1U << CFG_IDLEEVT_PROC_GAP_COMPLETE);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1254) : UTIL_SEQ_WaitEvt(1U << CFG_IDLEEVT_PROC_GAP_COMPLETE);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1287) : UTIL_SEQ_SetTask(1 << CFG_TASK_ADV_CANCEL_ID, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1413) : UTIL_SEQ_SetTask(1U << CFG_TASK_HCI_ASYNCH_EVT_ID, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\STM32_WPAN\App\app_ble.c(1445) : UTIL_SEQ_SetTask( 1<<CFG_TASK_SEND_NOTIF_ID, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(209) : UTIL_SEQ_RegTask(1U << CFG_TASK_AMM_BCKGND, UTIL_SEQ_RFU, AMM_BackgroundProcess);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(215) : UTIL_SEQ_RegTask(1U << CFG_TASK_FLASH_MANAGER_BCKGND, UTIL_SEQ_RFU, FM_BackgroundProcess);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(227) : UTIL_SEQ_RegTask(1U << CFG_TASK_BPKA, UTIL_SEQ_RFU, BPKA_BG_Process);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(388) : UTIL_SEQ_RegTask(1U << CFG_TASK_HW_RNG, UTIL_SEQ_RFU, (void (*)(void))HW_RNG_Process);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(435) : UTIL_SEQ_RegTask(1U << TASK_BUTTON_1, UTIL_SEQ_RFU, APPE_Button1Action);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(436) : UTIL_SEQ_RegTask(1U << TASK_BUTTON_2, UTIL_SEQ_RFU, APPE_Button2Action);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(437) : UTIL_SEQ_RegTask(1U << TASK_BUTTON_3, UTIL_SEQ_RFU, APPE_Button3Action);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(463) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_1, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(466) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_2, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(469) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_3, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(519) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_1, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(527) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_2, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(535) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_3, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(543) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_1, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(551) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_2, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(559) : UTIL_SEQ_SetTask(1U << TASK_BUTTON_3, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(579) : UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(585) : void UTIL_SEQ_Idle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(595) : void UTIL_SEQ_PreIdle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(617) : void UTIL_SEQ_PostIdle( void )

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(628) : UTIL_SEQ_SetTask(1U << CFG_TASK_BPKA, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(633) : UTIL_SEQ_SetTask(1U << CFG_TASK_HW_RNG, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(647) : UTIL_SEQ_SetTask(1U << CFG_TASK_AMM_BCKGND, CFG_SEQ_PRIO_0);

D:\AssessmentBoard\st\stm32wb52ba\STM32Cube_FW_WBA_V1.1.0\Projects\NUCLEO-WBA52CG\Applications\BLE\BLE_p2pServer\Core\Src\app_entry.c(653) : UTIL_SEQ_SetTask(1U << CFG_TASK_FLASH_MANAGER_BCKGND, CFG_SEQ_PRIO_0);

好先简单的介绍到这里,了解不够深入望见谅。

此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
来看看这个,单片机编程入门26讲,有用就收藏,没用当垃圾

单片机教程:单片机编程入门一 http://bbs.huazhoucn.com/Topic.aspx?id=1313 单片机教程:单片机编程入门二 http://bbs.huazho ...

LPC1343学习笔记(连载中)--6月21日新增第十二篇

有幸拿到了EEWORLD论坛的LPC1343评估板,实在是一件意外而激励人心的事情。为感谢EEWORLD和NXP,特将学习过程与大家共同分享。也 ...

学习心得:用8962调试2.8 320x240的TFT屏的方案

1)取字模的软件 https://bbs.eeworld.com.cn/thread-286606-1-1.html 2)相关的TFT资料 https://bbs.eeworld.com.cn/t ...

在beaglebone上实现AM3359与FPGA的GPMC通信

作者:chenzhufly QQ:36886052 ( 转载请注明出处)1.参考资料 《AM335x ARM® Cortex™-A8 Microprocessors Technic ...

基于WEBNECH的升压电源设计3——优化部分

发《基于WEBNECH的升压电源设计2——调试部分》的时是7月31号了,今天都8月31号了。不得不感叹时间好快啊,同时也发现自己要走的 ...

修个奇奇怪怪的HC-SR04

以前还在学校的时候,买过一批10来个超声波传感器。因为有一段时间才记起来,用的时候发现踩坑了,这批超声波传感器就是个垃圾货 ...

【米尔-芯驰D9国产车规级开发板】1、开箱和板子外设芯片介绍、串口保护电路疑问

本帖最后由 walker2048 于 2023-9-1 14:07 编辑 开发板简介 本次体验的D9开发板是深圳市米尔科技有限公司推出的myd-jd9340 ...

【STM32H7R/S-DK】创建TouchGFX工程基础

【前言】 感谢EEWORLD论坛与ST,给予我这次试用STM32H7R/S-DK开发板的机会。 【软件准备】 1、TouchGFX 4.24.0,官方的 ...

【科普】电池管理系统(BMS)技术

本帖最后由 火辣西米秀 于 2024-9-23 10:50 编辑 电池管理系统(Battery Management System,简称BMS)是连接电池和电动汽车的 ...

汽车无钥匙进入系统(SoC)测试方法与技术

本帖最后由 火辣西米秀 于 2024-10-17 08:35 编辑 851519 ...

快速回复 返回顶部 返回列表