- 博客(61)
- 收藏
- 关注
原创 16.1STM32_ADC
数字信号分为高/低电平两种状态模拟信号就是任意的电压值STM32芯片内就是一整套的数字逻辑电路,来实现我们的程序执行,以及各种各样的外设功能,ADC(模拟-数字转换技术)的功能就是将模拟信号转化为数字信号来进行处理的即二分比较确定电压值STM32F1采用12位的ADC ,12位指的是最总结果是以12个二进制位存储从0000 0000 0000 - – – 1111 1111 1111。
2025-03-04 13:43:16
996
原创 15-STM32旋转编码器
通过外部中断的方式处理编码器信号固然可以,而且任意两个GPIO口都可以进行,不过这中方式处理向我们学习版上这中转的慢的旋钮还不错,如果是处理转得非常快的电机的旋转编码器就会因为频繁触发中断,占用太多cpu软件计算资源,导致其他任务无法正常执行,而且太快了的话,还有可能软件处理跟不上,导致丢步问题。这样我们不仅可以通过计数A相或者B相上升沿或者下降沿的数量,来获得旋转编码器旋转的角度,而且还能根据A相边沿时B相的电平情况,得知当前的旋转方向,元件不同可能相反。触发控制器为A相和B相准备了一个编码器接口。
2024-12-14 23:05:30
522
原创 14-STM32 PWM脉冲宽度调制
在一组方波信号中一个周期内包括高点平和低电平假设高电平和低电平各占0.5ms 则一个周期为1ms占空比:数字信号与模拟信号:PWM:用数字信号模拟模拟信号,实现线性功能。通过调整占空比,模拟出不同的电压值,PWM就可以在宏观上实现类似正弦波等不同的波形信号如何让STM32输出PWM信号:需要借助定时器的另一种模式:输出比较模式。在输入捕获模式下:检测到上升沿时会将计数器中的值捕获到捕获寄存器中在输出比较模式下:变成了比较寄存器通常我们会使用向上计数模式。
2024-12-14 22:59:54
737
原创 13-STM32输入捕获
使用方法:当我们需要测量时,只需要通过GPIO口向Trig引脚发送一个脉冲信号,超声波模块接收到脉冲信号后就会向外发送一段超声波,就会将Echo变为高电平,当接受到返回来的超声波时,就会将电平拉低 ,那么Echo上高电平的持续时间,也就是超声波在往返途中消耗的时间。这种方案的优势在与,即使过一会程序再来读取数值,读取的也是硬件上记录下来的电平变化的那一刻的计数器值 ,不会引入软件运行时间的干扰,因而更加准确。原本我们需要持续检测输出端的电平变化,但STM32为我们提供了更好的决定方案:输入捕获。
2024-12-12 16:28:59
993
原创 12-STM32定时器从模式
外部时钟模式1的功能时个定时器提供计数的信号另外三种则是控制定时器的工作状态具体如何控制呢?在从模式控制器被占用时,触发控制器还可以从内部时钟源和ETR引入外部信号,这就是为什么ETR要独辟蹊径的原因。
2024-12-12 16:25:27
530
原创 11-STM32的外部时钟
1.当触发控制器的信号来自于APB1或APB2,该脉冲信号被称为定时器的“内部时钟”信号2.在STM32F103上,每个定时器 有四个输入通道,从TI1到TI4,其中TI3和TI4并没有接入到出发控制器STM32为每个输入通道都接入了配套的输入滤波器和边沿检测器3.通道一输出的脉冲信号有TI1FP1于TI1FP2、 通道二来说输出的脉冲信号有TI2FP1和TI2FP2但TI1FP2和TI2FP1目前不会用到,另外通道一上还有一根称为TI1_ED的信号也来到了触发控制器前。
2024-10-20 22:02:05
976
原创 10-STM32 定时器
启动TIM4的定时器,以中断方式启动,让TIM4在每次达到自动重装载值时触发更新中断。2.根据APB1的定时器分支的速率,设置预分频器与自动重装载寄存器。4.重写触发定时器更新中断。
2024-10-20 21:58:50
297
原创 嵌入式职业规划
嵌入式Linux底层(BSP)软件开发工程师;嵌入式Linux应用开发工程师;嵌入式MCU软件开发工程师;嵌入式FPGA算法开发工程师。
2024-10-17 21:35:30
718
原创 9-时钟树与时钟源
STM32为什么要提高时钟频率不过,时钟频率提高也会带来功耗增加的问题。因此,在实际应用中,设计者通常需要在,根据具体需求调整时钟频率。在前面已经学习了如何设置高速时钟源,在这里复习一下:1.在System Core 中将RCC中的高速时钟源HSE 改为晶振Crystal/Ceramic Resonator2.随后来到时钟设置,将HCLK修改为最高频率会自动寻找配置提升其时钟频率时钟信号是电子系统中提供的脉冲信号,它,使它们能够按照规定的节奏进行操作。由心脏。又通过“动脉”传播到整个芯片中。
2024-10-17 21:33:25
1273
原创 8-OLED屏幕
第一个数据为0x01 控制指令所设置的页地址和列地址上的小灯亮灭设置为00000001,即最低位亮起,并将列地址自动加1,接着读取第二个数据。 将列地址设置为90 ,即0x5A,则要发送指令0x0A将列地址低4位设置为A,然后发送指令0x15将列地址高4位设置为5。以上就是oled显示的基本原理、但是,在真正使用的时候,并不需要这样自己造轮子,而是直接使用已经写好的代码,只需要会自己调用。0x7A 0x40 0xXX 0xXX (0xXX为任意数量的数据)即控制小灯的亮灭数据。
2024-10-17 10:38:05
1875
原创 7-I2C与AHT20温湿度传感器
在aht20.h中在aht20.c中就可以引用串口,I2C的相关变量。根据温湿度手册初始化AHT201.上电后需要等待40ms2.先向ATH20发送0x71 , aht20回返回1字节的状态信息。并判断此状态信息的第三位是否为1,是1才进行后面的操作,如果不是,则要发送0xBE命令(初始化),此命令参数有两个字节,第一个字节为0x08,第二个字节为0x000x71 是AHT20作为IIC从机的地址 AHT20_ADDRESS。
2024-10-13 20:42:24
1263
1
原创 7.1-I2C的中断
回顾通信具体过程如下:在I2C的轮询模式中发送时:CPU将以主机0x70 发送 从机 ACK 回复 主机0xAC发送 ACK 回复 主机 0x33 从机ACK…全部发送且接收完成后,才会空闲下来,去处理其他指令,接收时,也是类似,整个发送或者接收过程中,一直阻塞执行,占用着CPU资源。完成后才回去处理其他代码。为了解决上述CPU阻塞情况,I2C也有中断模式与DMA模式。
2024-10-13 20:33:18
1287
原创 6-蓝牙模块与数据包解析
蓝牙连接中有主机和从机,在建立通信连接前,从机要向外广播自己的信息,然后主机扫描到附近正在广播的蓝牙设备(子机)后就发起连接,连接建立后,双方就可以通过约定好的协议进行通信了。蓝牙分为普通蓝牙,和低功耗蓝牙低功耗蓝牙,包括诸多协议,如GAP广播协议,GATT协议,Service Characteristic等众多知识点。
2024-10-12 21:51:01
918
原创 4.STM32-中断
需求:红灯每两秒进行闪烁,按键key1控制绿灯亮灭简单的程序代码无法满足要求如何让STM32既能执行HAL_DELAY这种耗时的任务,同时又能快速响应按键按下这种突发情况呢设置中断步骤。
2024-10-10 22:03:26
1490
原创 3-GPIO八大输出模式 推挽输出 与 开漏输出
GPIO有八大输出模式下图为每个GPIO口的基本结构:通过这张图来学习最右侧是I/O引脚,是从STM32引脚到GPIO口的导线,与其他芯片进行连接的线。芯片内部电路所能承受的电压有限,当未知的静电进入GPIO口,大于所能承受的电压,就会被上方的保护二极管导通,将电压引入电源,由电源网络吸收,当波动电压小于VSS(0V)时,下方保护二极管被导通,波动电压被引入GND中吸收。此结构只能抵御一瞬间的电压波动,若较长的高电压导入芯片,会损坏芯片。
2024-10-10 21:59:15
1281
原创 1-嵌入式-linux命令
比如,简单的ls命令就有:-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1等选项,可以发现选项是极其多的。data -d “+1 month” +%Y-%m-%d 显示上一月的日期。data -d “+1 day” +%Y-%m-%d 显示后一天的日期。data -d “-1 day” +%Y-%m-%d 显示前一天的日期。
2024-10-09 16:21:58
995
原创 day06-matplotlib不同图形的绘制(柱状图、折线图、饼图)
直方图(Histogram),又称质量分布图,它是一种条形图的一种,由一系列高度不等的纵向线段来表示数据分布的情况。面的直方图都是等距的,但有时我们需要得到不等距的直方图,这个时候只需要确定分组上下限,并指定 histtype=“bar” 就可以。所谓堆叠柱状图就是将不同数组别的柱状图堆叠在一起,堆叠后的柱状图高度显示了两者相加的结果值。饼状图用来显示一个数据系列,具体来说,饼状图显示一个数据系列中各项目的占项目总和的百分比。
2024-07-12 16:38:16
1630
原创 day05-Matplotlib创建图形对象
在 Matplotlib 中,面向对象编程的核心思想是创建图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)。Matplotlib 提供了图形类模块,它包含了创建图形对象的方法。通过调用 pyplot 模块中 figure() 函数来实例化 figure 对象。
2024-07-12 16:32:56
1316
原创 day05-matplotlit设置图形各种参数
传入x,y,通过plot画图,并设置折线颜色、透明度、折线样式和折线宽度 标记点、标记点大小、标记点边颜色、标记点边宽,网格。且所有的操作均在plt.gca( )中完成,gca就是get current axes的意思。颜色参考地址:http://tools.jb51.net/color/jPicker。在我理解看来,意思是这些边界框线是坐标轴区域的“支柱”。上图中,用红色标识出的黑色边界框线在Matplotlib中被称为。,也可以使用线条颜色的英文,还可是使用之前的缩写。
2024-07-12 16:26:12
1056
原创 day04-numpy操作文件
返回:从文件中读取的数组。数据:姓名,年龄,性别,身高小王,22,男,170小张,25,女,165小花,19,女,167小谭,20,男,169小胡,21,女,161小余,19,女,159小陈,27,男,177分析:由于每一列的数据类型都不一样,需要自定义数据类型。
2024-07-05 23:04:45
623
原创 day04-matplotlib入门
Matplotlib 提供了一个套面向绘图对象编程的 API接口实列:绘制x轴为-50-50,y轴为x轴的平方的直方图。
2024-07-05 23:02:45
1032
原创 day03-numpy数据类型
使用数据类型标识码字符对应类型字符对应类型字符对应类型字符对应类型b代表布尔型i带符号整型u无符号整型f浮点型c复数浮点型m时间间隔(timedelta)Mdatatime(日期时间)OPython对象S,a字节串(S)与字符串(a)UUnicodeV原始数据(void)还可以将两个字符作为参数传给数据类型的构造函数。此时,第一个字符表示数据类型, 第二个字符表示该类型在内存中占用的字节数(2、4、8分别代表精度为16、32、64位的 浮点数)
2024-07-04 21:42:27
783
原创 day02-统计数据
权重数组可以是一维的(在这种情况下,它的长度必须是沿给定轴的 a 的大小)或与 a 具有相同的形状。如果 weights=None,则假定 a 中的所有数据的权重等于 1。在概率统计中最常使用作为统计分布程度上的测量,是反映一组数据离散程度最常用的一种量化形式,是表示精确度的重要指标。中位数:像一条分界线,将数据分成前半部分和后半部分,因此用来代表一组数据的"中等水平"平均数:是一个‘虚拟’的数,是通过计算得到的它不是数据中的原始数据。:反映了一组数据的平均大小,常用来一代表数据的总体 “平均水平”
2024-07-04 21:40:01
1010
原创 day02-广播机制
1.如果两个数组a和b形状相同,即满足a.shape == b.shape,那么a*b的结果就是a与b数组对应位相乘。这要求维数相同且各维度的长度相同。2.如果是两个形状不同的数据,广播机制的核心是对形状较小的数组,在横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度。原理如下图,数组b在一维的基础上扩展成重复的二维。
2024-07-03 22:59:51
501
原创 day01-切片和索引
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中list 的切片操作一样。ndarray数组可以基于0-n的下标进行索引特点:左闭右开【 } 用法同列表切片。
2024-07-03 22:58:06
488
原创 day01-Numpy的安装
同样,anaconda内置有Numpy包使用Jupyter编辑器打印numpy包的版本NumPyNumPy定义了一个n维数组对象,简称ndarray对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有相同大小的内存块。与c语言中的数组大致相同。ndarray对象采用了数组的索引机制,存储方式几乎相同ndarray参数4.ndmin5.subok参数,类型为bool值,默认False。True:代表使用object的内部数据类型,False:使用数组的数据类型。
2024-06-21 17:45:41
510
原创 day01-anaconda的安装
New-Python3后会创建一个未命令的以.ipynb为后缀的文件,在功能区其实跟很多编辑器如idea,pychram类似。值得一提的是,该编辑器可以使用tab键进行补写代码。其网站中的内容为你在哪个路径下运行该命令,那么网站中的内容就是该目录下的内容,因此,需要在你指定的目录下运行上述命令。安装完毕,可以卸载电脑中的其他python版本,在控制面板中进行卸载。可以看到有Anaconda的版本,说明安装成功。运行后打开任一URL。
2024-06-21 17:42:52
355
原创 python-web应用程序-Django数据库-数据库表设计
在models中创建一个类会自动对数据库进行管理,那么如何用类的声明来实现数据库表的设计呢?对于前端高度重复的部分,可以使用模版继承将不变的继承下来,变化的重写即可。后续使用Django中提供的Form和ModelForm组件更方便。也可点击-tools - run manage.py TASK。创建一个前端模版layout.html。使用模版,创建一个test.html。在需要变化的地方加上。
2024-06-03 17:13:23
812
1
原创 python-web应用程序-Django数据库
Django的ORM框架则集成了pymysql或mysqlclient或MysqlDB,在其之上写代码,将会更加简洁。注意,如果创建了一个表后还需要增加字段,需要给默认值(最好给NULL)。创建、修改、删除数据库中的表(不用你写SQL语句),但无法创建数据库。3.Django链接数据库-settings.py中修改配置。2.在命令行执行下列命令后会Django会根据类自动创建表。原始方法是写代码,使用pymysql使用数据库。操作表(写在models.py文件中)2.创建新的数据库pymysql。
2024-06-03 17:12:41
418
1
原创 python-web应用程序-Django的请求与访问
其中request是一个对象,封装了用户发送过来的所有请求相关数据。 返回用户输入url中?XXXX传递过来的数据。 返回用户通过post方式传递过来的数据。
2024-05-30 17:20:23
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人