STM32入门教程笔记
文章平均质量分 94
STM32入门教程笔记(具体参考哪个视频在每一篇的顶部都有给出)
Zevalin爱灰灰
每天都想
展开
-
STM32入门教程(绪论)
(1)表中前两个外设是ARM Cortex-M3内核中的外设,剩下的都是内核外的外设。(2)原创 2023-11-27 23:45:01 · 643 阅读 · 1 评论 -
STM32入门教程(GPIO篇)
在这种模式下只有低电平有驱动能力,高电平没有驱动能力,该模式可以作为通信协议的驱动方式,在多机通信的情况下这个模式可以避免各个设备的相互干扰,另外该模式还可以用于输出5V的电平信号(在I/O引脚处接一个上拉电阻连接5V电源,数据寄存器相应位为1时N-MOS断开,I/O口输出5V电压)。,高16位闲置),其中输出寄存器写1对应的引脚就会输出高电平,输出寄存器写0对应的引脚就会输出低电平,输入寄存器读取为1证明对应的端口目前是高电平,输入寄存器读取为0证明对应的端口目前是低电平;原创 2023-11-28 13:20:04 · 1084 阅读 · 0 评论 -
STM32入门教程(OLED屏篇)
(3)Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。(3)0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块。(2)OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点。(1)串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。(2)显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。(2)在项目的Hardware组中添加三个文件。原创 2023-11-29 22:52:51 · 1148 阅读 · 1 评论 -
STM32入门教程(EXTI外部中断篇)
(6)中断系统配置好后需要有中断函数,中断函数具体如何命名(与51单片机不同,STM32中的中断函数需严格按照规定命名),可以在Start组中的.s文件中找,本例选择的是EXTI14号输入线(10-15号输入线合并在同一个通道)的中断,所以中断函数名为EXTI15_10_IRQHandler。(中断函数全部都是无参数无返回值;(3)中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。PG0中的其中一个引脚,。原创 2023-11-29 22:58:56 · 944 阅读 · 0 评论 -
STM32入门教程(定时器篇)
(3)CK_CNT是计数器时钟(输入计数器的时钟,由预分频器输出),CNT_EN未使能时时,CK_CNT不会产生计数脉冲,CNT_EN使能后,时序图前半段预分频器的参数为1,计数器的时钟频率CK_CNT等于输入预分频器的时钟CK_PSC,时序图后半段预分频器的参数为2,计数器的时钟频率CK_CNT等于输入预分频器的时钟CK_PSC二分之一。(2)从模式可以接收其它外设或者自身外设的一些信号用于控制自身定时器的运行,需要选择指定的一个信号得到TRGI,TRGI触发从模式,从模式可以选择一项操作自动执行。原创 2023-11-30 22:18:10 · 1405 阅读 · 2 评论 -
STM32入门教程(ADC模数转换器篇)
(3)比较器可以判断两个输入信号电压的大小关系,输出一个高低电平指示谁大谁小,两个输入分别为待测电压和DAC(数模转换器)输出电压,如果DAC输出的电压比待测电压大,DAC输出需要降低,如果DAC输出的电压比待测电压小,DAC输出需要增加,(1)单次转换,非扫描模式:在非扫描模式下,每次触发转换后只能有一个通道的电压被转换,转换结果存放在数据寄存器中,同时EOC标志位置1,转换过程结束,如果想再启动一次转换,那就需要再触发一次,在触发转换之前可以更换待测通道。9、ADC有一个内置自校准模式。原创 2023-12-01 13:58:59 · 1134 阅读 · 0 评论 -
STM32入门教程(DMA篇)
(1)ADC受到触发后会对7个通道上的模拟电压按次序进行轮流转换,在每一个通道转换完成后,需要DMA进行一次数据转运,将ADC中数据寄存器的内容转运到SARM中的ADValue数组,数组中每一个元素各自对应一个通道的电压值。(2)为了高效且有条理地访问存储器,STM32设计了一个总线矩阵,总线矩阵的左端是主动单元,它们拥有存储器的访问权,右端是被动单元,它们的存储器只能被左边的主动单元读写。①起点的起始地址为DataA数组的首地址,终点的起始地址为DataB数组的首地址;SRAM是运行内存,可以任意读写。原创 2023-12-01 22:40:24 · 950 阅读 · 0 评论 -
STM32入门教程(串口篇)
(6)SCLK是产生同步的时钟信号,它配合发送移位寄存器输出(仅支持输出,不支持输入),发送寄存器每移位一次,同步时钟电平就跳变一个周期。(5)如果发送设备发生数据的速度太快,接收设备可能会来不及处理,这时就会出现丢弃或覆盖数据的现象,硬件数据流控可以解决这个问题,(3)在main.c文件中粘贴以下代码,然后编译,将程序下载到开发板中,在串口助手向单片机发送数据,根据主函数的注释进行调试。(连续采样3次是为了保证数据的可靠性,采集到的0多则为0,1多则为1,如果3次采样不同,噪声标志位NE会置为1)。原创 2023-12-02 16:16:15 · 1298 阅读 · 0 评论 -
STM32入门教程(I2C通信篇)
(3)加速剂和陀螺仪都配有自测单元(Self test)用于验证芯片好坏,启动自测后芯片内部会模拟一个外力施加在传感器上,这时数据寄存器中存放模拟而得的数据,接着关闭自测,数据寄存器的值更新,两组数据相减,得到“自测响应”,芯片手册中对于自测响应给出了参考范围,如果自测响应在参考范围中,说明芯片能够正常工作。(2)支持多主机模型,支持7位/10位地址模式,支持不同的通讯速度(标准速度(高达100 kHz),快速(高达400 kHz)),支持DMA,兼容SMBus协议。原创 2023-12-03 14:51:25 · 1595 阅读 · 0 评论 -
STM32入门教程(SPI通信篇)
1、SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线,共四根通信线,分别为SCK(Serial Clock,提供时钟信号)、MOSI(Master Output Slave Input,主机向从机发送数据的线路)、MISO(Master Input Slave Output,主机接收从机数据的线路)、SS(Slave Select,从机选择线,每个从机配一条),采取同步、全双工方式,支持总线挂载多设备(一主多从)。原创 2023-12-03 23:42:32 · 1020 阅读 · 0 评论 -
STM32入门教程(RTC实时时钟&BKP备份寄存器篇)
(3)RTC的预分频器由两个寄存器组成,RTC_PRL是重装载寄存器(决定分频系数),RTC_DIV是余数寄存器(本质上是一个自减计数器),DIV负则对RTCCLK的时钟脉冲进行计数,当自减为0时会输出一个时钟脉冲到TR_CLK上,同时PRL将重装载值写进DIV中,以此往复达到分频的效果。(5)RTC_ALR是闹钟寄存器,它与RTC_CNT等长,用于设置闹钟,用户可以在ALR中写一个时间戳,当ALR与CNT的值相等时会产生RTC_Alarm信号通往右侧的中断系统,同时还可以使STM32退出待机模式。原创 2023-12-04 16:46:27 · 1268 阅读 · 0 评论 -
STM32入门教程(PWR电源控制篇)
当VDD或者VDDA过低时,内部电路直接产生复位信号(低电平有效),是否产生复位信号的界限之间有40mV的迟滞电压,电压从低到高时需要高于上限POR(Power On Reset)才会解除复位,电压从高到低时需要低于下限PDR(Power Down Reset)才会复位,这是为了防止电压在某个阈值附近抖动从而造成复位信号的抖动。(2)在main.c文件中粘贴以下代码,然后编译,将程序下载到开发板中进行调试,使用串口助手向单片机发送数据,每发送一次数据,OLED屏闪烁显示一次“Running”。原创 2023-12-04 23:19:26 · 1250 阅读 · 0 评论 -
STM32入门教程(WDG看门狗篇)
①正常情况下,将程序下载到开发板后OLED屏会显示一次“RST”,然后会不断闪烁显示“FFED”,如果按下复位按键,OLED屏会再显示一次“RST”,然后接着不断闪烁显示“FFED”。①正常情况下,将程序下载到开发板后OLED屏会显示一次“RST”,然后会不断闪烁显示“FFED”,如果按下复位按键,OLED屏会再显示一次“RST”,然后接着不断闪烁显示“FFED”。①窗口看门狗的时钟源是PCLK1(36MHz),时钟进入预分频器前会进行4096分频(图上未体现)。原创 2023-12-05 13:35:38 · 947 阅读 · 0 评论 -
STM32入门教程(FLASH闪存篇)
(1)首先读取控制寄存器的LOCK位,如果LOCK=1,那就需要解锁(在KEYR寄存器先写入KEY1再写入KEY2)才能继续操作,如果LOCK=0,可以往下进行编程(写入)操作。(1)首先读取控制寄存器的LOCK位,如果LOCK=1,那就需要解锁(在KEYR寄存器先写入KEY1再写入KEY2)才能继续操作,如果LOCK=0,可以往下进行擦除操作。(2)置CR寄存器的PG位为1,开始编程操作,不过STM32的闪存会在写入数据之前会检查指定地址有没有被擦除,如果未被擦除,STM32不执行写入操作。原创 2023-12-05 16:03:49 · 1166 阅读 · 0 评论