自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (2)
  • 收藏
  • 关注

原创 STM32L476进入STOP模式前,GPIO&外设接口的配置方法详解(持续更新中。。。)

待机模式不推荐,因为在Standby模式下GPIO无法保持电平状态,会产生不必要的功耗,所以并不适用。IIC外设我们一般会在外部接上拉电阻,所以无需处理,但是考虑到实际应用中(比如外设未供电,外设供电未接上拉,或外设空载等情况),我们这里给出的建议的建议是在进入STOP模式之前将IIC引脚反初始化,单片机唤醒后重新对IIC的引脚进行初始化即可。当然这样会占用CPU资源,所以如果确定外设一直存在的情况下,可以不处理,或者可以确定外设永远用不到的情况下也可以把引脚配置为上拉,同样可以达到最低功耗。

2024-03-21 15:46:19 249 1

原创 STM32CubeMX+HAL库采用SPI方式驱动FLASH芯片-SST25VF080B

2.写多个字节数据:(写多个字节数据时,相对来说会比较麻烦,由下图我们可以看出,在允许写数据的情况下,我们需要先拉低CE,然后发送0xAD命令,紧跟着是3个字节的24位地址然后是两个字节的数据,拉高CE,随后就是有规律的0xAD命令两个字节数据,如此循环,最后我们发送WRDI命令来退出AAI(地址自动增加)模式)。由图可以看出,我们先拉低CE,然后发送命令0x06,就可以对FLASH进行写数据了,反之发送命令0x04后,将不能对FLASH进行写操作。

2024-03-11 17:31:01 909

原创 STM32CubeMX+HAL库+ADC采样配置详解(单通道,多通道,轮询,DMA,中断)

2、配置模式(扫描模式打开,连续转换关闭,间断模式打开,间断间隔为1,转换数量为3)3、配置模式:(扫描模式关闭,连续转换打开,间断模式关闭,DMA连续请求打开)3、配置模式(扫描模式打开,连续转换打开,间断模式关闭,DMA连续请求打开)2、配置模式:(扫描模式关闭,连续转换打开,间断模式关闭,采样时间选择)2、配置模式(扫描模式关闭,连续转换打开,间断模式关闭,打开ADC中断)2、添加DMA通道,打开DMA中断:(循环模式,数据宽度WORD)六、多通道中断模式不太适用,这里我们不做介绍。

2024-01-25 10:26:52 922

原创 STM32+HAL库ADC采样(采用内部基准电压)

2、在CubeMX配置Data Width为WORD时,数组ADC_ConvertedValue应该定义为uint32_t,否则配置Data Width为HALF WORD时,数组ADC_ConvertedValue应该定义为uint16_t.VREF_DATA:ADC转换后的实际VREFINT输出值,我们可以通过ADC的通道17读出来,该值在1.2V左右;有了以上的基础,我们便可以通过配置CubeMX来产生我们需要的代码如下图:(大家可以根据自己的需求来选择相应的通道)便可以计算的出自己所需要的值。

2024-01-24 14:10:13 715 1

原创 STM32L476 STOP模式低功耗避坑指南

难道是配置了中断模式,上电或复位后造成了误触发?后来把中断取消,改为input模式,结果依旧,看来和中断的关系不大,然后又取消了一个DI,发现功耗降下来了一半,分析还是在DI配置上出问题了,CubeMX默认配置的管脚没有上下拉,采用浮空输入模式,故这个引脚电平是不确定的状态,后来改为了上拉输入,休眠功耗降至7uA,大功告成,折磨了我好几天,终于好了,另外还有一个,在CubeMX上需要勾选一句话,可以把所有未用到引脚配置为模拟输入模式,最好也勾上,以减少不必要的电流消耗。

2024-01-15 15:23:15 457 1

原创 STM32+HAL库IIC驱动LCD段码屏

段式LCD的引脚一般分为SEG和COM,COM作为公共驱动,SEG作为区段驱动,即单个COM和多个SEG段共同控制着LCD上部分像素点。D7:数据最高位C指的是如果该位为0,则下一个字节是写入RAM的数据;如果该位为1,则下一个字节则是命令;常用的命令还有下边列举出来的一些,我就不一一解析了,大家可以在数据手册中找到,写的非常详细。D3:如果该位为0,则输出全部停止,D3位为1时输出才有效;D4---D0:可以设置RAM的地址。

