- 博客(18)
- 收藏
- 关注
原创 STM32低功耗模式
低功耗是在嵌入式微处理器系列的一个重要优势,特别适用于需要长时间运行且功耗敏感的应用场景。在很多应用场合中对电子设备的功耗非常苛刻,如某些传感器信息采集设备,仅仅靠小型的电池提供能源,要求工作长达数年之久,所以很有必要从控制功耗入手。1.stm32具有运行,睡眠,停止,等待四种工作模式,上电后默认是在运行模式。当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中,电源消耗不同、唤醒时间不同、唤醒源不同,用户需要根据应用需求,选择最佳的低功耗模式。三种低功耗的模式说明如下图。
2024-10-21 22:27:25
1584
原创 STM32-OLED屏幕(0.96)IIC驱动库
显示汉字,第一个参数是控制横向控制,第二个是纵向控制,第三个是你存在font.h里面数组显示汉字的第几个位置,第四个是字体的大小就是你取模的大小。链接:https://pan.baidu.com/s/1y3K3Gzt3odjotELZ9vqxJg?链接:https://pan.baidu.com/s/1zn0A2P6KiVqMcCJ-FH2Mug?oled.h屏幕的头文件,注意这里面的两个IO口,根据自己oled屏幕实际接线来修改。跟着搞了一个驱动oled的库,使用起来非常方便,现在分享给大家。
2024-10-16 19:38:15
375
原创 HAL库 + STM32看门狗(IWDG/WWDG)
IWDG本质上是一个12位的递减经济暑期,计数器从初始值一直减到0是,系统会产生一个复位信号,CPU接收到这个信号后,会重新启动系统。在计数器减到0之前,如果通过程序给他喂一次食物 “喂狗”,那么就不会产生复位信号,系统也将正常运行。窗口看门狗的本质是一个能传声复位信号和提前唤醒中断的计数器。递减计数器从0X40减到0X3F是复位。计数器的值大于W[6:0]值喂狗会复位产生中断条件当递减计数器等于0X40时可产生提前唤醒中断。
2024-09-24 21:17:05
901
原创 STM32定时器相关配置步骤-学习笔记
2.定时器PWM输出MSP初始化,配置NVIC,CLOCK,GPIO等。2.定时器输入捕获MSP初始化,配置NVIC,clock,GPIO等。1.配置定时器基础工作参数 HAL_TIM_PWM_LNIT()3.配置输入通道映射,捕获边沿等。3.配置PWM模式/比较值等。6.使能捕获,捕获中断及计数器。8.编写更新中断和捕获回调函数。1.配置定时器的基础工作参数。4.使能输入捕获并启动计数器。1.配置定时器基础工作参数。4.设置优先级,使能中断。5.使能定时器更新中断。3.配置定时器从模式等。
2024-09-18 16:28:05
230
原创 基于STM32 实现排队系统,利用SysTick模拟多任务。(学习日记)
由于使用了SysTick来模拟多任务,所以记得在SysTick中断服务函数中去添加任务的函数。每次最多通过五人,允许通过时led1闪烁,蜂鸣器不响,门开,不允许通过时,led2闪烁。本次的实验项目没有难,就是把之前用过的模块整合了一下,大致的需求是。完结,整体感觉没有什么好讲的,都是一些很基础的东西。LCD1602相关代码:lcd1602.c。红外模块相关代码:exti.c。蜂鸣器相关代码:beep.c。继电器相关代码:gate.c。任务相关代码:tasks.c。延时代码:delay.c。
2024-09-11 18:58:48
348
原创 STM32使用HAL库来配置中断
一直坚持我的一句话:舞台再大,你不上台,永远是观众。平台再好,你不参与,永远是局外人。函数:HAL_GPIO_EXTI_IRQHandler()是外部中断共用的入口函数,函数内部会清除中断标志位,并调用callback回调函数。通过中断入口函数的GPIO_PIN判断来自哪个IO口的中断,然后执行中断回调函数,就在该函数里来实现中断后你想要实现的功能。主程序执行LED的闪烁,利用中断来使按键来控制LED的亮灭。参数:中断号,IRQn_Type的类型。配置中断口,配置中断触发的方式等。大概画了一下,能力有限。
2024-08-13 20:35:58
1481
原创 STM32利用CubeMX快速移植FreeRtos
答: 裸机的默认时钟源是SysTick,打开FreeRtos会占用SysTick,所以需要其他总线另外提供时钟源。6.点击Project Manager,命名项目名称和项目保存的位置,Toolchain 切换成 MDK-ARM。答:CMSIS_V2的内核版本更高,功能更多,但在大多数情况下CMSIS_V1的版本内核完全够用。5.打开FreeRtos ,把interface选择为CMSIS_V1。1.打开调试串口,时钟源选择TIM中任意一个。为什么要选择 CMSIS_V1,而不是CMSIS_V2?
2023-07-26 11:16:50
586
1
原创 设计模式---简单工厂模式
主要原因是以前写代码乱写,看起来杂乱无章,添加和拓展功能的时候会导致其他部分的代码被破坏,所以才会学习设计模式,设计模式有23种,目前先学习一下简单工厂模式。比如,您需要一批果汁,可以直接告诉工厂你需要一批果汁就行,而不用去管这些果汁是怎么做出来的,以及制作榨果汁里面的具体实现。工厂模式,是最常用的设计模式之一,种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。1.先创建一个工厂的类(结构体),它可以根据参数的不同返回不同类的实例。通过给API传入不同的参数,工厂生产出不同的东西。
2023-07-03 16:11:13
112
1
原创 树莓派内核编译,替换。
下载linux内核源码树。下载好之后传送到ubuntu里面。下载安装交叉编译工具链。内核配置有三种方式。第一种:基于厂家提供的linux内核源码(.config文件)进行配置。第二种:make menuconfig 根据厂家提供的一项一项的配置。第三种:自己搞。树莓派2,3的工程是bcm2709_defconfig.(1)先搜索一下所有的config文件,看有没有bcm2709_defconfig这个文件在里面找到这个bcm2709_defconfig的文件。
2023-06-25 19:59:53
585
原创 树莓派—交叉编译
交叉编译可以理解为 是在一个平台生成在该平台的可执行代码。本地编译 在本地平台上,编译生成的程序只能放到当前平台下运行。比如,我们在x86上面编译生成的可执行代码,只能放在x86架构上面运行,不能放在ARM架构上面运行。交叉编译 是在本地平台上编译生成另一个平台的可执行代码,但是编译平台却不能运行此代码。比如我们在Windows上面编写STM32、C51代码,并编译成可执行代码,如xx.hex,是在STM32,C51上面运行,不是在Windows上面运行。
2023-06-15 16:52:46
255
1
原创 Linux 中静态库,动态库的制作与使用。
解决方法一:将libcount.so拷贝到 /usr/lib/ 里面去,它执行的时候就会从/usr/lib/ 里面去找,那如何让它从当前路径开始去找呢?编译 gcc main.c -lcount -L ./ 生成 a.out,-lcount表示链接libcount.so。例:main.c,count.c,count.h 三个文件 main.c 调用了count.c。例:main.c func.c func.h 三个文件 ,main.c调用了func.c。// -shared 指定生成动态库。
2023-06-12 17:56:32
495
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人