一旦我将任务添加到调度程序并将其安排为每 5 秒运行一次,当计时器触发并且定序器尝试运行该任务时,
STM32 就会转到硬故障处理程序。
我正在使用来自 STM32CubeWB 1.5.0 的最新示例 BLE_p2pServer,该示例是原样,除了添加“deviceModes.c”:
- #include "deviceModes.h"
- void StandbyMode();
- void QueueStandbyMode();
- const int SCH_PRIORITY_STANDBY_MODE = CFG_SCH_PRIO_20;
- uint8_t standbytimerId;
- #define FIVE_S (5 * 1000 * 1000 / CFG_TS_TICK_VAL)
- void RegisterDeviceModes() {
- UTIL_SEQ_RegTask(CFG_TASK_STANDBY_MODE, UTIL_SEQ_RFU,StandbyMode);
- HW_TS_Create(CFG_TIM_PROC_ID_ISR, &standbyTimerId, hw_ts_Repeated, QueueStandbyMode);
- HW_TS_Start(standbyTimerId, FIVE_S);
- }
- void QueueStandbyMode() {
- UTIL_SEQ_SetTask(1 << CFG_TASK_STANDBY_MODE, SCH_PRIORITY_STANDBY_MODE);
- }
- void StandbyMode() {
- BSP_LED_Toggle(LED_RED);
- HAL_Delay(5);
- BSP_LED_Toggle(LED_RED);
- }
CubeWB1.1.1 中的 p2pServer 示例没有出现此问题 - 为什么会出现这种情况?我们如何在 1.5.0 p2pServer 示例中使用 Sequencer 和 Timer 服务器?
我附上了一个 git repo,它只显示了下载后的 2 个变化:添加一个 Makefile,然后将任务添加到排序器。