嵌入式开发基础软件架构及部分实例代码
由于项目逐渐复杂,分层进行代码的编写操作
·
文章背景:
随着我们学习的深入,把所有的代码都放在一个目录会影响我们以后的移植和维护,所以我们需要对代码进行分层。(能力有限欢迎补充,持续更新)
分层介绍:
根据代码的不同应用场景我们可以分为以下几层
第零层:公共层(计算机从零开始 狗头保命)
也称为通用层,就是大家经常使用的都可以放在里面。
例如:
- 延迟函数(Dealy)
- stm32的滴答定时器延迟函数示例:
-
void Com_Delay_us(uint16_t us) { /* 定时器重装值 */ SysTick->LOAD = 72 * us; /* 清除当前计数值 */ SysTick->VAL = 0; /*设置内部时钟源(2位->1),不需要中断(1位->0),并启动定时器(0位->1)*/ SysTick->CTRL = 0x5; /*等待计数到0, 如果计数到0则16位会置为1*/ while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG)); /* 关闭定时器 */ SysTick->CTRL &= ~SysTick_CTRL_ENABLE; } void Com_Delay_ms(uint16_t ms) { while (ms--) { Com_Delay_us(1000); } } void Com_Delay_s(uint16_t s) { while (s--) { Com_Delay_ms(1000); } }
-
- stm32的滴答定时器延迟函数示例:
- Deabug模块
- 示例:待补充
- 。。。(等 待补充!!)
第一层:驱动层(从底层开始依次递增)(Driver)
直接控制存在于芯片内部的电路
例如:
- I2C驱动
- 示例:硬件实现 I2C代码硬件实现
- 示例:软件实现I2C代码软件模拟与Delay代码寄存器延迟函数
- USART驱动
- 示例:USART串口通讯函数实现 (基于寄存器)-CSDN博客
- GPIO驱动
- 示例:待补充
- SPI驱动
- 示例:待补充
- 。。。(等,,,)
第二层:硬件接口层(Int)
控制外接电路,简单来说就是不在芯片内部,自己买的用来读取某些值或者控制某些事
例如:
- LCD
- 示例:待补充
- 外置ADC
- 示例:待补充
- 继电器
- 示例:待补充
- 。。。(等、、、)
第三层:中间层(Mid)
第四层:应用层
整合已读取的数据,控制操作硬件进行工作,实现需要的功能
例如:
- 显示模块
- 示例:待补充
- 水位测量
- 示例:待补充
- 水质监测
- 示例:待补充
- 。。。(等,,,)
第五层:Main函数
调用自己写的函数,运行呗!! 就不例如了 通常只写初始话,尽量低耦合;
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)