![](https://img-blog.csdnimg.cn/direct/af2eae73e3394f1eb710e50866920fb1.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32
文章平均质量分 96
STM32学习过程
嵌入式JunG
一个热爱嵌入式的小学生
展开
-
基于STM32的逻辑分析仪
逻辑分析仪是分析数字信号的仪器,简单地说就是采集引脚的高低电平,按照某些协议分析多个引脚的信息(比如I2C、SPI信号)。有些逻辑分析仪也可以采集模拟信号,是简化版的示波器。使用场景如下:软件下载:https://sigrok.org/wiki/DownloadsPC机软件:可以使用开源软件PulseView。逻辑分析仪的方案有很多种,产品级别的方案如下:它一般都使用FPGA进行数据采集(高速、并行),把结果保存在大容量的DRAM里。采集完毕后,再通过单片机上传到PC进行分析:这被称为buffer模式。这种原创 2024-07-24 19:36:56 · 1099 阅读 · 36 评论 -
ESP32开发
WIFI模块在PC上做为客户端、服务器,在STM32上做服务器的通讯。在物联网应用开发有重要作用,种类居多,如下图红色方框的esp8266-01s型号的无限wifi模块就是本章学习的主要对象。⚠注意:•不是每条AT指令都具备上述4种类型的命令。•[ ]括号内为缺省值,不必填写或者可能不显示。•使⽤双引号表示字符串数据”string”,例如:•默认波特率为115200。•AT指令必须⼤写,并且以回⻋换⾏符结尾(CR LF6、AT指令应用示例_原创 2024-04-23 18:56:03 · 1176 阅读 · 0 评论 -
基于STM32的智能小车
注意:此时小车轮子并不能正常改变转动速度转动,原因是L9110电机模块每个控制口需要一高一低才可以动起来,如果PWM有效电平为高电平,则另一个 GPIO口则需要输出低电平才可以驱动轮子,解决方法是将电机模块对应的GPIO口设置低电平驱动即可。2.左循迹模块照射到黑色跑道上——左边红外被吸收不返回——左边输出高电平——指示灯灭——需要左转。3.右循迹模块照射到黑色跑道上——右边红外被吸收不返回——右边输出高电平——指示灯灭——需要右转。IA1输入高电平,IA1输入低电平,【OA1 OB1】电机正转;原创 2024-04-21 23:44:47 · 2023 阅读 · 0 评论 -
基于STM32的感应开关垃圾桶
使用精准的时基,通过硬件的方式,实现定时功能。1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。2) 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535之间的任意数值。3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:A.输入捕获B.输出比较C.PWM 生成(边缘或中间对齐模式)D.单脉冲模式输出。原创 2024-03-13 22:14:12 · 997 阅读 · 0 评论 -
基于STM32的电动车防盗器设计
工作电压:3.3V到5V接口类型:数字引脚定义:1–输出 2–电源 3—地平时保持高电平输出,震动时输出低电平本开关在静止时为开路(OFF)状态,当受到外力碰触而达到适当震动力时,或移动速度达到适当离(偏)心力时,导电接脚会发生瞬间导通(ON)状态,使电气特性改变,而当外力消失时电气特性恢复开路(OFF)状态无方向性,任何角度均可以触发工作在外力震动时,达到适当的震动力时导电针将瞬间开启(ON)。无方向,任何角度可能检测震动。单片机供电VCC GND接单片机,原创 2024-03-13 00:15:19 · 1199 阅读 · 0 评论 -
STM32标准库——(21)Flash闪存
第一个用途,对于我们这个C8T6芯片来说,它的程序存储器容量是64K,一般我们写个简单的程序,可能就只占前面的很小一部分空间,剩下的大片空余空间我们就可以加以利用,比如存储一些我们自定义的数据,这样就非常方便,而且可以充分利用资源,不过这里要注意我们在选取存储区域时,一定不要覆盖了原有的程序,要不然程序自己把自己给破坏了,一般存储少量的参数,我们就选最后几页存储就行了,关于如何查看程序所占用空间的大小,这个我们下小节也会介绍,然后第二个用途就是通过在程序中编程IAP,实现程序的自我更新。原创 2024-03-09 21:11:47 · 1646 阅读 · 2 评论 -
STM32标准库——(20)WDG看门狗
独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。原创 2024-03-09 00:14:49 · 1067 阅读 · 0 评论 -
STM32标准库——(19)PWR电源控制
PWR属于外设部分 调用时需要先开启时钟。原创 2024-03-07 21:04:14 · 1124 阅读 · 0 评论 -
STM32标准库——(18)Unix时间戳、BKP备份寄存器、RTC实时时钟
32位有符号数所能表示的最大数字是2^32/2-1这个数是21亿多,这其实是有溢出风险的,因为目前到2023年时间戳已经计到16亿了,32位有符号数的时间戳会在2038年的1月19号溢出,64位的时间戳能存储的时间范围非常非常的大,看下手册STM32它核心的计时部分,是一个32位的可编程计数器,这说明我们这款stm32 ,它的时间戳是32位的数据类型,这表示我们这个stm32也会在2038年出现bug吗,实际上并不会啊,因为根据我的研究,这个时间戳在stm32程序中定义的其实是无符号。原创 2024-03-06 17:47:32 · 1270 阅读 · 0 评论 -
STM32标准库——(17)硬件SPI读写W25Q64
时钟频率就是sck波形的频率,一个sck时钟交换一个bit,所以时钟频率一般体现的是传输速度,单位是Hz或者bit/s,那这里的时钟频率是fPCLK除以一个分频系数分频系数可以配置为2或4或8、16、32、64、128、256,所以可以看出来,spi的时钟其实就是由pclk分频得来的,pclk就是外设时钟,APB2的pclk就是72MHz,APB1的pclk是36MHz,比如我们的spi1是APB2的外设,pclk等于72MHz,那它的spi时钟频率最大就是只进行二分频=36MHz。原创 2024-03-05 21:16:59 · 1274 阅读 · 1 评论 -
STM32标准库——(16)SPI通信协议、W25Q64简介
•SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线•四根通信线:SCK(Serial Clock:串行时钟线)、MOSI(Master Output Slave Input:主机输出从机输入)、MISO(Master Input Slave Output:主机输入从机输出)、SS(Slave Select:从机选择)【注:MOSI也可以是DO(Data Output) MISO也可以是DI(Data Input) SS也可以是NSS(Not Sl原创 2024-03-04 21:37:25 · 1382 阅读 · 1 评论 -
STM32标准库——(14)I2C通信协议、MPU6050简介
芯片进行I2C通信的从机地址,这个可以在手册里查到,当AD0等于0,地址为1001000,当AD0等于1时,地址为1001001,AD0就是板子引出来的一个引脚,可以调节I2C从机地址的最低位,这里地址是七位的。如果像这样用二进制来表示的话,一般没啥问题,如果在程序中用16进制表示的话,一般会有两种表示方式,以这个1001000的地址为例,第一种就是单纯的把这七位的二进制转化为16进制,这里1001000低4位和高3位切开转换。原创 2024-03-01 20:01:23 · 1472 阅读 · 0 评论 -
STM32标准库——(15)硬件I2C读写MPU6050
I2C通信分为主机和从机主机就是拥有主动控制中心的权利,而从机只能在主机允许的情况下才能控制总线,在一主多从的模型下,就是这样,这个是唯一的主机,下面这里可以挂载多个从机等等,那这个过程就很容易操作了,主机一个人掌控所有从机都得听他的话,不存在什么权力冲突,那进阶版的I2C还设计了多主机的模型,多主机又可以分为固定多主机和可变多主机。固定多主机,就是这条总线上有两个或更多个固定的主机,上面这几个始终固定为主机,下面这几个始终固定为从机,这个状态就像是在教室里,原创 2024-03-04 00:04:01 · 1498 阅读 · 0 评论 -
STM32标准库——(13)USART串口数据包
所以需要第三个状态,如果只有一个包尾,那在出现包尾之后,就可以直接回到初始状态了,只需要两个状态就行,因为接收数据和等待包尾需要在一个状态里同时进行,由于串口的包头包尾不会出现在数据中,所以基本不会出现数据错位的现象,这就是使用状态机接收文本数据包的方法。类似于置标志位,但标志位只有0和1,而状态机允许多标志位状态,初始时,S=0表示等待包头状态。同样也是利用状态机,定义3个状态,第一个状态,等待包头,判断收到的是不是我们规定的。,如果不是,则正常接收,如果是,则不接收,同时跳到下一个状态,原创 2024-02-29 21:36:06 · 1482 阅读 · 0 评论 -
STM32标准库——(12)USART串口协议
其中这里USART1是APB2总线上的设备,剩下的都是APB1总线中的设备,开启时钟的时候注意一下。原创 2024-02-29 01:11:11 · 1306 阅读 · 2 评论 -
STM32标准库——(11)DMA直接存储器存取
外设一般指的是数据寄存器DR( Data Register),比如ADC的数据寄存器,串口的数据寄存器等等,这里存储器指的就是运行内存SRAM和程序存储器flash,是我们存储变量数组和程序代码的地方,在外设和存储器或者存储器和存储器之间进行数据转运,就可以使用DMA来完成,并且在转运的过程中无需CPU的参与,节省了CPU的资源如果执行的是存储器到存储器的转运,比如我们想把flash里的一批数据转运到SRAM里去,那就需要软件触发。原创 2024-02-07 13:20:58 · 1083 阅读 · 1 评论 -
STM32标准库——(10)ADC模数转换器
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。ADC(Analog-Digital Converter)模拟-数字转换器。原创 2024-02-04 00:57:29 · 1882 阅读 · 0 评论 -
STM32标准库——(9)TIM编码器接口
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2。原创 2024-02-03 15:19:47 · 1457 阅读 · 0 评论 -
STM32标准库——(8)TIM输入捕获
IC(Input Capture)输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道可配置为PWMI模式,同时测量频率和占空比可配合主从触发模式,实现硬件全自动测量输出比较,引脚是输出端口,根据CNT和CCR的大小关系来执行输出动作输入捕获,引脚是输入端口,接收到输入信号执行CNT锁存到CCR的动作。原创 2024-02-02 23:38:25 · 2205 阅读 · 0 评论 -
STM32标准库——(7)TIM输出比较
OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出的功能PWM。原创 2024-02-02 16:13:48 · 1236 阅读 · 0 评论 -
STM32标准库——(6)TIM定时中断
TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。原创 2024-01-29 15:07:56 · 1633 阅读 · 0 评论 -
STM32标准库——(5)EXTI外部中断
相同的Pin不能同时触发中断:比如PA0和PB0不能同时使用通道数:加起来总共有20个中断线路16个GPIO_Pin是外部中断的主要功能 后面四个主要是来外部中断”蹭网“的 外部中断有个功能 就是从低功耗模式的停止模式下唤醒STM32 对于PVD电源电压监测 当电源从电压过低恢复时 就需要PVD借助一下外部中断退出停止模式对于RTC闹钟来说 有时候为了省电 RTC定了个闹钟后 STM32会进入停止模式 等到闹钟响的时候再唤醒 这也需要借助外部中断 USB唤醒、以太网唤醒也都是类似作用。原创 2024-01-27 22:22:56 · 1270 阅读 · 0 评论 -
STM32标准库——(4)OLED显示屏
OLED,即有机发光二极管( Organic Light Emitting Diode )。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。0.96 寸 OLED 有黄蓝,白,蓝三种颜色可选;原创 2024-01-26 22:49:03 · 2420 阅读 · 8 评论 -
STM32标准库——(3)GPIO输入
按键:常见的输入设备,按下导通,松手断开按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出关键字:#define用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改定义宏定义:引用宏定义://等效于int a = 12345;原创 2024-01-26 18:37:28 · 935 阅读 · 0 评论 -
STM32标准库——(2)GPIO输出
GPIO(General Purpose Input Output)通用输入输出口可配置为8种输入输出模式0V~3.3V部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器。原创 2024-01-22 00:55:06 · 1511 阅读 · 0 评论 -
STM32标准库——(1)简介、工程建立
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器ARM既指ARM公司,也指ARM处理器内核ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片系列:主流系列STM32F1。原创 2024-01-17 00:31:43 · 1715 阅读 · 0 评论