推荐阅读最新更新时间:2024-03-16 15:13
stm32单片机休眠模式后无法下载程序怎么办
利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的。往往会出现进入休眠后无法唤醒,导致下一次程序烧不进去。通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点下载,然后松开复位键即可。 我遇到的问题是:误入了stm32(STM32L051C6T6)的STOP模式,又没有写入相应的唤醒方法,导致后续的程序不能下载。使用MDK5 点击load时总会出现No target connected。自己设计的最小系统又没有加入复位键。。。 有以下几种解决办法: 1、可以将单片机的NRST引脚引出来,外接复位键。(关于引脚查看可用ST官方软件STM32cubeMX,很方便) 2、通过ISP的方式
[单片机]
stm32休眠 以及休眠中如何喂狗
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。其中独立看门狗的时钟由独立的RC振荡器(STM32F10x一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。而且独立看门狗一旦启动,除了系统复位,它不能再被停止。但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用? 一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。比如看门狗复
[单片机]
基于stm32的精确延时利用系统滴答systick
利用系统滴答定时器来实现精确延时,需要以下五步: 1、设置滴答定时器的时钟,通过设置其控制寄存器,选择外部时钟,即为系统时钟的八分之一,若系统时钟为72M,则滴答定时器时钟为9M。即定时一秒需要9M个时钟周期。 2、设置滴答定时器的重装载寄存器的数值,即需要延时的时钟周期数。如:若需要延时20微秒,则重装载值为20*9.若要延时20毫秒,则设置重装载值为20*9000. 3、清空滴答定时器当前值寄存器的值,使之为零,以便使能计数时能够从设定值开始倒数计时。 4、设置滴答定时器的控制寄存器,开始倒计数。 5、查询滴答定时器的状态位,定时时间到,关闭定时器,清空定时器当前值。 void delay_init(u8 SYSC
[单片机]
STM32标准库改为HAL库的程序实现
标准库占绝大多数,自己买的板子跟的资料也一般是标准库,HAL库很少,不过要是使用STM32CubeMx配置,那么就是使用的HAL库了,而参考资料是标准库的,就没有办法用。 注意: 1. 标准库与HAL库不兼容,不要想着直接拿来用了,比如标准库使用#include stm32f10x.h ,HAL库使用#include stm32f1xx_hal.h 要让标准库程序使用HAL库时也可以正常运行得到想要的结果,有以下几种方法: 一、 将标准库程序中的每个函数内的代码修改为使用HAL库且同样效果的代码, 比如标准库中配置GPIO的代码直接就可以用STM32CubeMx配置为相同效果 二、根据标准库程序整个程序运行的原理使用HAL库
[单片机]
STM32的使用之SPI通信DMA模式
MCU:STM32F303VC 在SPI通信中,可以同时开启发送和接收DMA请求,自动数据的发送和接收,完成数据的交换 基本步骤是: 1. 配置好SPI相应引脚功能 2. 配置和初始化SPI 3. 初始化DMA 4. 片选信号选择要通信的设备 5. 打开DMA 对应DMA通道:SPI1_RX---DMA1_Channel2;SPI1_TX---DMA1_Channel3 代码: #define L3GD20_SPI_TDR (u32)(SPI1_BASE+0x0C) #define L3GD20_SPI_RDR (u32)(SPI1_BASE+0x0C) u8 SPI_TXBUFFER ={0xE8,0x00,0x00,
[单片机]
STM32 HAL库 硬件I2C 从机主机防BUG程序
前言 最近死磕了5天的STM32F1硬件I2C从机的程序,天天早上8点到凌晨,几乎全程心流状态。终于在结合各方资料及自己的思考后,做出了稳定的硬件I2C代码(这个文章中应该是目前为止能查到的最详述可用的硬件I2C代码),经过I2C主机发出的各种奇怪的信号蹂躏后,通讯都可以恢复正常,不会被卡死。证明该方案拥有极高稳定性。 需要注意我这次使用的是 STM32F103C8T6 的兼容型号 GD32F103C8T6 。要问他的兼容性有多强,连I2C bug都能做到一样,哈哈。我当初用GD想着硬件I2C应该能舒服用了,万万没想到,兆易连i2c 硬件BUG都复制了。 大家不要纠结于单片机的型号,我推测应该STM32FXXX 家族硬件I
[单片机]
STM32处理器定时器分析(实现一个定时中断)
前言: 1.本博文基于STM32F103ZET6芯片和ST官方提供的3.5.0库函数; 2.学习过51单片机学习STM32定时器会容易理解一些,但是两个定时器的实力有很大的距离; 3.定时器是难点也是重点;本博文以通用定时器TIM2~TIM5来说明;例程是TIM3 6.定时器结构稍复杂,寄存器较多,本博文根据一个简单的定时器中断实验展开,所列出的相关寄存器是专门针对本次实验来说的,其他不相关定时器不再列出; 一 STM32定时器的分类 1.高级定时器: TIM1和TIM8 2.通用定时器: TIM2,3,4,5; 3.基本定时器: TIM6和TIM7; 二 通用定时器的功能 (1)16位向上,向下,向上/向下自动装载寄存器
[单片机]
stm32按键轮循点灯
一、实验描述及工程文件清单 1.实验描述: 按键-引脚连接:KEY1-PC5 KEY2-PC2 KEY3-PC3 LED-引脚连接:LED1-PB5 LED2-PD6 LED3-PD 用扫描的方式查询是否有按键按下:key1按下时,LED1状态取反;key2按下时,LED2状态取反;KEY3按下时,LED3状态取反。 3.库文件、用户文件: 4.USER文件: main.c、led.c、key.c、stm32f10x_it.c 二、这是我的流程图 三、代码编写 1.main.C /********************************************
[单片机]