课程目的:旨在为AI深度学习解决方案提供关于ST生态系统的实践体验
实验步骤:
下载AI演示项目到ST开发板上
借助智能手机/平板电脑上的应用程序,将传感器数据和标签记录在ST开发板上
给定的Python脚本将处理数据集并训练NN模型
在STM32CubeMX.AI工具的帮助下,将神经网络训练好的模型导入到STM32项目中
相关软硬件简介
软硬件需求列表
IoT开发板—B-L475E-IOT01A
FP-AI-SENSING1
实验1:STM32固件下载和演示测试
连接B-L475-IOT01A
在ST-LINK(调试器)驱动程序已正确安装的情况下,端口(LD6)附近的指示灯将切换为红色
ST-LINK驱动安装
ST-LINK驱动安装检查
B-L475-IOT01A默认固件下载
打开工程
修改main.c文件
修改main.c文件中的InitBlueNRG_Stack(void)函数,BoardName字符串将是手机/平板APP中显示的开发板名字
FP-AI-SENSING1编译及下载
单击Rebuild all,然后单击Download and Debug按钮。将固件成功下载到STM32后,单击Stop按钮
Open the FW project in CubeIDE
修改main.c文件
修改main.c文件中的Init_BlueNRG_Stack (void)函数,BoardName字符串将是手机/平板APP中显示的开发板名字
Build the code
下载到开发板
ST BLE Sensor App
BLE Sensor应用程序。选择BLE名称;在下面的选项卡中选择“Activity Recognition”;晃动开发板,确认活动将从“Still”变为“Walking”或“Running”。
实验2:数据收集和神经网络训练
数据收集
使用ST BLE Sensor应用程序,我们现在可以收集特定状态(步行、慢跑、静止、楼梯)的运动传感器数据,并标记它们,以便通过重新训练神经网络来更新它。
在记录新手势的数据时,请注意以下细节:先启动日志,再打开标签。
手势完成后,可以禁用手势标签(手势末尾也会做注释)并停止日志(关闭.csv文件)。
断开USB连接
将跳线从位置“1-2”移动到“5-6”
将USB电缆连接到USB OTG端口
在保持按下“USER”(用户)按钮的同时,还按下“Reset”(复位)按钮
先松开“Reset”(重置)按钮后,再松开“USER”(用户)按钮
神经网络训练
Python脚本命令行参数选项
实验3:导入更新的网络模型并下载
STM32固件更新
关键字:STM32 HAR STM32L4
引用地址:
STM32 AI实验课程—HAR在STM32L4上的实现
推荐阅读最新更新时间:2024-11-02 10:15
关于stm32 APB总线上的"接口时钟使能"与"外设时钟使能"
今天看 例说stm32 上的RTC时钟,发现他没有使能APB1的上BKP时钟,就能读出BKP寄存器里的内容.很是不解,又看了一遍发现APB总线上的时钟使能分为两种,一种是时接口时钟一种是外设时钟. 又仔细观查了一下时钟树发现在APB外设时钟使能寄存器上表现为接口时钟的都已经有了自己的时钟,再经实验证明所有这种不需要在APB上使能就有自已时钟的外设(即在APBxENR的某一位上代表的是这个外设的接口时钟的外设)在不需要使能接口时钟的情况下就能读出这种外设的寄存器的内容!
[单片机]
STM32 PWM的输出与Keil软件仿真
STM32 PWM的输出 脉冲宽度模式(PWM模式)可以用来产生一个由TIMx_ARR寄存器确定平率,由TIMx_CCRx寄存器确定占空比的信号。在STM32开发中,由于官方提供了较为完善的库函数,使得我们的开发工作变得相当的轻松,甚至可以在不需要太多了解硬件结构的条件下,完成我的开发工作,实现我们所需要的功能。在此,笔者也建议大家,在初学的时候尽量去熟悉固件库中提供的函数来调节PWM的频率和占空比,对底层寄存器的操作应尽量减少。 本文使用的STM32F103RB的芯片,输出通道是TIM2_CH2通道,STM32有较强的可移植性,如果读者的芯片类型跟我不一样,可以做适当的修改,完成自己的开发。 使用到的库函数有: s
[单片机]
STM32 串口通讯 发送 接收
STM32的使用有利有弊,种类多---但是种类有太多,资料也是比较乱的,还有就是库的调用,经常忘记一些函数的使用------比如最常用的串口------ ------------------------------------------------------------------------------USART ----设置------------------------------- void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;
[单片机]
stm32 外设配置时注意RCC开启的问题
RCC的全称是Reset and Clock Control 复位和时钟控制 复位就不必讲了,和实际编程的联系不是很大。 时钟是必须要理解的,不然程序就不能按照设计的来运行。 例如: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
STM32 USB软件移植注意事项 及硬件接线注意
移植了个自定义HID USB程序到STM32开发板上,成功运行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活没有反应。经过几番调试终于发现问题,以下做个小结: 1.一定要保证USB时钟是48MHZ; 使用PLL作系统时钟SCLK;而USB时钟只能是SCLK的1分频或者1.5分频,要得到48MHZ的USB时钟,则SCLK只能为48MHZ或者72MHZ;由于我是用的内部晶振8MHZ,PLL时钟最大是8MHZ Div2 再倍频16 也就是最大只能到64MHZ,所以只能配成48MHZ才能满足要求;如果使用外部晶振,PLL可以直接倍频HSE 而不用Div2; 2.注意中断向量名称; 由于我使用的是Keil 里
[单片机]
DFSDM模块的配置
1、引言 客户在使用 STM32H743 的 DFSDM 模块时,配置有误。于是协助客户按照下面的方法进行配置并分享之。 2、参数的计算 使用 NUCLEO-H743 开发板进行测试。由于客户需要 16KHz 音频数据, 24bits 的音频数据,因此配置如下。 PDMMic - PDM data - 滤波器类型 - 过采样率 Fosr(滤波器)- 过采样率 Isor(积分器)- 右移位器 - 偏移补偿 - 采样数据 Clock out (CKOUT)的计算 Fs= Fclockout/( Fosr*Iosr) Fs= 16kHz 音频数据 Fosr:滤波器过采样率,也就是抽取率,在这里取 128 Iosr:积分器过采样率,在
[单片机]
STM32:STM32学习记录3:按键输入
1:IO配置:。上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为 有弱上拉)。下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号。 2:stm32的GPIO既可以设置为输出也可以设置为输入,当设置为输入时,输出还是可以有效的,当设为上拉时,可以把输出设为高电平,而设为下拉输入时,把输出设为低电平,这样就有了上拉和下拉。 3:STM32 支持 JTAG 和 SWD 两种仿真接口,他们和普通的 IO 口共用,当需要使用普通 IO口的时候,则必须先禁止 JTAG/SWD。STM32 在默认状态下是开启 JT
[单片机]
stm32若干技巧
技巧1:关于串口接收 对于串口数据帧到检测,对于串口接收有判定帧头、尾 FIFO缓存等方式,推荐采用超时判断来确定一帧数据接收完成,尤其对于处理GPS,3G模块数据效,比判断帧头、尾效果好的多。参考网友模式 //检测超时函数 供定时器中断调用-1ms一次 // t为超时时间 __inline void Chk_TimeOut(u8 t) { if(!uartRMsg.rcOK && (uartRMsg.rcIndex =8) && (++uartRMsg.rcS =t) ) //超时之后,开始重新解码 uartRMsg.rcOK = true; } //接收函数, 供USART中断调用 __inline void Recie
[单片机]