今天碰到的DMA多通道采集的问题
今天使用STM32L432开启多路ADC采集,本以为很简单结果还是遇到了大坑,一直卡死在HAL_ADC_Start_DMA函数,需要注意以下问题:1、DMA开启循环采集模式,字节选择半字,ADC中断关掉。2、在cubemx中,DMA中断无法关闭,在MX_DMA_Init()函数中关掉DMA的中断://HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
今天使用STM32L432开启多路ADC采集,本以为很简单结果还是遇到了大坑,一直卡死在HAL_ADC_Start_DMA函数,需要注意以下问题:1、DMA开启循环采集模式,字节选择半字,ADC中断关掉。2、在cubemx中,DMA中断无法关闭,在MX_DMA_Init()函数中关掉DMA的中断://HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
上文说了STM32L4的几种低功耗模式,将其应用起来作为一个低功耗的延时方案。为什么使用低功耗定时器,在追求长时间续航时,单片机有时需要切换到低功耗模式或者停止模式下,在这种模式下,系统主时钟关闭,有一些依赖于系统主时钟的应用程序,可能会发生出现某些奇怪的情况。因此在休眠唤醒后对主时钟进行校准,防止出现莫名其妙的BUG。LPTIM全称:Low Power TIM ,我们将其运行在计数模式下,其时钟
STM32低功耗介绍:STM32L4系列单片机总共有9中低功耗模式:1、Sleep mode:CPU时钟关闭,IO口保持与运行状态相同的状态。可由wake事件,NVIC,SysTick,外部中断等,无唤醒时间,唤醒后执行唤醒源中断回调函数(和标准库中断服务函数功能一样,但意义不同),然后按原来代码执行。2、Low-power run mode: 当系统时钟频率降低到2MHZ以下时,即可实现此模式。
在单片机中显示动画是一件很浪费资源的事情,在那个小小的flash中存入一大坨数据是相当费力地,因此就进度条动画而言,有一种相当简单的实现方式,就是重复移动整个图片然后遮住某个部分,例如这个样子:动图中可以看到在被遮住后,达到了动画的效果实现该功能并且封装成函数:/* *函数说明:这个函数用来在屏幕上显示进度条动画,旨在节省资源 *参数传入:1、父对象;2、图片内容3、原始图片被分成几部分了(备注详
Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库设置标识符,让别人知道你是谁:git config --global user.name "tianshuaikang" git config --global user.email tianshuaikang@ifengyu.com 创建版本库:在文件
卡尔曼滤波是一种优秀的滤波方式,在很多方面都有使用到,比如四旋翼飞行器中的IMU滤波,超声波数据滤波,ADC数据采集滤波。最近在网上看了看,发现想从原理上理解卡尔曼滤波还是有些费劲的,虽然源代码就那么几行,那么先做一点实验验证可行性吧,先上代码: typedef struct { float LastP;//上次估算协方差 初始化值为0.02 float Now_P;//当
WakeOnLan简述一下什么是WakeOnLan,全称是通过网线唤醒(大白话),是一种电源管理系统,它是由IBM公司提出的网络唤醒标准,目前已被大多数的主板所支持。所存在的缺点就是只能通过网线唤醒,对我来说的话基本上用不到(我用的是笔记本),大部分的有线网卡都支持WOL,在网络和共享中心打开以太网络连接,点击属性->配置,因为系统和驱动的不同,导致WOL的开启方式不同,在我的电脑中就是电源
esp8266作为带有wifi功能的单片机可谓是红极一时,很多厂家用它来做智能开关,同时倒闭的厂家也有很多,最近逛闲鱼发现了一批这样的倒闭插座,买了一批回来玩玩:商家请结一下广告费,八个起包邮,索性一次性买了八个。闲鱼网友五彩斑斓的黑对引脚定义进行了总结(感谢!):16为黄灯5为按键4为继电器拆开设备发现厂家将烧录引脚全引出来了,用USB-TTL进行烧录(这里接线就不用说了吧),旁边的焊盘是IO0
看人家lvgl开源项目那么厉害,自己也想写一个简单的UI,从最简单的开始,使用的硬件为单片机;STM32F411单片机外设:一个按键屏幕:SSD1306 OLED屏幕先上效果:1、屏幕上电会显示四个元素(宏定义修改),被选中的元素会比其他的稍微大一些。2、在向下切换时,会有一点点动态效果,被选中的元素会有一点点放大的效果。切换时使用按键单击控制。3、在进入被选定元素后,会从被选定元素向两周扩散至全
ota使用在智能家居上非常常见,当供应商需要对远程智能家居进行固件更新,让用户插在电脑上串口升级显然是不可能的,所以需要进行无限升级 yeah~。无论是stm32、esp32都了解他们的固件存储位置,专业点讲就是分区,在esp32默认分区中,并不存在ota分区,所以需要在menuconfig中设置新的分区表,如图,我在vscode中设置:这个分区表将esp32上外置的4MB flash分为以下几个