STM32入门项目笔记

发布者:BlissfulDreams最新更新时间:2025-02-05 来源: jianshu关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

单片机项目可以分为以下ABC三种处理架构:
A.可以采用先标记状态,后根据状态处理事件【状态机模式】
detectEvents():标记全部事件【GPIO事件、电池事件、开始治疗事件】
processEvents():处理全部事件【GPIO事件、电池事件、开始治疗事件】
B.根据不同的功能一边标记一边处理,
detectProcessGPIOEvent():处理按钮事件
detectProcessBatteryEvents():监测和处理电池电量
processOtherEvents():处理其他事件
C.初始化的时候传入钩子函数(传入函数指针),实现一体化处理

1.初始化并且设定系统定时器,SysTick_Config(48000 / systickScale);
2.SysTick_Handler(void) 记录系统时间,处理外部按键点击detectGPIOEvent,处理其他系统事件【ADC电压监测,蜂鸣器工作,3分钟停止工作,低电压指示灯工作状态 】,
注意电量监测,打印等耗时操作,每秒执行一次即可。通过

define DebugMode 来条件编译提高性能,否则会导致定时器中断延时,系统时间不准确。

注意蜂鸣器打开后一定要关闭电路,否则会持续耗电
uint32_t maxUint32_t = 4294967290;
///记录上次治疗的时间节点
uint32_t lastestTreatmentTime;
///记录上次Beep的时间
uint32_t lastestBeepTime;
///工作时常3分钟
int treatmentDurationInMS = 180 * 1000;

3.detectProcessGPIOEvent【处理按钮事件】
A.处理按钮按下,启动事件
a.key_cnt 按钮按下事件【通常单位1ms】
b.key_cnt_threshold消抖时间【通常10ms】
c.key_lock_flag避免重复触发
d.isCharging【可选:充电的时候不触发启动】
e.batteryState【可选:电量过低的时候不触发启动】
B.处理充电口插入监测
1.unplug_usbc_turn_off_blink_led_lock_flag【拔出USB时,如果LED指示灯还亮着,关闭LED指示灯,做个flag】
2.BlinkSystickGap * 2【不知道为啥 需要 *2】
3.treatmentOff【可选:停止治疗】
4.拔出USB时,关闭电源,独立看门狗喂狗
4.电量监测:
enum BatteryState{
Full = 0,Ok,Low,TooLow
};

4.detectProcessBatteryEvents【监测和处理电池电量】
a.电量低,治疗时橙色灯闪烁
b.电量正常,治疗时绿灯常亮
c.电量过低,直接关机

5.processOtherEvents【处理其他事件】
a.产品使用10分钟后自动关机


关键字:STM32 引用地址:STM32入门项目笔记

上一篇:安富莱 STM32 按键检测
下一篇:STM32学习:I2C-EEPROM实验

推荐阅读最新更新时间:2026-03-20 11:31

