计算网站制作教程.net 开源 企业网站

张小明 2026/1/15 19:18:27
计算网站制作教程,.net 开源 企业网站,郑州市重点项目建设办公室网站,网络营销平台都有哪些一、简介 此篇文章专用于记录以及汇总嵌入式高级编程技巧。当然这里面就不会去再单独讲解一次合理使用一些关键词#xff08;比如const、static、volital#xff09;去优化程序代码的情况了。 如有错误欢迎在评论区指出#xff0c;或者有其他的小技巧#xff0c;也欢迎在评…一、简介此篇文章专用于记录以及汇总嵌入式高级编程技巧。当然这里面就不会去再单独讲解一次合理使用一些关键词比如const、static、volital去优化程序代码的情况了。如有错误欢迎在评论区指出或者有其他的小技巧也欢迎在评论区分享以便收录。二、技巧汇总2.1 基于面向对象的思想使用C语言实现统一管理各模块的函数接口2.1.1 来源基于WM IoT SDK的架构设计中的驱动接口层编程方法进行技巧总结得到使用结构体模拟面向对像的思想实现通过一个结构或者结构体指针的实例化来创建一个驱动功能对象进行后续操作。2.1.2 实战.h// // Created by zky on 2025/12/12. // #ifndef LCKFB_SKY_STAR_PROJECT_LED_H #define LCKFB_SKY_STAR_PROJECT_LED_H #define LED_GPIO_PORT GPIOB #define LED_GPIO_PIN GPIO_PIN_2 #define LED_GPIO_ON GPIO_PIN_SET #define LED_GPIO_OFF GPIO_PIN_RESET #ifdef __cplusplus extern C{ #endif // LED接口结构体完全复用参考架构的接口定义确保兼容性 struct LedInterface{ void (*pfinit)(void); // 初始化接口 void (*pftask)(void); // FreeRTOS任务接口 void (*pfon)(void); // 点亮接口 void (*pfoff)(void); // 熄灭接口 void (*pftoggle)(void); // 翻转接口 }; // 外部声明接口实例供其他模块调用如main.c、按键模块 extern struct LedInterface led_interface; #ifdef __cplusplus } #endif #endif //LCKFB_SKY_STAR_PROJECT_LED_H.c// // Created by zky on 2025/12/12. // #include led.h #include gpio.h #include freertos.h #include task.h static void led_init(void); // 初始化实现 static void led_task(void); // FreeRTOS任务实现 static void led_on(void); // 点亮实现带LED类型参数 static void led_off(void); // 熄灭实现带LED类型参数 static void led_toggle(void); // 翻转实现带LED类型参数 struct LedInterface led_interface { .pfinit led_init, .pftask led_task, .pfon led_on, .pfoff led_off, .pftoggle led_toggle, }; static void led_init() { led_off(); } static void led_task(void) { while(1) { led_toggle(); vTaskDelay(200); } } static void led_on(void) { HAL_GPIO_WritePin(LED_GPIO_PORT, LED_GPIO_PIN, LED_GPIO_ON); } static void led_off(void) { HAL_GPIO_WritePin(LED_GPIO_PORT, LED_GPIO_PIN, LED_GPIO_OFF); } static void led_toggle(void) { HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PIN); }2.2 函数指针与回调2.2.1 来源基于STM32 HAL库中的多种串口中断类型的回调中断函数和正点原子的Linux裸机教程中中断代码部分而总结出。函数指针函数指针可以传递函数作为参数实现回调机制。回调函数的核心本质是把函数作为参数传递给另一个函数在特定事件触发时如中断完成、任务执行结束、数据接收完毕由被调用方反向调用这个函数。2.2.2 实战callback.h// // Created by zky on 2025/12/16. // #ifndef LCKFB_SKY_STAR_PROJECT_CALLBACK_H #define LCKFB_SKY_STAR_PROJECT_CALLBACK_H //用 typedef 定义函数指针明确回调函数的格式无参数、无返回值 typedef void (*CallbackFunc)(void); void register_callback(CallbackFunc cb); void trigger_callback(void); #endif //LCKFB_SKY_STAR_PROJECT_CALLBACK_Hcallback.c// // Created by zky on 2025/12/16. // #include callback.h #include stdio.h #include stdint.h // 全局函数指针存储注册的回调函数地址调用方持有指针 static CallbackFunc g_registered_cb NULL; // 注册回调函数的接口给上层调用传入回调地址 void register_callback(CallbackFunc cb) { if (cb ! NULL) { g_registered_cb cb; // 保存回调函数地址 } } // 触发回调的逻辑调用方在特定事件如延时到期、硬件触发时执行 void trigger_callback(void) { if (g_registered_cb ! NULL) { g_registered_cb(); // 通过函数指针调用回调函数 } }main.c// 回调函数 1打印信?? void my_callback1(void) { printf(回调 callback1\r\n); } // 回调函数 2更新状态嵌入式常用 uint8_t g_device_status 0; void my_callback2(void) { g_device_status 1; // 事件触发后更新设备状?? printf(callback2 : %d\r\n, g_device_status); } void app_callback(void* parameter) { printf(app_callback is running.\r\n); // 1. 注册回调函数?择要挂钩的逻辑?? register_callback(my_callback2); // 2. 模拟事件触发实际场景可能是中断、定时器超时?? printf(moni test1\r\n); trigger_callback(); // 触发回调执?? my_callback2 // 切换回调函数灵活替换?辑无??修改调用方代码 register_callback(my_callback1); printf(moni test2\r\n); trigger_callback(); // 触发回调执?? my_callback1 while (1) { } }2.3
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

