嵌入式
Quieeeet
这个作者很懒,什么都没留下…
展开
-
基于Milk-V Duo平台的AI小项目实践:软件架构逻辑与应用技术解析
本项目借助Milk-V Duo AI开发平台,不仅成功实现了从模型构建、训练到服务化的全过程,而且充分发挥了平台在深度学习计算、资源管理和系统稳定等方面的优势。模型层:在Milk-V Duo平台上,我们首先搭建了基于卷积神经网络(CNN)的图像识别模型结构,利用其内置的深度学习框架如TensorFlow或PyTorch,快速训练和优化模型参数。实时推理优化:针对嵌入式环境,结合Milk-V Duo的硬件特性进行模型量化压缩和优化,实现模型在有限资源下的快速、准确推理。二、软件架构设计逻辑。原创 2024-02-03 20:54:36 · 556 阅读 · 1 评论 -
使用HTTP协议实现嵌入式设备的空中升级
在嵌入式系统中,空中升级是一种常见的需求,它允许我们通过网络将新的固件或软件更新传输到设备中,以便更新设备的功能或修复错误。它是一种无状态的协议,每个请求和响应都是独立的,不会保留之前的状态信息。空中升级的基本原理是将新的固件或软件包通过HTTP协议传输到嵌入式设备中,并在设备端进行解析和更新。如果验证通过,设备端将新的固件或软件包写入设备的存储器中,并进行相应的更新操作。设备端接收到HTTP请求后,解析请求头和请求体,获取到要升级的固件或软件包。使用HTTP协议实现空中升级的代码示例。原创 2023-09-12 11:51:23 · 395 阅读 · 1 评论 -
嵌入式学习路径知识点
嵌入式系统是一种特殊的计算机系统,通常用于控制、监测和执行特定任务。如果您对嵌入式系统的学习感兴趣,以下是一些关键的知识点和学习路径,可以帮助您入门和深入了解嵌入式系统的工作原理和开发过程。以上是嵌入式系统学习路径的一些关键知识点,您可以根据自己的兴趣和需求进行深入学习和实践。请注意,这只是一个概述,嵌入式系统领域非常广泛和深入,还有很多其他的知识和技术需要掌握。原创 2023-09-06 14:44:42 · 176 阅读 · 0 评论 -
实现简单的1.2V电机控制设计
在过去十年中,口腔健康和卫生受到特别关注。这种趋势正在推动发明新的增强型口腔健康技术的设计师进行更多的创新。电动牙刷显著改善了刷牙体验和刷牙习惯。最流行和最有效的电动牙刷类型是旋转或左右移动的电动牙刷。由于电机,可以以声波或较低速度进行运动。现代电动牙刷通常依靠可充电电池,当牙刷在使用之间放置在充电底座中时,通过感应充电进行充电。他们通常使用镍氢(NiMH)电池,其标称电压为1.2 V。低压GreenPAK™ SLG47513的工作电压范围为1 V至1.65 V,可控制牙刷的操作。原创 2023-08-21 14:28:05 · 180 阅读 · 0 评论 -
记录C/C++回调函数
回调函数是一种在C/C++中常用的编程技术,它允许将一个函数作为参数传递给另一个函数。这种机制使得一个函数可以在运行时动态地调用另一个函数,从而实现更灵活和可扩展的程序设计。原创 2023-08-15 11:54:19 · 67 阅读 · 0 评论 -
回调函数加消息队列的使用
【代码】回调函数加消息队列的使用。原创 2023-06-28 15:44:25 · 182 阅读 · 0 评论 -
自己的记录 结构体全局变量多个文件调用
定义条件编译:可以使用 #ifdef、#ifndef、#else 和 #endif 等条件编译指令来进行条件编译。// 声明为全局变量。a.c 包含头文件。原创 2023-06-09 15:14:46 · 441 阅读 · 0 评论 -
关于回调函数重复触发 如何解决的
可以将回调函数作为状态机的事件处理程序,并在每个状态转换时检查是否已经触发了回调函数。如果已经触发了回调函数,则不再执行该回调函数。2.使用计数器:可以在回调函数中添加一个计数器,每次调用回调函数时递增计数器的值。1.使用闭包:闭包是一个函数和其相关的引用环境的组合。通过将回调函数作为参数传递给另一个函数,并在该函数内部定义一个闭包来保存该回调函数及其引用环境,可以确保回调函数只被触发一次。无论使用哪种方法,都需要仔细考虑如何设计和实现回调函数以确保它们只被触发一次。原创 2023-06-07 20:49:24 · 623 阅读 · 0 评论 -
FreeRTOS的应用
FreeRTOS是一种开源实时操作系统,专门为嵌入式系统设计。它提供了一组任务调度、内存管理、中断控制等功能,可以帮助开发人员快速构建高效的嵌入式系统。本文将详细介绍如何使用FreeRTOS来构建一个简单的嵌入式系统。原创 2023-05-19 15:15:19 · 681 阅读 · 0 评论 -
单线通信协议
协议通信双方在单一的一条gpio高电平线上来输出相应的高低电平脉冲波形。通信时,发送端输出脉冲波形 接收端输入读取脉冲波形。原创 2023-05-12 20:19:22 · 1478 阅读 · 0 评论 -
HC32F030通过Flash保存计数并自增
其中,我们首先从Flash中读取之前保存的计数值,如果读取的值不为0xFFFFFFFF,就将其赋值给u32Count。其中,我们首先初始化LED的IO口,并将其配置为输出推挽模式。然后,我们通过计数值的大小来控制LED的闪烁次数,每当计数值为1000的倍数时,就让LED闪烁一次。为了方便观察计数值是否正确保存,我们可以通过控制LED闪烁来表示计数值的大小。其中,FLASH_ADR_SAVE是我们在Flash中保存值的地址,这里定义为0x0800 3C00。在主函数中添加以下代码,实现计数值的保存。原创 2023-03-10 14:17:16 · 233 阅读 · 0 评论 -
STM32F4系列单片机,实现3个计数器的预置值。
在以上代码中,我们使用RCC_APB1PeriphClockCmd和RCC_APB2PeriphClockCmd函数开启TIM1、TIM2、TIM3计数器的时钟,然后使用TIM_TimeBaseInitStruct结构体初始化计数器。STM32系列单片机内部集成了多个计数器,这些计数器可以通过内部时钟或外部时钟源进行计数,并可以通过预置值(PR)来控制计数器的初始值。配置预置值:为了实现3个计数器的预置值,我们需要使用TIM_SetAutoreload函数设置计数器的自动重装值,即预置值。原创 2023-03-10 13:55:39 · 657 阅读 · 0 评论 -
使用VS Code配置单片机开发环境的一些基本步骤
配置调试器:在VS Code中安装并配置调试器,以便您可以在VS Code中调试您的单片机应用程序。例如,如果您使用的是OpenOCD调试器,您可以安装Cortex-Debug扩展,并在.vscode/launch.json文件中配置调试器。然后,在文件中编写您的代码。编译和调试:在VS Code中打开终端视图,切换到您的项目文件夹,使用编译器编译您的代码,并使用调试器调试您的应用程序。创建工作区:在VS Code中创建一个新的工作区,然后在工作区中创建一个新的文件夹,作为您的项目文件夹。原创 2023-03-10 13:43:02 · 1649 阅读 · 0 评论 -
基于STM32和SX1278做LoRa网关
本文介绍如何使用STM32和SX1278模块搭建一个简单的LoRa网关,该网关可用于连接远程LoRa节点和互联网,并将节点数据转发到云平台。原创 2023-03-08 15:37:47 · 1517 阅读 · 2 评论 -
如何选择合适的嵌入式操作系统
Windows Embedded是微软公司推出的一款商业嵌入式操作系统,它的特点是功能强大、易用、可扩展、可定制,适用于需要高度可定制化和高性能的嵌入式设备。Linux是一款广泛使用的开源操作系统,它的特点是功能强大、可移植、可定制、可扩展,适用于需要高度定制化和高性能的嵌入式设备。总之,选择合适的嵌入式操作系统需要考虑多个因素,包括设备的资源、项目的要求、开发者的技能以及社区的支持等。5.设备的性能和资源:资源有限的设备可以选择小巧、高效的嵌入式操作系统,而性能更强的设备可以选择功能更强大的操作系统。原创 2023-03-07 16:29:33 · 852 阅读 · 0 评论 -
第一次接触open cpu记录
一种普通应用模式,通常用户应用程序运行在外加MCU上,使用串口发送AT指令及反馈实现与模组的交互。而OpenCPU模式是一种以模块作为主处理器的应用方式。用户程序可把模组当做MCU,入口函数由main变成opencpu_task_main(名称根据具体模组而定)即可,通过函数调用实现与模组的交互。模组加上设备MCU,对于设备厂商,需要进行MCU软件开发,从而实现本地通讯协议,增加客户的研发难度。实际上,通过通信模组去实现MCU的功能,将远远大于MCU直接提供的能力。原创 2022-09-21 14:56:44 · 2543 阅读 · 0 评论 -
记录自己学习GD32F103R 使用fmc的过程
记录 学习 GD32 FMC FLASH原创 2022-08-25 16:30:28 · 755 阅读 · 0 评论 -
GD32F103RCT6 FMC写入flash 读出来全是ffff 是什么问题?
【代码】GD32F103RCT6 FMC写入flash 读出来全是ffff 是什么问题?原创 2022-08-25 08:59:19 · 913 阅读 · 4 评论 -
GD32 关于CH1_ON与CH1 输出互补pwm记录
【代码】GD32 关于CH1_ON与CH1 输出互补pwm记录。原创 2022-08-20 08:45:34 · 2392 阅读 · 0 评论 -
关于使用GD32E230C SPI驱动SX1278遇到的坑
GD32 SPI SX1278原创 2022-06-01 11:30:17 · 1120 阅读 · 0 评论 -
GD32E230C8T6_OTA升级
GD32E230C8T6_OTA升级运行环境简介程序的起始地址进行分区总体流程图Bootloader 程序Bootloader 编译设置APP 分区部分APP 编译设置重点步骤运行环境1.Windows102. Keil5(MDK5) Version 5.27.0.03. MCU GD32E230C8T6简介本例程主要分析在线升级(OTA)的实现过程, 主要是针对IAP OTA从原理分析, 分区划分, 到代码编写和实验验证等过程阐述这一过程. 和大家以前理解OTA的原理.作者也是通过已有的网上原创 2021-08-27 14:56:45 · 5685 阅读 · 8 评论 -
通信模块usart接收的封装
usart初始化void usart_init(void){ /* enable USART clock */ rcu_periph_clock_enable(RCU_USART0); /* USART configure */ usart_deinit(USART0); usart_baudrate_set(USART0, 115200U); usa...原创 2020-03-31 14:18:44 · 1105 阅读 · 0 评论