好久没撸过单片机了,生疏了很多了,尤其现在都是基于ARM的,记录一下回顾一下:

要想撸代码之前先要把单片机硬件最小系统搭建起来,不然在开发软件包中写着玩没多大意思的。

以目前在用的STM32F105VCT7为例,

如何在单片机上部署深度学习模型 单片机搭建_单片机

 

COTEX-M3核 ,100个脚,看着就爽!资源丰富,引脚够用。 

首先有以下最基本的引脚要接:

1.电源3.3V要先接上不然没电的,电压3.3V有5个VDD引脚,对应有5个接地VSS,依次是脚50、75、100、28、11,49、74、99、27、10;发现没有官方给排列的挺好,每一个电源旁边配置一个地,保证路径最短;其中VDD3应该最重要,要加大电容在附近;

还有一个模拟电压脚22,VDDA,这个脚要和数字电源做个隔离,也就是加个磁珠或电感之类的,当然还有电容滤波。

2.要给它加上震荡源,器件要求的频率范围是3~25MHz,那就给它来个最快的25MHz,直接给来个有源晶振,只接到脚12,osc_in可以了,osc_out就空着就行,那是接晶体谐振器用的,还有osc32_in和out不知道干什么的,没研究,也给空着;

3.有了电源,有了晶振,这两大能量源泉,这核心基本就能动起来了,再给来个上电复位的电路就完美了,一般用RC延时电路就可以,但为了稳定可靠,加一个809之类的复位专用芯片更好,延时140ms,低电平保持,接14脚;

4.有了前面的连接单片机已经活了,但是一般还要写程序下去才能用啊,所以还要加上下载调试接口,一般是JTAG或SWD,还是SWD引脚数量占用的少,SWDIO是72 接上拉,SWDCLK是76 接下拉,把这连个线接到一个接插件上去方便写代码,再把电源3.3V和GND也接上去,可以方便仿真器供电写代码;

5.已经相当可以了,那么一般用ADC采样的话还是要基准稳定可靠,那么在基准引脚21 REF+上接个稳压基准芯片3V的,REF3030AIDBZR,perfect!

6.还要存点啥有用的数据之类的吧,再接个SPI通信的flash上去更爽,给它接到专业引脚上51、52、53、54,spi2nss、spi2sck、spi2miso、spi2mosi,可以接几片存储器,因为是多输入多输出的,怎么用还没研究,反正感觉挺好的。

至此小系统大功告成了!

下面要想写代码就用工具集,里面什么编译器连接器都集成了,就用keil5吧MDK,下载个免费的,我一般这些软件都去吴川斌的博客,下了个5.31的,下下来之后就要找这个单片机的开发包,软件每次自己想下载但都下不下来的,还是自己去网上找吧,我找了个

如何在单片机上部署深度学习模型 单片机搭建_晶振_02

 

 这个版本把连接http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack复制到迅雷里面下的很快。

搞完了就可以要建项目文件夹了,因为arm这种文件比较多的要建好多文件夹,以前的16位及以下的单片机直接都放一个文件夹里就行了,一般也不跑操作系统。

也就是说我们一般搞ARM要基于标准外设库来开发,再也不要去基于硬件寄存器了,因为看寄存器浪费时间太多了,通过固件函数库API无需深入细节;

如何在单片机上部署深度学习模型 单片机搭建_引脚_03

 

 项目文件夹如上,工程文件放在USER里

如何在单片机上部署深度学习模型 单片机搭建_如何在单片机上部署深度学习模型_04

 

 下面就是先把FREERTOS放进去让程序跑起来,接个LED灯,控制它呼吸闪烁就成功了,我还没成功呢,后面还有ISP也就是在线升级要搞,撸代码也是不不容易。

要移植freeRTOS第一步是要修改挂接中断,在startup.S文件

如何在单片机上部署深度学习模型 单片机搭建_如何在单片机上部署深度学习模型_05

 

 systick handler是不停的中断做成的系统节拍时钟,svc和pendsv是上下文切换;

然后到FreeRTOSConfig.h文件里面设置时钟和系统节拍

如何在单片机上部署深度学习模型 单片机搭建_晶振_06

 

 如果编译通过,就移植好了,比把大象装冰箱里还简单一点。