free(me)
这个作者很懒,什么都没留下…
展开
-
触摸屏状态机
开发板野火指南者CPU型号触摸屏型号XPT2046本文记录的是用XPT2046这个触摸屏实现检测短按、长按状态机算法。原创 2022-07-30 19:17:42 · 300 阅读 · 0 评论 -
I2C通信——时序图
本文用逻辑分析仪抓取主机I2C通信的时序图,抓取的过程是读某个寄存器的值。原创 2022-07-21 21:15:12 · 4659 阅读 · 0 评论 -
stm32f103电源管理
开发板:野火指南者STM32F103VET6实验平台:KEIL5 SDK内容:电源管理(睡眠模式、停止模式、待机模式)信息来源:野火资料这三种低功耗模式层层递进,运行的时钟或芯片功能越来越少,因而功耗越来越低。概念:在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设,CM3核心的外设全都还照常运行。进入睡眠方式:有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是WFI(wait for interrupt)和WFE(wait for event),即由等待“中断”唤醒和由“原创 2022-06-13 22:41:54 · 1483 阅读 · 0 评论 -
独立看门狗(IWDG)
文章目录前言一、独立看门狗是什么?二、独立看门狗内部组成介绍1.功能框图2.独立看门狗时钟3.计数器时钟和计数器4.重装载寄存器5.键寄存器5.状态寄存器三、实验1.实验目标2.程序代码前言目标:了解独立看门狗和使用独立看门狗实验平台:KEIL5实验开发板:野火指南者STM32F103VET6一、独立看门狗是什么?独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0原创 2022-05-28 19:03:02 · 173 阅读 · 0 评论 -
ESP8266模块网络调试过程
文章目录前言一、前期工作二、AT指令测试1.AT2.AT+RST3.AT+CWMODE=?4.AT+CWJAP="SSID的信号名","密码"5.AT+CIFSR6.AT+CIPSTART7.AT+CIPSEND=?前言目标:测试ESP8266网络通信过程硬件:野火指南者stm32f103vet6工具:串口调试助手、网络调试助手开发软件:KEIL5一、前期工作串口配置ESP8266:我的ESP8266是板载WIFI,需要通过软件编程串口配置,实现串口AT指令发送。代码:本文用的是野火指原创 2022-05-26 15:36:25 · 862 阅读 · 0 评论 -
主函数尽量避免死等的延时函数
文章目录前言一、实时性的重要性二、避免使用延时函数三、推荐做法1.main.c2.中断服务函数文件it.c前言我们编写单片机的程序的时候,大家最容易忽略的是它的实时性,所以导致会出现明明程序没有写错,但却出现bug,这是为什么呢? 是因为单片机的程序是裸机,没有带操作系统。很多时候会被刚入门的单片机爱好者忽略掉实时性,导致会丢失事件。一、实时性的重要性我们先来谈谈为什么单片机有时候会丢失事件。首先,我们知道单片机程序是轮询模式,是一个语句执行完以后,再执行下一条语句,整个主函数就是一个进程,进原创 2022-04-19 15:40:27 · 1248 阅读 · 0 评论 -
NTC——热敏电阻
文章目录前言一、NTC简介1.NTC特性2.NTC常见电路图3.NTC的电压算法二、NTC的AD值表1.NTC温度表二、编程1.思路2.关键代码总结前言本文记录的是有NTC热敏电阻,总结下NTC热敏电阻温度值的采集方法软件实验平台:keil5硬件:ARM M0一、NTC简介1.NTC特性ntc是一个热敏电阻,温度越高,阻值越小。采集到电压也是越小(串联分压)2.NTC常见电路图 图一10K电阻和NTC热敏电阻调换顺序,会改变ADC采集的电压,原创 2022-04-07 16:33:05 · 9717 阅读 · 0 评论 -
stm32呼吸灯
文章目录前言一、前期准备二、硬件原理图三、代码1.main.c2.bsp_breathing.h3.bsp_breathing.c4.中断服务函数5.python脚本四、时间计算前言本文记录的是单色呼吸灯教程开发板:野火指南者stm32f103vet6目的:实现单色呼吸灯1S渐亮,5S常亮,1S渐灭。原理:利用PWM输出,改变占空比,也就改变了平均电压。形成一个“呼吸”的效果。一、前期准备PWM原理:TTL电平中,高电平为5V,低电平为0V,但是我们想要输出不同的模拟电压,比如输出3.7原创 2022-03-28 00:51:03 · 9050 阅读 · 2 评论 -
基本定时器
文章目录前言一、基本定时器简介二、功能框图1.时钟源2.控制器3.时基(定时器的心脏)三、预分频器四、计数器、自动重装载寄存器五、影子寄存器六、定时时间的计算前言开发板:野火指南者stm32f103vet6本文的内容是基于野火指南者这个板子所记录的一些关于基本定时器的知识。以下内容完全来自野火家的教程。一、基本定时器简介1-计数器16bit,只能向上计数,只有TIM6和TIM72-没有外部的GPIO,是内部资源,只能用来定时3-时钟来自PCLK1,为72M,可实现1~65536分频二、原创 2022-03-22 23:14:16 · 1164 阅读 · 0 评论 -
软件模拟I2C(万能模板)
文章目录前言代码1.bsp_i2c.h2.bsp_i2c.c3.main.c结果前言本文介绍的是cortex系列的开发板使用I2C通信的时候,可以套用的软件模拟I2C万能模板。本人写的这份代码已经在野火指南者(stm32f103vet6)测试过可用。只需要修改一下宏定义的引脚和时钟线就可以使用。就算你的开发板的SCL和SDA线没有接上拉电阻,依然可以用。这里就不再介绍I2C的通信过程了,如果有同学还不清楚I2C通信协议的话,请查看本博客的通信协议专栏里有关I2C的文章。创作不易,希望大家原创 2022-03-20 10:59:58 · 7094 阅读 · 0 评论 -
STM32硬件I2C
文章目录前言一、原理图二、编程1.写入数据2.接收数据总结前言本文记录的是硬件I2C通信过程开发板:野火指南者STM32F103VET6I2C设备:EEPROM(AT24C02) 2048个字节大小,只能存256个8位数。开发软件:KEIL5一、原理图PB6是时钟线SCLPB7是数据线SDA二、编程1.写入数据代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as plt原创 2022-03-16 16:29:24 · 4149 阅读 · 0 评论 -
stm32之I2C编程前期准备
文章目录前言一、STM32实现I2C通信两种方式二、STM32的I2C架构三、时钟控制逻辑四、计算时钟频率五、数据控制逻辑六、整体控制逻辑七、STM32的I2C通讯过程1.主发送器通讯过程2.主接收器前言声明:文章内容介绍来自野火家的教程。本文章主要是围绕stm32这个MCU跟大家分享一下记录我们用MCU与i2c设备通信的时候,编程前,我们需要掌握哪些信息。若想知道如何写代码,那就看本博客另外一篇文章。软件模拟i2c:https://blog.csdn.net/weixin_43772611/原创 2022-03-14 21:26:57 · 4717 阅读 · 0 评论 -
I2C通信协议
文章目录前言一、I2C协议是什么?二、I2C物理层特点三、I2C协议层1.写方向2.读方向3.起始信号和停止信号4.数据有效性5.地址及数据方向6.应答信号和非应答信号前言本文记录的是I2C通信协议一、I2C协议是什么?I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。二、I2C物理层特点它是一个支原创 2022-03-14 19:53:17 · 556 阅读 · 0 评论 -
stm32查看系统时钟配置
文章目录前言一、固件库已有定义好的时钟结构体二、查看步骤1.定义时钟结构体变量2.调用函数致谢前言开发板:野火指南者stm32f103vet6开发工具:keil5目的:通过keil的仿真,查看系统时钟配置一、固件库已有定义好的时钟结构体二、查看步骤1.定义时钟结构体变量2.调用函数通过调用这个函数就可以轻松达到查看系统时钟的目的设置断点,把ClockInfo添加到窗口1查看变量的值致谢借鉴:https://blog.csdn.net/u014124220/article原创 2022-03-14 17:02:37 · 6952 阅读 · 0 评论 -
stm32串口通信
文章目录前言一、硬件原理图二、USART框图三、代码1.非中断的自发自收2.中断的自发自收3.重定向c库函数printf到串口串口的接收中断不需要清除标志位发现芯片手册有bug前言开发板:野火指南者STM32F103VET6开发工具:KEIL5、串口调试助手目的:用两种方式实现串口通信(非中断和中断)有关串口通信的知识点,请查看本博客的通信协议专栏的《串口通信协议》地址:https://blog.csdn.net/weixin_43772611/article/details/123451原创 2022-03-13 17:51:15 · 1311 阅读 · 0 评论 -
配置GPIO的模式
文章目录前言一、输出模式1.通用推挽输出(GPIO_Mode_Out_PP)2.开漏输出(GPIO_Mode_Out_OD)3.复用推挽输出(GPIO_Mode_AF_PP)4.复用开漏输出(GPIO_Mode_AF_OD)二、输入模式1.浮空输入模式(GPIO_Mode_IN_FLOATING)2.模拟输入模式(GPIO_Mode_AIN)3.带上拉输入模式(GPIO_Mode_IPU)4.带下拉输入模式(GPIO_Mode_IPD)前言这篇文章是记录stm32固件库开发的时候,配置GPIO的的8种原创 2022-03-13 16:25:49 · 4648 阅读 · 1 评论 -
中断与异常
文章目录前言一、中断是什么二、中断类型三、中断优先级四、使能中断五、中断应用(外部中断EXTI)0.EXTI简介1.中断框图2.原理图3.代码4.实验现象前言本文介绍中断的内容是基于STM32F103,一般来说,中断就是异常,异常就是中断。但实际上本人在学习S3C2440的时候,我记得异常是包括中断。一、中断是什么我用通俗的话来解释一下中断的流程吧:1、当你正在打代码的时候(程序正在执行),2、母亲大人突然喊你下楼吃饭(喊你——是中断事件发生标志),3、你不得不停止工作(进入中断),4原创 2022-03-12 17:46:19 · 170 阅读 · 0 评论 -
SysTick系统定时器
文章目录前言一、功能框图二、寄存器三、定时时间计算四、系统定时器在固件库的位置五、代码1.bsp_systick.h2.bsp_systick.c3.main.c总结前言本文记录的是stm32f103vet6系统定时器,它是存在cortex内核里面的一个定时器,嵌套在NVIC中。一、功能框图counter在时钟的驱动下,从reload初值开始往下递减计数到0,产生中断和置位COUNTFLAG标志。然后又从reload值开始重新递减计数,如此循环。二、寄存器查看cortex内核手册,关于原创 2022-03-11 00:21:53 · 1424 阅读 · 0 评论 -
基于STM32分析内存分布图
文章目录前言一、总体介绍二、RAM、ROM、FLASH三、Keil 的Build Output窗口前言本文参考某位博主的一篇文章,原文链接:https://blog.csdn.net/lin_duo/article/details/103019390`一、总体介绍在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量去、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段。总的分布如下图所示下面分别对每一个区做详细的介绍。栈区.原创 2022-03-07 17:50:33 · 1198 阅读 · 0 评论 -
DHT11温湿度传感器
文章目录前言一、编程前期工作1.原理图引脚2.工作方式3.数据格式4.通信过程和时序二、代码main.cbsp_dht11.cbsp_dht11.h结果总结前言本文记录的温湿度传感器的学习过程。实验平台:野火指南者stm32f103vet6模块:DHT11温湿度传感器一、编程前期工作1.原理图引脚有原理图可以知道DHT11的数据线接在板子的PE6引脚编程的时候,要配置并初始化PE6。2.工作方式DHT11只有一条数据线与MCU连接,是单总线串行通信,系统中的数据交换、控制均..原创 2022-03-06 23:48:02 · 2793 阅读 · 0 评论 -
显示器简介
文章目录前言一、显示器简介二、液晶显示器1.介绍2.原理3.显示器参数总结前言本文记录的学习笔记来自野火提示:以下是本篇文章正文内容,下面案例可供参考一、显示器简介显示器属于计算机的I/O设备,即输入输出设备。它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具。它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具。常见的有CRT显示器、液晶显示器、LED点阵显示器及OLED显示器。二、液晶显示器1.介绍液晶显示器,简称LCD(Liquid Crystal Display)..原创 2022-03-05 22:22:39 · 646 阅读 · 0 评论 -
人体红外传感器HC-SR501
本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。原创 2022-03-04 23:37:20 · 10665 阅读 · 7 评论 -
stm32软件模拟I2C
文章目录前言一、芯片手册和原理图二、编程要点三、代码1.引入库2.结果前言本文基于野火STM32F103VET6开发板,实现软件模拟i2c一、芯片手册和原理图由原理图可以知道I2C的时钟线和数据线在GIOPB端口芯片手册GPIOB挂载在APB2总线上,I2C1挂载在APB1总线上将BSRR寄存器某位置1,相当于ODR寄存器的相应位置1将BRR寄存器某位置1,相当于ODR寄存器的相应位置0读SDA_IO口的数据二、编程要点起始条件和停止条件数据的有效性:..原创 2022-02-27 23:29:33 · 3627 阅读 · 0 评论 -
ADC-单通道-DMA读取
文章目录前言一、思维导图二、DMA1.参考手册2.DMA初始化结构体3.使用DMA流程三、使用步骤1.引入库2.读入数据总结前言本文是基于野火STM32f103VET6,记录ADC-单通道-DMA读取。一、思维导图示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、DMA1.参考手册可以发现,DMA挂在AHB总线上2.DMA初始化结构体typedef struct{ uint32_t DMA_PeripheralBaseAddr; ..原创 2022-02-19 22:00:57 · 1246 阅读 · 0 评论 -
stm32之GPIO
文章目录前言GPIO思维导图前言本文给出一个关于stm32的GPIO思维导图GPIO思维导图原创 2021-11-28 20:43:54 · 282 阅读 · 0 评论 -
stm32点亮LED最终版本
文章目录前言一、创建库1.引入库2.GPIO初始化函数二、main函数总结前言根据野火教程,自己写库,构建库函数,点亮LED提示:以下是本篇文章正文内容,下面案例可供参考一、创建库把一切与LED的寄存器通过头文件,把寄存器封装好之余,再继续进行宏定义,让代码的可读性变得更强。1.引入库stm32f10x.h代码如下(示例):#ifndef __STM32F10X_H__#define __STM32F10X_H__typedef unsigned int uint32_t; ..原创 2021-11-28 20:09:03 · 213 阅读 · 0 评论 -
stm32点亮LED
文章目录前言一、原理图二、芯片手册1.点亮LED步骤2.相关寄存器三、代码总结前言本文记录的是基于stm32f103vet6开发板,点亮led的过程。本例是以GPIOB的PB0 LED_G为例。提示:以下是本篇文章正文内容,下面案例可供参考一、原理图由原理图,我们可以知道,GPIOB对应的引脚输出低电平,LED就会被点亮。二、芯片手册1.点亮LED步骤1、打开GPIOB的时钟2、设置GPIOB为输出模式3、将GPIOB对应的引脚输出低电平2.相关寄存器(1)RCC_APB..原创 2021-11-24 12:48:33 · 712 阅读 · 0 评论 -
stm32寄存器封装
文章目录前言一、版本一二、版本二三、版本三前言本文记录的是用stm32开发的时候,一些底层的寄存器封装,固件库是如何帮我们完成这些工作的一、版本一代码如下(示例):/* 外设基地址 */#define PERIPH_BASE ((unsigned int)0x4000000/* 总线基地址 */#define APB1PERIPH_BASE (PERIPH_BASE + 0)#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)..原创 2021-11-23 23:56:26 · 702 阅读 · 0 评论