news 2026/6/26 1:36:05

STM32WB55入门教程(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32WB55入门教程(二)

概要

本篇主要介绍如何使用HAL库自带的定时器和任务的使用;在最后会补充一些在开发当中容易踩坑的地方。

在使用STM32CubeMX导出工程之后,已经默认使用了一套伪操作系统,因此我们应该使用操作系统的开发方式来开发,其中最为主要是定时器和任务的创建。

定时器

...

任务

/** * @brief This function registers a task in the sequencer. * * @param TaskId_bm The Id of the task * @param Flags Flags are reserved param for future use * @param Task Reference of the function to be executed * * @note It may be called from an ISR. * */ void UTIL_SEQ_RegTask( UTIL_SEQ_bm_t TaskId_bm, uint32_t Flags, void (*Task)( void ) );
/** * @brief This function requests a task to be executed * * @param TaskId_bm The Id of the task * It shall be (1<<task_id) where task_id is the number assigned when the task has been registered * @param Task_Prio The priority of the task * It shall a number from 0 (high priority) to 31 (low priority) * The priority is checked each time the sequencer needs to select a new task to execute * It does not permit to preempt a running task with lower priority * * @note It may be called from an ISR * */ void UTIL_SEQ_SetTask( UTIL_SEQ_bm_t TaskId_bm, uint32_t Task_Prio );

使用步骤:

首先使用UTIL_SEQ_RegTask创建任务

  • 第一个参数是任务的ID,这个需要在app_conf.h中的结构体CFG_Task_Id_With_HCI_Cmd_t定义中添加,例如:
/** * These are the lists of task id registered to the scheduler * Each task id shall be in the range [0:31] * This mechanism allows to implement a generic code in the API TL_BLE_HCI_StatusNot() to comply with * the requirement that a HCI/ACI command shall never be sent if there is already one pending */ /**< Add in that list all tasks that may send a ACI/HCI command */ typedef enum { CFG_TASK_ADV_UPDATE_ID, CFG_TASK_MEAS_REQ_ID, CFG_TASK_HCI_ASYNCH_EVT_ID, /* USER CODE BEGIN CFG_Task_Id_With_HCI_Cmd_t */ CFG_TASK_MY_ID, /*自行在此添加即可*/ /* USER CODE END CFG_Task_Id_With_HCI_Cmd_t */ CFG_LAST_TASK_ID_WITH_HCICMD, /**< Shall be LAST in the list */ } CFG_Task_Id_With_HCI_Cmd_t;
  • 第二个参数是保留的参数直接填UTIL_SEQ_RFU即可,可以看到它的值是0
  • 第三个参数是任务的实现,无需多言。

启动任务

使用UTIL_SEQ_SetTask即可,例如;

UTIL_SEQ_SetTask( 1<<CFG_TASK_MY_ID, CFG_SCH_PRIO_0);

其他的函数可以在,stm32_seq.h中可以找到。

其他资料汇总

https://zhuanlan.zhihu.com/p/401022982https://zhuanlan.zhihu.com/p/401022982

https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Category:STM32WB_Serieshttps://wiki.stmicroelectronics.cn/stm32mcu/wiki/Category:STM32WB_Series

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 1:34:50

iPhone端Core ML模型部署实战:从PyTorch到真机推理的完整链路

1. 项目概述&#xff1a;让训练好的Python模型真正在iPhone上跑起来&#xff0c;不是演示&#xff0c;是实打实的推理“Deploy a Python Machine Learning Model on your iPhone”——这个标题乍看像一句技术口号&#xff0c;但背后藏着一个被大量开发者低估的现实矛盾&#xf…

作者头像 李华
网站建设 2026/6/26 1:30:40

企业远程控制平台私有化部署:安全与成本的双重解决方案

企业远程控制平台私有化部署&#xff1a;安全与成本的双重解决方案 【免费下载链接】billd-desk 基于Vue3 WebRTC Nodejs Flutter搭建的远程桌面控制、游戏串流 项目地址: https://gitcode.com/gh_mirrors/bi/billd-desk 一、行业痛点与数据主权挑战 在数字化转型浪…

作者头像 李华
网站建设 2026/6/26 1:27:26

构建盾牌——数据验证与全局异常处理

前言&#xff1a;别让“脏数据”搞垮你的系统 在上一篇中&#xff0c;我们实现了数据的增删改查。但现实是残酷的&#xff1a;前端可能会传给你一个空的标题、负数的ID&#xff0c;甚至是一段恶意脚本。如果我们不做防御&#xff0c;这些“脏数据”会像病毒一样侵入数据库。 …

作者头像 李华
网站建设 2026/6/26 1:25:22

P89LPC92x1中断与I/O配置实战:从原理到避坑指南

1. 项目概述与核心价值如果你正在使用或评估恩智浦&#xff08;NXP&#xff09;的P89LPC92x1系列微控制器&#xff0c;那么理解其中断系统和I/O端口配置&#xff0c;绝对是绕不开的核心课题。这个系列&#xff0c;包括P89LPC9201、9211、922A1、9241和9251&#xff0c;虽然内核…

作者头像 李华