注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
damiaa的个人空间 http://home.eeworld.com.cn/space-uid-59433.html [收藏] [复制] [分享] [RSS]
日志

【STM32WBA52CG】+6 SEQUENCER调度器

已有 413 次阅读2023-9-3 18:32 |个人分类:stm32wba

                       

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);

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

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章