2023-12-28 15:52:05 951 1

原创 STM32CubeMX+freeRTOS系统+串口DMA通信IDLE中断

这里有两个新的知识点:任务通知和任务接收函数,在串口中断的回调函数中,我们发出了任务通知,在这里我们收到任务通知后,可以对收到的数据根据自己的需求进行处理,我们这里为了演示方便,返回的数据为输入缓冲区第0个字节每次加1,返回的数据长度等于收到的数据长度,文章末尾我们给出了示例图片。

2023-12-01 16:51:27 493 1

原创 初始freeRTOS系统,点亮LED灯

osKernelStart():用来开启任务调度,之后程序就交给操作系统了,总是在中断和任务中来回切换。osThreadCreate():创建一个线程并将其添加到活动线程中,并将其设置为READY状态。osThreadDef():创建一个具有函数、优先级和堆栈要求的线程定义。ThreadID:线程的唯一标识符,可以用来区分不同的线程。LED_Task:任务的启动函数,逻辑代码在这里边写;在工程文件中新建一个led.c和led.h文件。在main函数中,有一个最重要的函数,即。128:线程函数的堆栈大小;

2023-11-30 14:02:39 110

原创 STM32L051 RTC+STOP模式低功耗实例详解

从RTC唤醒后,给标志位置0,然后执行后四句就可以了,也可以根据自己的硬件电路,做相应的处理,来实现最低功耗。1、首先我们打开STM32CubeMX软件新建一个工程文件,这里我们的单片机选的是STM32L051C8TX,封装为LQFP48;唤醒后,我们程序是从进入休眠时的位置继续执行,这里我们用while循环实现,RTC周期性定时唤醒,执行一段程序后继续进入休眠。最后点击GENRRATE CODE 生成代码,我用的是keil软件,代码生成后需要自己添加一些进入低功耗的程序。

2023-11-20 10:37:54 962 4

原创 二极管重要参数及选型参考

1、TVS二极管也称为瞬态抑制二极管,有单向和双向之分,当TVS二极管的两端经受瞬态高压尖峰脉冲冲击时,以ns级的速度导通,将瞬间高脉冲电压钳位在较低值,从而实现保护后级电路。常用的有BZV55系列,ZMM系列,1SMA(B)系列等。1、肖特基二极管由于正向压降低,反向恢复时间短(10ns以内),一般用在高频,大电流,低电压整流电路中,例如防反接二极管,开关电源的续流二极管等。IR(反向漏电流):当反偏电压小于VR时,齐纳二极管的反向漏电流(一般很小,但是对于齐纳电压越低的管子来说,反向漏电流越大);

2023-11-17 16:49:24 1198

原创 STM32+HAL库IIC驱动压力传感器(HE10)

现在市面上有很多传感器都采用数字信号的通讯方式,像一些对传输距离比较近的场合我们可以采用IIC,SPI,RS232等方式来采集我们所需要的信号,这里我们以IIC通讯的压力传感器为例,来介绍下如何通过STM32的硬件IIC来读取传感器的压力值。有了这个函数,我们就可以很轻松的从传感器读取到压力值数据了,根据传感器数据手册,我们可以知道,该传感器通信速率为最高400KHz,我们这里采用100KHz,传感器通讯地址为0xda,内部寄存器地址为0x06,至此压力值已读取出来,经粗略计算后验证该值正确。

2023-09-20 17:27:13 401 1

原创 STM32 HAL库串口+DMA接收不定长数据

首先我们打开STM32Cumebx建立一个工程,配置管脚图:这里我们采用三线SWD下载方式,加一个LED灯交替闪烁,串口中断+DMA来接收不定长数据,串口采用默认配置,打开串口中断,采用MDA方式就行发送和接收:然后保存工程生成代码。生成代码后先定义以下变量:volatile uint8_t rx_len=0; volatile uint8_t recv_end_flag=0; ..

2020-11-04 17:14:51 5148 3

VB串口调试助手源代码

基于VB6.0平台编写的串口调试助手源代码(附exe文件),供新手学习开发调试使用,可以参考和借鉴来开发自己的程序。

2020-11-05

STM32 HAL库串口+DMA空闲中断接收不定长数据

STM32 HAL库+串口DMA+空闲中断(IDLE)实现不定长数据接收,可以用来参考学习使用,简单易懂。

2020-11-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除