- 博客(66)
- 收藏
- 关注
原创 Unix时间戳
BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0—3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲存储RTC时钟校准寄存器用户数据存储容量:20字节(中容量和小容量)/ 84字节(大容量和互联型)BKP基本结构。
2023-08-27 18:02:14
3673
原创 STM32入门——SPI通讯
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景存储介质:Nor Flash(闪存)时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容量(24位地址):硬件电路W25Q64框图Flash操作注意事项写入操作前,必须先进行写使能每个数据位只能由1改写为0,不能由0改写为1写入数据前必须先擦除,擦除后,所有数据位变为1。
2023-08-21 16:53:10
1677
原创 STM32入门——IIC通讯
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度MPU6050参数16位ADC采集传感器的模拟信号,量化范围:-32768~32767加速度计满量程选择:±2、±4、±8、±16(g)
2023-08-16 17:46:16
1033
原创 STM32入门——USART
Receiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里自带波特率发生器,最高达4.5Mbits/s可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)可选校验位(无校验/奇校验/偶校验)支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN。
2023-08-14 16:05:40
337
原创 STM32入门——DMA数据搬运工
M2M:0位硬件触发(外设到存储器或者存储器到外设),1为软件触发(存储器到存储器)自动重装器:转运完成后恢复到初值,决定单次转换还是循环转换。传输计数器:触发一次,转运一次,计数器减1.*写传输计数器时,要先关闭DAM使能。
2023-08-11 23:48:11
269
原创 STM32入门——定时器
TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时(这里计算就是72MHz主频通过预分频继续分频(假设分频为最大65536),分频后的频率给到计数器,我们只需要知道计数器的范围为为2^16,计数加1的时间为65536/72MHz,那么最大定时就是65536/72MHz * 65536 = 59.65s)
2023-08-07 17:31:45
3226
2
原创 STM32入门——外部中断
EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒。
2023-08-02 17:58:34
2730
2
原创 STM32入门——GPIO输入输出
上拉:默认为高电平的输入下拉:默认为低电平的输入施密特触发器:稳定输出信号,高于上限输出高电平,低于下限输出低电平模拟输入:这要连接到ADC上面,因为ADC(模拟转数字)需要接收模拟量对应下面结构体浮空/上拉/下拉输入模拟输入开漏/推挽输出复用开漏/推挽输出。
2023-08-02 12:51:46
872
原创 STM32—DTH11
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通空调;数据是0或者1是看高电平的时长,持续高电平26—28us为1,70us为0,所以在40微妙的时候读dht电平来判断。只有一根数据线DATA,单片机发送序列指令给DHT11模块,模块一次完整的数据传输为40bit,高位先出。8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。注意:PB7既作为输入,也作为输出,则不能直接在CubeMX里配置,需要自己写代码。
2023-03-15 15:43:21
1006
1
原创 STM32—LCD1602
LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02 即 32 字符(16列两行)第 1 脚: VSS 为电源地第 2 脚: VDD 接 5V 正电源第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度 过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
2023-03-11 16:13:32
5034
2
原创 STM32—IIC
IIC全称Inter-Integrated Circuit (集成电路总线)是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式。
2023-03-10 21:33:17
695
原创 C语言杂记(字符串)
结构体数组定义结构体数组及遍历int num;char sex;i < len;结构体:选民系统//初始化选民 for(i = 0;i < len;i ++) {printf("输入选民%d:\n" , i + 1);} //唱票环节 for(i = 0;i < 5;i ++) {//假如5个人投票 mark = 0;printf("请输入你投给谁?");for(j = 0;j < len;
2023-03-07 16:59:56
298
原创 STM32—DMA
DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来说就无法使用。
2023-02-26 15:05:06
1022
原创 STM32—独立看门狗(IWDG)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会收到来自外界电磁场的干扰,造成程序跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发生不可预料的后果。所以出于对单片机运行状态进行实时检测的考虑,便产生了一种专门用于监测单片机程序状态的模块或者芯片,俗称看门狗。独立看门狗工作在主程序之外,能够完全独立工作,它的时钟是专用的低速时钟(LSI),由VDD电压供电,在停止模式和待机模式下仍能工作。
2023-02-24 21:20:58
686
原创 STM32—串口
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢是设备间接线通信的一种方式数据一位一位地顺序传送双向通信,全双工传送速度相对较慢UART是异步串行接口,通信双方使用时钟不同,因为双方硬件配置不同,但是需要约定通信 速度,叫做波特率。
2023-01-30 21:27:29
2716
原创 STM32—感应开盖垃圾桶
注意:HAL_Delay函数由于优先级较低,无法打断中断,需要用下面函数提高优先级。需求:距离少于10cm,开盖(舵机转动90度),led亮,反之关闭。PB9—TIM4_CH4PWM输出。定时器TIM4:用作输出PWM。定时器TIM2,:用作计时。配置PA0为中断触发。勾选使能,改变优先级。
2023-01-28 16:48:02
357
原创 STM32—超声波测距
超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离。型号:HC-SR04时序图怎么让它发送波 Trig触发信号,给Trig端口至少10us的高电平怎么知道它开始发了 Echo信号,由低电平跳转到高电平,表示开始发送波怎么知道接收了返回波Echo信号,由高电平跳转回低电平,表示波回来了怎么算时间Echo引脚维持高电平的时间!波发出去的那一下,开始启动定时器 波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间。
2023-01-28 14:29:00
8995
1
原创 STM32—sg90编程
思路:做出一个周期为20ms的脉冲,通过设置CCRx的值,控制一个周期中高电平的占空比来控制对应的角度。2.0ms-----------135度;2.5ms-----------180度;2.5ms-----------180度;0.5ms-------------0度;1.0ms------------45度;1.5ms------------90度;1.0ms------------45度;1.5ms------------90度;0.5ms-------------0度;
2023-01-27 17:01:51
770
原创 STM32—PWM
脉冲宽度调制(PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。即对脉冲宽度的控制。STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出!STM32F03C8T6 PWM资源:高级定时器(TIM1):7路通用定时器(TIM2—TIM4):各四路。
2023-01-27 16:06:03
1660
原创 STM32—定时器
STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)TimeClockFren:定时器的输入时钟频率(单位MHZ),也就是当前使用的TIM所用的CLOK的时钟频率。2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)高级定时器:除了具备通用定时器的所有功能外,高级定时器具有捕获/比较通道和互补输出、刹车输入等功能。
2023-01-25 16:12:23
2283
原创 STM32—震动报警装置
433M无线发射接收模块(上升沿触发中断):接收到信号,接收模块对应针脚输出高电平,有D0 D1 D2 D3,对应遥控器的ABCD。原因:程序在初始化时默认把滴答定时器的中断优先级设为最低,其他的中断源很容易打断它导致卡死。震动传感器(接到PA4,下降沿触发中断):震动输出低电平,反之高电平。解决:在main里面使用以下函数把滴答定时器的中断优先级提升为0。继电器(接到PB7):低电平闭合导通,高电平断开。A(打开警报模式):D0(接到PA5)D1(关闭警报模式):(接到PA6)主要重写这个中断回调函数。
2023-01-18 18:04:01
667
原创 STM—EXTI外部中断
STM32通过中断控制器NVIC进行中断的管理,NVIC属于Cortex内核的器件,不可屏蔽中断(NMI)和外部中断都由它来处理,但是SYSTICK不是由NVIC控制的。
2023-01-17 16:48:23
154
原创 STM32—复位和时钟控制(RCC)
可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。电源复位将复位除了备份区域外的所有寄存器。2.Debug改为Serial Write。写工程 Name,更改需要的设置,最后生成。时钟打开,对应的设备才会工作。HSI(高速的内部时钟)HSE(高速的外部时钟)PLL(锁相环倍频时钟)改为下面配置,按下回车。
2023-01-16 17:46:19
1261
转载 数组指针和指针数组
首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;p[n]:根据优先级,先看[],则p是一个数组,再结合。
2023-01-02 14:04:56
81
原创 函数指针的认知
定义:可以理解为函数的地址,要知道函数名就是地址的概念,相当于数组名就是数组首元素地址如何定义函数指针:int (*p)(int a,int b);如何调用:(*p)(a,b);简单示例:演示函数指针的定义,指向地址,调用带返回值的demo。
2023-01-01 17:10:30
67
原创 二维数组的认知
3.a[0] 既是一维数组名,也是该数组的a[0]中第0列元素的地址,即&a[0][0],也就是说例如a[1]的值是&a[1][0]例子:有一个3x4的矩阵,要求编程求出其中的最大值元素,以及其所在的行列号。2.二维数组本质还是数组,不同点就是数组元素还是个数组(子数组)二维数组的定义和遍历。
2022-12-31 17:00:19
76
原创 获取DHT11数据到LCD显示
只有一根数据线DATA,上官一号发送序列指令给DHT11模块,模块一次完整的数据传输为40bit,高位先出。8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通。根据如下时序图,做通信初始化,并检测模块是否存在,功能是否正常。代码使用分文件编程,仿真用protues。获取DHT11数据到LCD显示。
2022-12-24 14:21:40
633
原创 液晶显示LCD1602的简单使用
LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02 即 32 字符(16列两行)
2022-12-21 15:44:44
2557
1
原创 C51学习——串口通信
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢是设备间接线通信的一种方式数据一位一位地顺序传送双向通信,全双工传送速度相对较慢。示例3:pc发送字符点灯。
2022-11-23 21:15:32
3652
原创 C51学习———定时器中断
C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号(信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2。
2022-10-29 22:35:20
10107
1
原创 树莓派学习
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。可选择1.0的版本,有显示镜像安装需多少时间。选择write,进行写入,时间显示5-10分钟,说明你的镜像文件是好的,若显示是四五十分钟说明你的文件是损坏的,需重新下载。wiringPi是树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等。因为树莓派默认的源是国外的,使用apt-get 安装会失败,我们换成国内的源。
2022-10-18 16:10:36
724
原创 Linux——分文件编程与动静态库的生成与使用
使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries):1、静态函数库,是在程序执行前就加入到目标程序中去了;
2022-10-16 14:16:05
103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人