推荐阅读最新更新时间:2024-03-16 15:35
STM32L4 RT-Thread Studio解决lptimer不工作的问题
问题描述 看到部分同学已经开始使用RT-Thread 的PM框架了,当然也反映了一些问题。 使用RT-Thread Studio 生成的基于STM32L4 的工程,发现开启PM框架后,lptimer不能工作。 最明显的现象是:进入深睡眠后,定时、延时事件不可以用。 这里对这个问题进行分析与提出解决方法 调试步骤: 一、基于Keil MDK pandora的工程,开启PM后,LPTimer在深睡眠下工作正常。 二、基于RT-Thread Studio生成的工程,LPTimer确实不能工作。排除不是硬件问题。 三、对比工程代码,LPTimer初始化,完全一致,pm_drv.c pm.c 等完全一致,依旧无法解决问题。
[单片机]
亲爱的工厂经理:通过预测性维护,您可预防问题的发生
偶尔检查您家里的暖通空调系统是预防性维护的一个很好示例——对于保持它们正常运行很重要。但假如您能预测到加热器将在两个月后失灵,而此时正值严冬时节,您会怎样做? 基于正确的信息,您可以制定计划,更换装置,避免紧急维修,以及其它一同出现的不便。 MSP430™微控制器(MCU)产品营销工程师Dave Smith说:“通常,我们只有在设备停止工作的时候,才发现它出现故障了。某些情况下,我们会定期进行预防性维护,尽量避免这些意外故障的发生。” “通过智能化等式可进一步进行预测性维护。” 这正是我们TI所做的:为我们的MCU增加一定的性能水平,帮助实现预测性维护等应用。(阅读有关预测性维护的白皮书。) 想象一下:如果这
[单片机]
STM32使用DMA从串口读可变长度数据到内存
首先要解决DMA怎么知道要接收的数据何时开始,何时结束的问题。而且每次传输完数据,要改变下一次数据长度。 如果把DMA设成循环模式肯定是不行的,所以把DMA设置成正常模式。 STM32的串口有监测总线是否处于空闲的功能,我们可以使用这个功能,当数据传输完总线变成空闲状态时产生中断,来对收到的数据进行处理。因此整个过程就变成:当一堆数据开始传输,DMA默默地把数据搬运到内存中,当这堆数据传输完成,总线变成空闲状态时,马上产生中断,在中断服务程序中去做相应处理。 初始化程序: #define DMA_Rec_Len 10 //数据缓冲区大小 u8 value ; void uart_init_DMA_IN(u32
[单片机]
如何下载stm32系列单片机的固件库
第一步 进入st官网( ST官网 ),可选中文(建议多看英文,对看数据手册有很大用处,下面步骤以英文为主),如图1 第二步 选择tool & software(工具及软件) —- MCUS Embedded Software 第三步 选择product tree 第四步 展开product tree 第五步 以stm32L151为例,如图 点进去下载即可。
[单片机]
基于stm32的独立按键扫描方式
这两天完成了一个stm32的工程,在解决按键时写出了一个独立按键的扫描函数,应该有前辈已经出来了,的其实质就是普通的扫描方式修改的,优点是将按键相关参数封装为一个结构体,每加一个按键都不需要在函数中增加语句,废话少说,先看扫描函数 //* // Function: 扫描按键 // Returns: u8 :按键id值 //* u8 KeyScan() { static u8 keyUp=1;//按键按松开标志 u8 i,count,upCount=0; count=sizeof(buttons)/sizeof(Button); for (i=0;i count;i++) { if (keyUp && (GPIO_ReadI
[单片机]
关于初学STM32中肯的几点建议
通过观察后台提问的内容来看,关注我的人中STM32初学者占大部分,而且大多处于小白阶段。所以,今天暂且写下几点内容给这些朋友。 1查找资料去官网 许多初学者总是在问:能给我一份xxx手册吗?你有关于xxx的资料吗?同时,我也常在某些“技术群”里看到类似这种“给资料”的对话。 这样说吧,你们向别人获取的“资料”,别人基本上也是从官网下载而来的。而且,别人给你的资料不一定是最新版本。 因此,建议初学者查找资料,寻找资料尽量找官方原版资料,毕竟官方的才具有权威性。 STM32官方整理的资料很多,而且针对每一种型号的MCU都有各种资料。夸一点的说:你想要的都有。 针对你MCU芯片型号,进入对应的网址即可(具体这里就不说过程了): ht
[单片机]
stm32篇--系统初始化
跟着程序执行流程走,main是程序入口,在里面进行了各种初始化。 1.时钟配置 首先是RCC_Configuration(),里面进行了时钟基本的初始化,stm32有多个时钟源:(1)HSI上电默认启动,精度不高(2)HSE外部高速时钟,系统时钟一般采用它,经过PLL倍频;(3)LSE外部低速时钟,一般专门用于RTC;(4)LSI内部低速时钟,精度不高,一般用于IWDGCLK; void RCC_Configuration(void) { RCC_DeInit();//复位RCC成缺省值 RCC_HSEConfig(RCC_HSE_ON);//开启HSE的时钟作为PLL的时钟源 HSEStartUpStatu
[单片机]
STM32的IIC库函数使用误区
HAL库里有很多的IIC的库函数,比如 HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t
[单片机]