郑州网站推广公司信息大理州城乡建设局网站

第一章:私有化 Dify SSL 配置概述在企业级部署 Dify 时,启用 SSL 加密是保障数据传输安全的关键步骤。私有化部署环境中,通常需要通过自定义域名与受信证书实现 HTTPS 访问,以满足内部合规性与外部访问的安全要求。配置 SSL 不仅能…

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

句容建设局网站招标公众号里原文单发到dede网站上

制造业面临技能人才短缺与培养周期长的挑战。我们将CAXA CAD工艺图表中的标准工艺知识库作为新员工培训的核心资源。库中沉淀的标准作业程序、典型案例,是新员工系统学习岗位要求的有效途径。CAXA生成的可视化工艺文件使新手能直观理解操作要点,降低学习…

张小明 2026/1/10 6:48:55 网站建设

全屏网站大小网站建设维护 微信

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个对比演示工具,左侧模拟传统排查流程(手动检查服务状态、注册表、防火墙等),右侧集成AI自动诊断。功能包括:1. 虚…

张小明 2026/1/10 6:48:55 网站建设

手机网站域名哪里注册时间网页制作及欣赏

第一章:MCP SC-400高危漏洞修复概述MCP SC-400是一项关键的安全控制协议,近期被发现存在高危权限绕过漏洞(CVE-2023-4000),攻击者可在未授权情况下访问受保护的系统资源。该漏洞主要影响启用了默认身份验证链的部署环境…

张小明 2026/1/10 6:48:56 网站建设

怎么查看网站的域名百度推广和百度竞价有什么区别

XDP 编程:从基础到实践 1. 数据包处理器 在 XDP(eXpress Data Path)中,数据包处理器是执行 BPF 程序和协调网络栈交互的核心组件。它直接处理来自网卡接收(RX)队列的数据包,确保数据包可读可写,并允许以数据包处理器操作的形式附加后处理裁决。其特点如下: - 运行…

张小明 2026/1/10 6:48:56 网站建设

张家港高端网站制作深圳网站建设怎么办

Linux系统管理:用户、压缩与备份全解析 1. 用户管理操作 1.1 删除用户组 在命令提示符下,输入 groupdel groupies 并按回车键,可从系统中删除 groupies 用户组。 groupdel 命令会编辑 /etc/group 文件。 1.2 退出shell 输入 exit 并按回车键,即可退出当前的…

张小明 2026/1/11 18:24:24 网站建设