摘要: Freertos低功耗-Tickless模式 此篇文章在2023年5月15日被记录 很多嵌入式设备都对功耗有严格的控制,特别是消费电子对功耗的控制更为严格,Tickless是freertos中的一个可选模块,主要实现低功耗功能 STM32类芯片的低功耗模式 STM32之类的arm芯片通常有三种低功耗模式: 睡眠模式(sleep):仅CPU 时钟 阅读全文
posted @ 2024-12-13 13:56 shumei52 阅读(802) 评论(0) 推荐(0)
摘要: 此篇文章在2023年4月26日被记录 fifo适用于多种场景,例如在串口中断中来不及接受数据,可以将数据先缓存起来,在任务中再进行处理 fifo也可以称为环形队列,填入数据时在头部填入,取数据从尾部取出 FIFO.c #include "fifo.h" #include "stdio.h" void 阅读全文
posted @ 2024-12-13 13:53 shumei52 阅读(64) 评论(0) 推荐(0)
摘要: linux-全志H3开发日记《U-boot开发》 此篇文章在2023年4月9日被记录 linux U-boot开发 这篇文章的目的 前段时间杰哥弄了个nanopi开发板,在他手里吃灰了很久,到我手里又吃灰了很久,总得学一学不是?!开发板的准确型号是nano pi m1 plus,CPU为全志H3,挺古老的一块处理器了,板载1G的ddr3,性能孱弱, 阅读全文
posted @ 2024-12-11 16:26 shumei52 阅读(300) 评论(0) 推荐(0)
摘要: 此篇文章在2023年3月28日被记录 在中断向量上遇到的坑 在工作中遇到一个坑,APP烧录在FLASH_BASE(0x08000000)地址,但是将APP烧录在指定地址(0x08006000)后正常程序可以运行,但是freertos无法启动调度器,在网上查阅资料后发现是中断向量的问题 什么是中断向量 阅读全文
posted @ 2024-12-11 16:23 shumei52 阅读(91) 评论(0) 推荐(0)
摘要: 此篇文章在2023年3月24日被记录 最近在写boot升级代码时,需要上位机发送固件包到下位机,因为固件包太大,因此需要分包发送,分包发送涉及到校验问题,特意对crc16校验方法进行记录 计算方法 预置1个16位的寄存器为十六进制FFFF(即全为1,我称为种子);称此寄存器为CRC寄存器; 把第一个 阅读全文
posted @ 2024-12-11 16:15 shumei52 阅读(69) 评论(0) 推荐(0)
摘要: 制作一个简单的单片机上的boot系统 此篇文章在2023年3月24日被记录 ARM单片机使用自定义bootloader 什么是BOOT 懂得计算机的同学都知道,电脑在开机时,从上电的那一刻开始,首先会进入bios,这个bios的作用就类似于单片机中的bootloader。万一我们浏览某些不可言状的网站导致系统崩溃时,我们就可以在这个临时 阅读全文
posted @ 2024-12-11 16:12 shumei52 阅读(207) 评论(0) 推荐(0)
摘要: 在STM32上运行KWS之四 边缘设备运行测试 此篇文章在2023年2月15日被记录 如果不将模型部署在边缘设备上加以使用,那我们的模型将毫无意义 怎样在STM32上运行神经网络以及进行推理 STM32最常用使用C语言开发,也有少许用micropython或者是lua开发,但是这些都不在主流范围内,再者说在STM32上使用torch等网络推理框架 阅读全文
posted @ 2024-12-11 16:07 shumei52 阅读(165) 评论(0) 推荐(0)
摘要: 在STM32上运行KWS之三 模型搭建与训练测试 此篇文章在2023年2月6日被记录 搭建一个怎样的模型 KWS模型结构属于比较简单的模型结构,但是为了少走弯路,我计划使用现成的结构,我从这个演示视频参考而来:点击我跳转,这个KWS项目运行在AT32F403上,其网络模型结构为一个64个特征的普通卷积层,然后重复四次的DS-CNN卷积,在每次卷积后 阅读全文
posted @ 2024-12-11 16:07 shumei52 阅读(381) 评论(0) 推荐(0)
摘要: 在STM32上运行KWS之二 样本预处理 此篇文章在2023年2月2日被记录 为什么需要样本 神经网络模型的训练本质上是根据结果寻找最优解的过程,在这个过程中我们需要输入大量的样本以及正确的答案,帮助网络结构内部矫正自己的参数。 样本如何获取 speech_commands_v0.01下载地址,这里整理了数种常用的语音指令供我们使用,每种语 阅读全文
posted @ 2024-12-11 16:06 shumei52 阅读(75) 评论(0) 推荐(0)
摘要: 此篇文章在2023年2月1日被记录 前景提要 公司有一个新产品,产品定义上有一个很愚蠢的交互设计,耳机中有人打电话过来后,会有提示音播放是否接听,此时用户想要接听,随便说什么话都可以接通(甚至噪音都可以),如果不想接通就闭嘴,因此我来了兴趣,能否在单片机上运行简单的语音关键词识别 简述keyword 阅读全文
posted @ 2024-12-11 16:06 shumei52 阅读(240) 评论(0) 推荐(0)
摘要: SD卡-fatfs文件系统移植 此篇文章在2022年12月31日被记录 FATFS文件系统移植 上文中完成了sd卡的驱动代码,本文陈述如何系统移植文件系统 源码下载 源码可以登录fatfs官网下载:http://elm-chan.org/fsw/ff/archives.html 我这里下载最新版本的源码包,下载完成后解压到本地大致 阅读全文
posted @ 2024-12-11 15:45 shumei52 阅读(371) 评论(0) 推荐(0)
摘要: 此篇文章在2022年12月31日被记录 SD卡底层驱动移植 最近希望了解一下文件系统与存储器读写是怎样勾搭起来的,写两篇文章做个记录,本篇文章简单陈述底层驱动的移植,下一篇文章记录移植文件系统的过程 通信方式 SD卡的通信方式主要有两种:四线SPI接口与SDIO接口,SDIO接口具有四根数据线,可以 阅读全文
posted @ 2024-12-11 15:44 shumei52 阅读(183) 评论(0) 推荐(0)
摘要: 神经网络入门之三 C环境部署 此篇文章在2022年12月5日被记录 入门神经网络三 C环境部署 为什么要部署到C环境 上面两篇文章中,我们详细讲解了采集样本与样本训练,生成了一个模型文件,经过测试我们的模型成功率在90%以上,但是我们想将这个模型利用起来,实时检测我们的运动姿态,在ESP32上运行torch显然是不现实的。因此我 阅读全文
posted @ 2024-12-11 15:39 shumei52 阅读(145) 评论(0) 推荐(0)
摘要: 神经网络入门之二 网络搭建 此篇文章在2022年12月1日被记录 入门神经网络二 网络搭建 使用哪种深度学习框架 目前主流的神经网络框架有tensorflow、kears,国产的有百度的PaddlePaddle,但是我是从yolov5入坑的,yolov5官方代码使用的是pytorch框架,所以我使用torch,而且torch框 阅读全文
posted @ 2024-12-11 15:38 shumei52 阅读(31) 评论(0) 推荐(0)
摘要: 此篇文章在2022年11月30日被记录 转移这篇文章时,突然想到了为了采集样本在公司楼下跑步了20分钟 入门神经网络一 样本采集 在本科的时候对神经网络颇有兴趣,感觉很神秘,特别是当时的yolov5目标检测算法,让我感觉特别震撼,计算机在图像识别上已经超过了人眼。但是这么长时间以来一直停留在跑dem 阅读全文
posted @ 2024-12-11 15:38 shumei52 阅读(55) 评论(0) 推荐(0)
摘要: 此篇文章在2022年11月18日被记录 最近需要混音算法,上网查阅了四种常用的混音算法,用python运行来做测试,测试完成的语音数据放在结尾可以下载 混音算法一:加权平均 这种方法很简单,直接将两个PCM样本相加,为了防止溢出再除以二,但是这种方式会导致声音细节丢失声音会变小,并且混入通道数越多, 阅读全文
posted @ 2024-12-10 16:07 shumei52 阅读(574) 评论(0) 推荐(0)
摘要: 此篇文章在2022年10月24日被记录 Makefile简单实用 1、GCC使用 当我们只有一个C文件时,可以用gcc编译直接生成文件,例如写一个main.c #include <stdio.h> int main() { printf("this is main.c\r\n"); return 0 阅读全文
posted @ 2024-12-10 16:03 shumei52 阅读(21) 评论(0) 推荐(0)
摘要: 此篇文章在2022年10月21日被记录 Markdown标题 在文本下方使用多个 表示标题 例如: 这是一级标题 演示: 这是一级标题 在文本下方使用多个 表示小一些的标题 例如: 这是二级标题 演示: 这是二级标题 使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 阅读全文
posted @ 2024-12-10 15:56 shumei52 阅读(35) 评论(0) 推荐(0)
摘要: 此篇文章在2022年10月28日被记录 Numpy矩阵基本运算 1、python矩阵操作 引入库: import numpy as np 创建一个二维矩阵: >>>a = np.mat([[1, 2, 3], [4, 5, 6]]) 打印a矩阵: >>>a matrix([[1, 2, 3], [4 阅读全文
posted @ 2024-12-10 15:54 shumei52 阅读(57) 评论(0) 推荐(0)
摘要: 此篇文章在2022年10月21日被记录 Numpy简单应用 创建一个一维数组 a = np.array([0, 1, 2, 3, 4]) b = np.array((0, 1, 2, 3, 4)) c = np.arange(5) d = np.linspace(0, 2*np.pi, 5) pri 阅读全文
posted @ 2024-12-10 15:51 shumei52 阅读(19) 评论(0) 推荐(0)