自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 引用头文件的相关问题

我们有时候引用头文件的时候,避免不了触发重复引用头文件的问题,重复引用头文件系统就会报错,避免这种发生,我们一般采取以下方法。这两种的区别是,第一种是引用自己定义的头文件,过程是系统首先去当前文件找,如果找不到,就去库文件找。第二种是引用系统的头文件,过程是系统直接去库文件里面找,如果找不到,就报错。推荐用法:自己定义的头文件用"xxx.h",系统的用<xxx.h>

2023-08-06 18:50:08 1431 1

原创 IIC时序图

主机读数据(接收)的时候,接收完一个字节,也就是8位接收完后,在SCL低电平时,拉高拉低SDA电平来作为应答位,拉低为0,应答,拉高为1,非应答,这里主机发应答位就不需要从机交出控制权哈,和上面不一样,直接就能控制SDA,可以说是,主机对SDA有绝对控制权。和上面过程类似,在主机控制的SCL低电平的时候,从机放数据在SDA,SCL高电平的时候,主机就读取从机控制的SDA的高低电平数据,总结:SCL低电平,从机控制SDA高低电平放数据,SCL高电平,主机读数据,循环8次,就接收一个字节。

2023-07-14 18:35:22 1657 2

原创 USART串口数据包

流程为:开始s=0.收到一个数据,进中断,根据s=0,进入第一个状态的程序,判断数据是不是包头FF,如果是,代表收到包头,之后置s=1,退出中断,结束,下次再进入中断,根据s=1,就可以进行接收数据的程序了,收到数据,就存入数组中,再用变量,记录收了多少个数据,如果没收够4个数据,就一直接收状态,收够了,s就等于2,结束中断,下次进入中断,就可以进入下一个状态了,最后一个状态就是等待包尾,是不是FE,如果是,s就置0,结束中断,下次进入最初状态,这就是状态机的思路。每个数据包长度可变,前面包头,后面包尾。

2023-07-10 00:20:36 597 2

原创 STM32串口通信

假设一个设备A向另一个设备B发送数据,A设备发送的太快了,B设备如果接收不过来的情况下,B设备就只能放弃新数据或者覆盖原数据,对于这种情况,解决办法可以是------------------------------>设备B向设备A接一根信号线,设备B如果准备好了接收数据,这根线就置高电平,设备A就传数据,如果设备B没准备好,这根线就置低电平,A就等待,总的来说,设备A按照这根线反馈的信号来选择性地在TX引脚输出数据,可以有效防止设备B因处理慢而导致数据丢失的问题)

2023-07-07 00:48:15 645 1

原创 STM32 DMA直接存储器存取

并不是调用某个函数一次,触发一次,这个软件触发的执行逻辑是,以最快的速度,连续不断地触发DMA,争取早日把传输计数器清零,完成这一轮的转换,这个软件触发和之前的外部中断和ADC的软件触发不太一样,可以把这里的软件触发理解为连续触发,但是这个软件触发(连续触发)不能和自动重装器的循环模式同时使用,不然就停不下来了。触发,就是决定了DMA需要再什么时机进行转运的,触发源有,硬件触发,和软件触发,具体选择哪个,由M2M的参数决定,写1就是软件触发,0就是硬件触发。起始地址,数据宽度,地址自增。

2023-06-29 23:55:06 219 1

原创 STM32 ADC模数转换器

但是我用的STM32F103C8T6的型号只有10个外部型号源,不同的型号的通道个数需要查看手册,其中刚刚说的16个外部型号源,是指不需要任何额外的电路,直接测量的引脚上的模拟电压,2个内部信号源,是内部温度传感器和内部参考电压,内部温度传感器可以测量CPU的温度,内部参考电压是一个1.2V的基准电压,它不随外部供电变化而变化,,如果芯片不是标准的3.3V,测量的外部引脚就有可能不准确,那么就可以用这个基准电压进行校准,就能得到正确的电压值。

2023-06-26 23:44:14 1091 1

原创 TIM编码器接口

输入捕获的前两个通道,通过GPIO口接入编码器的A,B相,通过滤波器和边沿检测极性选择产生TI1FP1和TI2FP2,桐通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向,当然ARR也有效,一般设置为65535,最大量程,利用补码的特性更容易得到负数。正交编码器一般可以测量位置,或者带有方向的速度值,一般有两个信号输出引脚,一个是A相,另一个是B向,通过接收AB相的相位差来判断方向,每来一个上升沿信号,CNT记次,达到方向计数的效果。

2023-06-23 19:17:52 416 1

原创 STM32定时器(输入捕获)

首先从通有四个通道,对应不同的引脚,那ch1通道来举例,引脚进来的信号,经过滤波器,滤去毛刺信号,选择边沿检测,也就是上升沿或者下降沿,当然这个滤波器和边沿检测器有两块功能相同的模块,主要是因为,通道1和通道2可以交叉输入,通道1可以输出到通道2,通道2也可以输出到通道一,这样同一个信号就能同时测频率和占空比,然后经过分频器,再到捕获电路,每来一个触发信号,CNT就向CCR转运一次,这样就能测频率了,如果要测占空比的话,那么用一个引脚,选择两个通道,一个通道测上升沿,一个通道测下降沿,就能算占空比了。

2023-06-18 17:25:50 3397 2

原创 STM32定时器(输出比较)

这样输出比较初始化就配置好了,如果还想要CCR不断变化的话,可以用这个函数。那么这个输出模式控制器有哪些模式可以选择呢。对比的要求可以通过写程序自己设置。对比的要求可以自己设置,

2023-06-16 00:05:23 2510 3

原创 STM32定时器(TIM)

由上图能看出,定时器功能由基本到高级是包含关系,我们先看编号,TIM后面跟了数字,是因为同一个芯片拥有很多个定时器,那么TIM后面跟的数字就是用来区分高级,通用,基本定时器的,对于总线,通用和高级定时器的总线都是APB1,高级定时器的总线当然要高级一些,用的是APB2的总线,这个在写定时器的时候,开启时钟那部分注意一下,按照需要的定时器,打开对应的总线。通用定时器拥有基本定时器所有功能,另外还可以内外时钟源选择,输入捕获,输出比较,编码器接口,主从触发模式,这一章只讲内外时钟源选择。

2023-06-14 00:30:05 1036

原创 STM32外部中断详解

NVIC又叫(嵌套中断向量控制器),这个又称为CPU的小助手,也就是配置中断优先级的,上面提到NVIC有16个中断接口,那么这么多中断,CPU到底先执行那个呢,所以NVIC要给16个中断分配优先级,优先级高的先执行中断,其中优先级又分为响应优先级和抢占优先级,当然中断也可以嵌套中断(就是套娃),也就是主函数遇到中断源,跳到中断函数执行中断程序的时候,又触发中断,跳到另一个中断函数执行中断,这个中断执行完,再回到上一个没执行完的中断,这种嵌套中断也是设置的抢占“优先级”产生的结果,对于优先级后面细说。

2023-06-12 00:48:05 2693 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除