深夜!我偷偷的把室友的STM32换成了GD32
一、什么是GD32 GD32是由北京兆易创新开发的国产32位MCU,基于Arm Cortex- M3/M23/M4内核以及RISC-V内核的32位通用微控制器,与STM32相比,CPU主频更高,内存更多,外设更丰富。其众多产品是以STM32芯片为模板,基于STM32的底层寄存器地址进行正向研发,部分产品可以直接PIN TO PIN替代STM32的芯片,部分型号可以直接以STM32的程序做部分修改后直接烧入进GD32中运行,例如GD32E103、GD32F10x、GD32F30x都是和STM32F10x系列是完全PIN TO PIN兼容的,内部地址寄存器完全兼容,唯一区别只是内核不同,但在使用外设时影响不会很大。 一个大胆的想法
[单片机]
让人神往的STM32经验大抵如此
单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢? 你要考虑的是,要用STM32实现什么? 为什么使用STM32而不是用8051?是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO?是51的功耗太大,电池挺不住?是51的内存太小而你要存储的东西太多?还是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 当你需要使用STM32某些功能,而51实现不了的时候,那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。比如要用spi协议的网卡、要使用串口通信、要使用rtos等等。 寄存器vs库函数 我的观点是:当你debug的时候寄存器很重要,当你需要理解芯片工作
[单片机]
基于stm32标准库独立按键的多按键状态机的实现
写在前面 一般引用都写在最后,但是这篇博文(https://www.cnblogs.com/ZzJan/p/11334869.html)对我这个状态机的影响很大,我这里有许多借鉴他的思维。所以写在前面,以表敬意 简单按键检测 一开始学习单片机的时候我接触到按键的时候就知道按键有抖动,记得当初按键消抖分为硬件和软件,硬件上常用于复位按键如下图 硬件消抖 软件上来说,最经典的消抖 if(KEY1 == 0) { delay_ms(20); // 延时消抖 if(KEY1 == 0) { while(KEY1 == 0);//堵塞,等待松开 // 按键按下处理代码 } }
[单片机]
基于<font color='red'>stm32</font>标准库独立按键的多按键状态机的实现
STM32驱动WS2812B
从淘宝通购买了一个有趣的RGB LED环,现在,我将介绍如何将STM32 MCU连接到WS2812B LED。 此演示还使用 FreeRTOS 和 HAL 库,编写了一个简单的代码来制作一个STM32接口WS2812B LED。 WS281x 系列 WS2812B 系列中的“智能控制 LED 光源”是令人惊叹的设备(如 WS2812 和 WS2811)。特别是,它们是智能控制LED光源,带有控制电路和RGB驱动电路,两者都集成在单个5050组件封装中,它们包括内部智能数字端口数据锁存器以及信号整形和放大电路。 还配备了精密内部振荡器和可编程恒流驱动器,有效地确保每个像素输出的光量(每种颜色)与编程的光量一致。数据传输协议
[单片机]
STM32 PC13 PC14 PC15 PB3 PB4 PA13 PA14 PA15 做普通IO口笔记
在MCU刚上电时,PC13作为侵入检测TAMPER引脚, PC14、PC15默认是作为连接32.768K低速外部晶振用的脚,PB3、PB4、PA15是JTAG调试脚,不能直接作为普通IO使用,下面是将他们作为普通IO使用的配置方法: STM32的PC13、PC14、PC15用作普通IO口设置方法 1.引脚定义 2.引脚用作普通IO口的条件 注: 1、最新文档中已经删除“在同一时间只有一个引脚能作为输出”也就是三个引脚可以同时作为输出引脚,其他条件未变 。 2、需要备份区域由VDD供电才可以。把VBAT通过一个100nf电容接到VDD上,重新上电3个LED就可以闪烁了。手册说不能驱动LED,我把LED用灌电流的接法(共阳极
[单片机]
什么是stm32单片机
stm32f103c8t6单片机是高校学生使用的最频繁的单片机了,被广泛的应用在课程设计,电子设计大赛,毕业设计中。其拥有非常优异的性能,同时价格低廉,参考资料多,是广大学生非ban必选的mcu。 单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已 。 或许大家有经常听起过最小系统板这个词儿,那么什么是最小系统板呢?其实最小系
[单片机]
STM32单片机学习】第8章 GPIO—LED点灯
本章实验的目的是通过LED点灯,让读者熟悉STM32F103最基本的外设GPIO。首先介绍了GPIO的一些基本概念和知识,然后介绍开发板LED灯部分硬件设计,再结合硬件进行软件设计,最后展示实验效果。本章阅读提示:8.1 关于GPIO(介绍GPIO的一些知识,刚开始概念有些多,读者慢慢理解)8.2 硬件设计(分析LED灯部分的硬件设计和RGB灯,需要理解)8.3 软件设计(讲解如何编写LED程序,需要重点理解)8.4 实验效果(展示实验效果,操作即可) 8.1 关于GPIO GPIO(General-Purpose IO ports,通用输入/输出接口),用于感知外界信号(输入模式)和控制外部设备(输出模式),如图 6.1
[单片机]
【<font color='red'>STM32</font>单片机学习】第8章 GPIO—LED点灯
STM32 HAL库 模拟SPI驱动 ADS1118
首先是SPI相关的简介: https://www.bilibili.com/opus/515342298243272188 然后是用STM32CubeMx初始化模拟SPI的引脚: STM32CubeMx的GPIO输入输出的配置可以参考: https://www.bilibili.com/opus/484177792198506654 我所用到的四个输出口分别对应ADS1118上的三个SPI通信口。 SYNC:PA4 SCLK:PA5 DOUT:PA6 DIN:PA7 在具体的应用中可以自行修改头文件中的GPIO口以配合硬件完成工程。 ADS1
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved