阿里巴巴1688怎么做网站手机好用的wordpress

张小明 2026/1/10 15:34:50
阿里巴巴1688怎么做网站,手机好用的wordpress,莫道设计公司,wordpress org函数指针听起来复杂#xff0c;但其实你可以把它理解成一个“遥控器”。它本身不干活#xff0c;但按一下#xff08;调用它#xff09;#xff0c;就能遥控执行另一个函数。在STM32开发里#xff0c;这个“遥控”的特性#xff0c;正好能解决硬件和应用之间灵活联动的问…函数指针听起来复杂但其实你可以把它理解成一个“遥控器”。它本身不干活但按一下调用它就能遥控执行另一个函数。在STM32开发里这个“遥控”的特性正好能解决硬件和应用之间灵活联动的问题。下面我用一个你熟悉的例子来比喻并通过一个表格让你快速理解核心应用。一. 什么是函数指针与回调函数你可以把整个系统想象成点外卖平台STM32底层驱动就像外卖平台它知道“送餐”这个固定流程。商家你的应用程序就像商家负责把餐做好。回调函数就是你商家留给平台的电话号码。餐到了快递员平台不需要知道商家具体是谁他只要拨打这个电话调用函数指针通知你取餐就行。这个“电话号码”就是一个函数指针。平台通过它来调用你提供的函数这个过程就叫回调。在STM32里这非常有用因为硬件如定时器、串口的工作是固定的但它们产生结果如定时时间到、收到数据后需要一种灵活的方式来通知你的代码去处理。二.在STM32C103C8T6中的典型应用场景下表总结了几个你最可能用到的典型场景应用场景作用与优势在STM32中的实例硬件中断处理HAL库的基石。硬件中断发生时库函数通过你注册的函数指针调用你的处理代码实现硬件与应用解耦。如HAL_UART_RxCpltCallback串口接收完成回调。状态机实现用函数指针指向当前状态的处理函数。切换状态时只需改变指针指向使逻辑清晰易于扩展。用于设备工作流程如待机 - 运行 - 休眠。驱动程序抽象将不同硬件的操作如UART1、UART2封装成统一的函数指针接口上层代码无需关心底层具体硬件。统一操作不同外设的发送、接收函数。命令解析器将字符串命令与对应的处理函数绑定。解析命令后通过函数指针调用相应函数方便增减命令。通过串口发送命令控制LED、读取传感器等。三. 在STM32中如何使用一个详细示例我们以最常见的串口接收完成回调为例写一个完整代码。这个场景完美体现了“底层驱动固定流程上层应用灵活定制”的思想。步骤1定义函数指针类型设计“电话”的格式在代码开头我们定义一种函数指针类型。这相当于规定好“回调电话”必须是哪种格式参数和返回值。// 定义一个函数指针类型它指向的函数接受一个uint8_t数组和长度作为参数 typedef void (*UART_RxCallback_t)(uint8_t *data, uint16_t len);步骤2声明并注册回调函数告诉平台你的电话号码我们需要一个全局的函数指针变量来保存这个“号码”并提供一个“注册”函数。// 全局的函数指针变量初始化为NULL表示暂无号码 UART_RxCallback_t myUartCallback NULL; // 注册回调的函数。当应用层调用这个函数时就把它的“电话号码”存下来。 void RegisterUartCallback(UART_RxCallback_t callback) { if (callback ! NULL) { // 安全检查确保传入的是有效的函数地址 myUartCallback callback; } }步骤3在硬件中断中调用回调平台拨打电话在串口接收完成中断服务函数或在其中调用的函数里检查“电话号码”是否已注册如果已注册就“拨打”。// 假设在串口中断服务函数或数据处理函数中 void USART1_IRQHandler(void) { // ... 处理中断标志等硬件逻辑 ... if (接收到数据完成 myUartCallback ! NULL) { // 关键检查指针非空 uint8_t rxData[10]; uint16_t dataLength 5; // 假设收到了5个字节 // ... 将硬件接收到的数据填充到rxData ... // 拨打“回调电话”通知应用层数据准备好了 myUartCallback(rxData, dataLength); } }步骤4应用层实现并注册具体函数商家提供电话并等待在你的主程序或应用模块中实现一个符合格式的函数然后在初始化时注册它。// 1. 实现具体的回调函数。这就是“商家”处理业务的逻辑。 void MyApp_UartDataHandler(uint8_t *data, uint16_t len) { // 例如把接收到的数据通过串口再发回去回显 HAL_UART_Transmit(huart1, data, len, 1000); // 或者解析数据控制LED等等... } int main(void) { // 硬件初始化... HAL_Init(); SystemClock_Config(); MX_USART1_UART_Init(); // 2. 注册你的回调函数把电话号码告诉平台 RegisterUartCallback(MyApp_UartDataHandler); // 开启串口接收中断... HAL_UART_Receive_IT(huart1, rxBuffer, 1); while (1) { // 主循环可以处理其他任务 // 当串口收到数据后中断会自动触发最终调用MyApp_UartDataHandler } }四 使用时的关键注意事项务必进行空指针检查在通过函数指针调用前必须检查if (myUartCallback ! NULL)否则如果指针是空的程序会崩溃。保持函数签名一致你实现的函数如MyApp_UartDataHandler的参数类型、数量和返回值必须与函数指针类型定义UART_RxCallback_t完全一致。指针初始化声明函数指针变量时像示例中那样初始化为NULL这是一个好习惯。五 总结与建议核心思想函数指针在STM32中最大的价值是实现“解耦”。驱动层写好框架应用层通过函数指针“挂接”自己的逻辑两者互不干扰代码更清晰、更易维护和复用。如果你想从模仿开始最快的方法是打开你使用的STM32 HAL库比如stm32f1xx_hal_uart.c搜索__weak关键字。那些用__weak定义的函数如HAL_UART_RxCpltCallback就是库为你准备好的回调函数“插槽”。你只需要在自己的文件里重新定义一个同名函数就能覆盖它实现自定义处理。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站美工做专题尺寸多少Linux哪个版本做网站好

