- 博客(16)
- 收藏
- 关注
原创 STM32 FLASH简介
闪存存储器接口是一个外设,是这个闪存的管理员。我们使用的STLink就是SWD协议下载,下载的时候会更新Flash当中的全部内容。Bootloader就是串口下载,我们目前使用过的就是ICP下载方式。
2023-10-05 23:12:49 458
原创 STM32 看门狗
程序设计的漏洞必须要对可以预知的漏洞提前想好对策和解决方法,最后实在不行了才用看门狗作为最后的杀手锏。独立看门狗:看门狗的时钟是专用的LSI,内部低速时钟,主时钟出现问题了,看门狗也可以工作。只有一个最晚的喂狗时间界限。当程序卡死在喂狗的程序,或者跑飞的时候也依然执行了喂狗的代码,这样就无法检测到了。窗口看门狗:有一个最早的时间界限和一个最晚的时间界限,必须在这个界限之内喂狗。窗口看门狗使用的是APB1的时钟。看门狗开启之后就不可以再关闭了。
2023-10-05 11:56:27 419
原创 STM32 PWR电源控制
可编程电压检测器:使用于电池供电,或者对安全要求比较高的设备,当电压过低或者过高都会造成不必要的错误,因此我们可以在电压不正常的时候通过PWR电源控制及时制止。
2023-10-04 18:12:59 197 1
原创 STM32 实时时钟
我们每次上电都意味着重新调用了初始化函数,这样时间就会被重置,因此要有选择的调用初始化函数,为了不被掉电重置我们就需要检测备用电源是否被断开了,备用电源断开了我们才会调用初始化函数。3.stm32也不知道当前是处于那个时区,所以gmtime()和localtime()将秒计数器转化为日期时间的功能就没有区别了。第二步:启动RTC的时钟使用LSE作为系统时钟,因此要使用RCC模块里的函数开启LSE的时钟,LSE时钟默认是关闭的。第五步:配置预分频器,给重装寄存器一个合适的值,保证输出给计数器的频率是1Hz。
2023-10-03 18:41:38 378
原创 STM32 BKP&RTC
HSE:高速外部时钟信号HSI:高速内部时钟信号LSI:低速内部时钟信号LSE:低速外部时钟信号以上的高速时钟一般用于内部程序运行和主要外设使用,低速时钟一般供RTC、看门狗这些东西使用。提供给RTC的晶振一般都是32.867KHZ(LSE)的晶振频率。LSI没有LSE提供的时钟精准,所以LSI可以作为备用时钟。注意:只有LSE的时钟才可以通过备用电池VBAT进行供电。
2023-10-02 18:08:39 234 1
原创 STM32 Unix时间戳
用很大的秒数来表示时间的好处:第一:简化硬件电路。第二:在进行计算一些时间间隔的时候非常的方便。第三:存储方便,只需要一根很大的变量就可以解决问题。坏处就是比较占用软件资源。Unix时间戳是一个计数器,计数的是从1970年1月1日0时0分0秒到现在总共所经过的秒数。在我们的stm32当中使用的是无符号的计数时间戳。到2106年才会溢出。Linux、Windows、安卓这些系统的底层计时系统,都是使用的是Unix时间戳。
2023-10-02 15:47:20 289 1
原创 STM32 SPI硬件外设
即一次向DR寄存器当中发送8个Bit的数据即一次可以向DR寄存器发送16Bit的数据,也就是两个字节的数据,当然这两个字节也是分开来发送的。一个SCK时钟交换一个Bit,所以时钟频率一般体现的是传输速度,单位是Hz或者bit/s。在这里的时钟频率就是fPCLK/分频系数,PCLK(Peripheral Clock)即外设时钟。APB2的外设时钟为72MHz,APB1的外设时钟为36MHz。SPI1挂载在了APB2,SPI2挂载在了APB1。所以同样的配置SPI1的频率要比SPI2大一倍。
2023-09-30 15:14:29 583 1
原创 STM32 软件SPI读写W25Q64
在初始化函数当中要分清谁是输入脚谁是输出脚,对于主机来说,CS片选,SCK时钟和DI都是输出脚,之后DI引脚是输入。输出引脚配置为推挽输出,输入引脚配置为浮空或者上拉输入。,在该模块当中包含通信引脚封装、初始化,SPI通信的起始、终止和交换一个字节。我们可以使用掩码的方式来进行,也可以通过,模拟硬件寄存器的方式来进行实现。SPI软件模拟的终止信号相对于起始信号,只需要将我们的片选改为0即可。,再该模块当中调用底层SPI的拼图,来拼接各种指令和功能的完整时序。内调用W25Q64驱动层的函数来实现功能。
2023-09-27 10:39:00 263 1
原创 STM32学习——使用SPI的芯片W25Q64
存储器分为了易失性存储器和非易失性存储器,易失性存储器一般就SRAM,DRAM;非易失性存储器一般为E2PROM、Flash。这两种存储器的区别就是易失性存储器会掉电丢失,非易失性存储器不会掉电丢失就是我们让我们的文字都存到该芯片当中,当我们需要进行显示某个汉字的时候,先读取芯片查询字库,再在显示屏上显示对应的点阵数据,这样就可以让显示屏,任意显示中文了。直接将我们的程序文件下载到外挂芯片当中,当要执行程序的时候直接读取外挂芯片的程序文件来执行。即XIP(execute in place)就地执行。
2023-09-24 11:28:47 753 1
原创 STM32 SPI通信
指定地址读与指定地址写不同的地方就在于,我们要读取数据,所以我们在指定完三字节的地址之后,要开始接收数据,即在上图的第四个字节MISO就解除了挂机的状态,然后主机使用0xFF换取了从机的数据,然后我们继续交换,那么从机内部的地址指针自动加1,从机会继续将下一个地址位置的数据发送给主机,这样一次进行就可以实现指定地址接收多个字节的目的了。Third:主机的SS线都是输出,从机的SS线都是输入,SS线是低电平有效的,同一时间主机只能置一个SS为低电平,只能选中一个从机。
2023-09-23 17:40:23 258 1
原创 51定时器PWM
分辨率:也就是如果你的占空比是如果是以1%, 2%, 3%的大小来变化的,那么分辨率就是1%,如果是0.1%, 0.2%, 0.3%来变化占空比,那么分辨率就是0.1%,分辨率越高那么占空比的变化也就会越细致。占空比:因为PWM的一个周期是一次高电平和一次低电平,高电平时间/PWM的周期 = 占空比,通过控制占空比我们就可以调整电机的速度或者LED的亮度。因为我们使用的是定时器,那么我们通过PWM的周期就可以控制频率了,我们设置进入中断需要的时间,每次进中断都会对。对于代码而言,我该怎么控制我的频率呢?
2023-09-17 17:46:29 119 1
原创 STM32串口通信(理论部分)B站江科大
在图中我们可以看到时钟的上升沿是在每一位数据的中间的,9位长的数据帧的上面那一个时序是我们需要了解的,下面的时序我们暂时不需要了解,8位长的也是如此。该结构的框图就是上图的简化,首先总线有一个时钟,经过波特率发生器就可以将是时钟信号进行分频得到波特率,然后到达发送控制器和接受控制器,,这两个控制器分别控制发送的相关寄存器,和接收的相关寄存器,这两个寄存器有分别连接了两个脚,一个是TX另一个是RX。,就是用来控制发送端要不要发送的,同时我也可以作为发送接收别人的发送与否的请求,这里的是低电平表示请求发送。
2023-09-11 23:07:32 167
原创 51单片机AD/DA实用版(B站江科大)
DIN、DOUT、DCLK这三根线是所有的从机共用的三根线,我们可以根据CS片选进行选择我们要交流的从机,然后前面的这三条线也就可以控制我们选择的从机了。转换速度:AD/DA的最大的采样/建立频率,通常使用转换频率和转换时间来表示,对于采样/输出高速信号,应注意AD/DA的转换速度。读的话我们是连续读两个字节(12位),前面一个字节的8位,和后面一个字节的前4位,后面一个字节剩下位的就可以直接变为0.分辨率:位数越高精细程度也就越高,比如是n位的数据,那么我会将我们的指定的高电平平分为2^n份。
2023-09-11 17:19:12 407
原创 51单片机:红外遥控(B站江科大)
状态2:我们根据定时计数器的数值,判断是0 还是 1,然后再对应的给上面**数据发送格式**的四个字节,来进行每一位的赋值,在赋值的时候我们需要一个指针,通过这个指针指到对应的某一位进行置0 或 置1的操作,指针是通过移位来完成的(注意:移位的距离不够超过16位,否则可能会出错),这里使用数组存每一个字节。在解调模块连接了我们的外部中断,原因就是我们不能够使用 if 等语句来判断是什么电平,这样的话就太慢了,所以我们需要中断,这里不使用定时器中断是因为这个中断是突发的不是有规律的。红外遥控器的电路有两种。
2023-09-09 18:42:46 344 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人