草庐IT

STM32编程中的volatile,const意义

__I、__O、__IO是什么意思?这是ST库里面的宏定义,定义如下:#define__Ivolatileconst/*!#define__Ovolatile/*!/#define__IOvolatile/!显然,这三个宏定义都是用来替换成volatile和const的,所以我们先要了解这两个关键字的作用:1、volatile简单的说,就是不让编译器进行优化,即每次读取或者修改值的时候,都必须重新从内存或者寄存器中读取或者修改。volatile的基本应用场合:1、中断服务程序中修改的供其它程序检测的变量需要加volatile;2、多任务环境下各任务间共享的标志应该加volatile;3、存储器

STM32速成笔记—按键检测

如果需要本文程序工程,请评论区留邮箱或者私信。文章目录一、按键检测原理二、硬件连接三、程序设计3.1初始化GPIO3.2按键扫描函数四、按键控制LED4.1初始化LED和KEY的GPIO4.2编写按键扫描函数4.2编写LED控制函数4.3编写按键服务函数五、拓展5.1一个按键单独控制一个LED亮灭5.2按键长短按一、按键检测原理按键检测原理比较简单,按键按下和不按下,其连接引脚的电平是不一样的,按键检测正是通过检测按键引脚的电平变化来实现的。比如按键未按下时引脚电平为高电平,按键按下后为低电平。我们在检测按键时只需要检测按键引脚是否变为低电平来确定按键是否按下。二、硬件连接按键的硬件连接决定了

基于STM32+微信小程序设计的个人健康助手(腾讯云IOT)

一、设计需求1.1项目背景21世纪,社会高速发展,生活物质越来越丰富。为了追求更高的物质享受,人们不断消耗人体健康机制去拼搏,导致身体抵抗能力下降,引发各种疾病。因此,身体健康状况越来越备受大家的关注,健康意识也得到普遍提高。正常的体温是保障人体内部器官工作的重要因素,通常人体温度保持在37℃左右,若偏离正常体温则需要及时就医;心率则可以更直接反映身体的健康状况,一般60~100次/分属于正常,若心率异常,也需及时就医。为此,本文设计一套基于STM32个人健康助手,实现随时测量人体体温和心率、血氧的功能,以监控人体的健康状况。针对所述现象,当前采用STM32F103作为系统控制中心,利用MAX

STM32开发OCPP协议简单示例

OCPP版本目前,OCPP协议共有三个版本,分别是OCPP1.2、OCPP1.5和OCPP2.0。它们之间的主要区别在于支持的功能和消息格式有所不同。下面是它们的主要特点和区别:OCPP1.2OCPP1.2是第一个版本的OCPP协议,发布于2012年。支持的功能比较基础,包括启动充电、停止充电、查询状态等。消息格式比较简单,大多数消息只包含基本的请求和回复信息。OCPP1.5 OCPP1.5于2015年发布,是OCPP协议的第二个版本。引入了SOAP和JSON消息格式,使得消息传输更加灵活和可扩展。增加了许多新的功能和消息,如帐单查询、远程治理等。OCPP2.0OCPP2.0是OCPP协议的最

stm32驱动微雪墨水屏1.54inch e-Paper V2

我一起驱动墨水屏一、墨水屏相关基础(摘自微雪官方)二、干起来PART2配置I/OPART2底层硬件接口必要的调用函数PART3功能函数PART4应用函数三、应用注意**[代码下载:**](https://download.csdn.net/download/weber33/87020361)一、墨水屏相关基础(摘自微雪官方)支持局刷的屏幕,注意使用的时候不能一直用局刷对屏幕进行刷新,需要在做几次局刷之后,对屏幕进行一次全刷清屏。否则会造成屏幕显示效果异常。注意屏幕不能长时间上电,在屏幕不刷新的时候,要将屏幕设置成睡眠模式,或者进行断电处理。否则屏幕长时间保持高电压状态,会损坏膜片,无法修复。使

stm32 cubemx ps2无线(有线)手柄

文章目录前言一、cubemx配置二、代码1.引入库bsp_hal_ps2.cbsp_hal_ps2.h2.主函数前言本文讲解使用cubemx配置PS2手柄实现对手柄的按键和模拟值的读取。很简单,库已经封装好了,直接就可以了。文件一、cubemx配置这个很简单,不需要走协议,只要配置gpio就可以了二、代码1.引入库使用我的两个库bsp_hal_ps2.c/*包含头文件----------------------------------------------------------------*/#include"bsp_hal_ps2.h"/*私有类型定义------------------

Keil STM32配置SRAM启动并解决SRAM模式代码跑向中断向量表导致程序跑飞的问题

STM32的Flash的可擦写次数在10000次,在学习或调试过程中为了延长Flash的寿命,将程序写入SRAM是一个很好的办法。在百度上找到的SRAM启动方法总有各种各样的问题,接下来我将会提供一个完整的思路给大家学会如何配置SRAM启动的环境。这里用来演示的开发板是STM32F103C8T61.在STM32上调整BOOT引脚   将STM32的BOOT0和BOOT1上拉,下次RESET(重置)将会进入SRAM启动模式。   2.打开Keil,新建/打开一个工程  这个就不要我放截图了吧==3.创建一个新的Target用于保存SRAM启动配置   在Explorer(文件浏览器)中,右击Pr

STM32:HAL_RCC_OscConfig中程序卡死问题解决办法

首先,参考该博主的文章(感谢博主的刨根问底),了解卡死的原理:https://blog.csdn.net/qq153471503/article/details/114700884在了解原理后,发现在IAP跳转后,APP卡死是因为不能再次对PLL进行初始化操作,所以导致了卡死现象。经过思考,HAL库所有模块的Init,都会有对应的DeInit,所以在IAP跳转之前,对RCC进行DeInit操作,该问题解决,欢迎批评指正!代码如下:voidJumpToApplication(void){ /*Testifusercodeisprogrammedstartingfromaddress"APPLIC

STM32—PWM原理及配置(入门详解)

目录一、PWM原理二、stm32PWM资源三、输出模式1.模式12.模式2四、PWM周期与频率五、PWM占空比六、PWM配置七、main.c代码一、PWM原理        PWM,是脉冲宽度调制,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于有效电平的时间占据整个信号周期的百分比。二、stm32PWM资源        1.芯片STM32F103C8T6的PWM资源                高级定时器(TIM1):7路            

stm32f103c8t6的外部中断

在单片机中存在着中断系统,这个系统的逻辑和功能在51单片机中已经有所了解。1.在32单片机中的内核有一个nvic里面存放许多优先级的设定,外接许多中断源,比如“exti、tim、adc、usart等”接入之后,nvic再通过中断优先级进行排队,再内接入cpu中进行处理,这样子大大减少了cpu的运算,提高了工作效率。2.其中里面的优先级又有响应优先级抢占优先级,响应的可以进行优先排队(插队),而抢占可以进行中断嵌套。3.exti外部中断,注意在支持的gpio口中,不能选择pin相同的来同时触发,比如pa1不能与pb1等等。4.在外部中断的结构中,有一个afio中断引脚选择,就是一个选择器,用来选