下载NP管理器 1.1、提取安装包 打开安装包编辑器,点击左侧拉出菜单栏,单击栏内【安装包提取】功能,选择新旧版本微信后提取软件安装包。 1.2、查看安装包 通过安装包编辑器提取安装包功能提取新旧版VX的安装包,选择定位并查看,新旧版本操作方法一致。 1.3、获取版本…

张小明 2026/1/6 10:57:53 网站建设

陕西做网站的公司电话烟台快速建站公司

搭建和配置 Linux 邮件服务全攻略 在当今数字化时代,邮件服务是企业和个人通信的重要组成部分。本文将详细介绍如何在 Linux 系统上搭建和配置邮件服务,包括使用 Postfix 作为邮件传输代理(MTA)、Dovecot 作为邮件接收服务器,以及相关的安全设置和测试方法。 1. 替换默认…

张小明 2026/1/6 5:33:57 网站建设

百度做地图的网站网站建设 天津

当“眼球经济”吞噬灵魂:颜廷利《升命学说》揭示现代人的精神失明危机在短视频平台日均刷屏500次的今天,人类正陷入一场前所未有的视觉暴政。当算法将我们的眼球驯化为流量收割机,当审美疲劳将心灵磨损成千疮百孔的镜片,颜廷利教授…

张小明 2026/1/10 15:24:36 网站建设

先做网站还是先收集样品做电力 公司网站

在微服务架构盛行的今天,Spring Boot 因简洁高效的特点成为构建微服务的首选框架。而微服务上线前,性能测试是保障其稳定运行的关键环节——它能提前发现系统在高并发、大数据量场景下的瓶颈,比如响应延迟、吞吐量不足、资源占用过高等问题。…

张小明 2026/1/6 8:28:06 网站建设

网站排版设布局高级网站建设

先把答案丢出来:斜看地板会闪、抖、糊,根本原因不是“地板做得丑”, 也不是“显卡太垃圾”, 而是:屏幕分辨率不够 纹理太细 采样方式不对, 尤其在“斜视角”时,一个屏幕像素在纹理里对应的是又…

张小明 2026/1/6 4:56:57 网站建设