当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/1078361/

相关文章:

  • 简道云智能助手实测:工单派发→报工→质检→入库,全自动流转到底靠不靠谱?
  • 状态空间模型安全风险剖析:频谱攻击、后门植入与状态饱和的攻防实践
  • NannyML无标签模型监控:实现端到端MLOps性能闭环
  • Docker网络这5种模式,你真的都搞明白了吗?
  • 从CTF EasySQL题解析SQL注入攻防:核心原理与实战绕过技巧
  • 5分钟打造万能启动盘:Ventoy彻底告别重复格式化时代
  • HDFS javaAPI-windows的IDEA中java文件在linux中的hadoop平台运行
  • P89LPC92x1中断与I/O配置实战:从原理到避坑指南
  • 脉冲神经网络多级脉冲设计与能效优化
  • HTTPS 性能优化完全指南:从原理、硬件到架构的全链路调优实战
  • 手动构造链表和二叉树
  • SaaS和低代码厂商的智能体转型路径:两场范式级转型的路线图
  • 2026命理软件付费前怎么看?八字排盘App要看使用频率和可替代成本
  • oauth2授权码模式完整流转
  • DonkeyCar存储系统深度解析:SD卡选型、ext4优化与路径陷阱
  • JSON Schema验证实际应用场景案例
  • JMeter压力测试实战:AI音效生成服务性能调优全解析
  • OpenCloudOS Server 9 安装 Nginx 完整指南
  • MHmarkets:注重效率的使用者更在意的投教内容,这里做个标准对照
  • 项目上线了
  • 【题解】WebGoC绘图题目精选整合集
  • 【Java踩坑笔记】【基础语法篇】05_重写equals不重写hashCode会怎样?
  • 小白stm32入门教程学习记录:3-2 LED闪烁流水灯
  • 有哪些专业的匹克球拍公司可以推荐?
  • 机房运维台账怎么做才算到位
  • 终极指南:企业级远程控制平台billd-desk私有化部署全流程
  • AI培训行业变化:必火AI与传统机构对比
  • MCP服务器:AI与外部工具安全交互的协议中枢
  • 【每天认识一个国家 | 韩国】
  • 你的业务真的需要现代化改造吗?无服务器、托管服务、自建EC2,别选错了