- 博客(28)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【标准库】SPI通信协议
一般用来读取外挂设备的ID测试通信有没有问题I2C通信用的是开漏输出加上拉电阻的模式,所以他的高电平驱动能力不强,通信线在低电平变到高电平的时候,所需的时间比较长限制了最大通信速度,标准模式最高一般来说是100khz,快速模式一般来说是400khz,虽然经过改良电路之后达到了高速模式3.4MHz,但是普及度不高。【在STM32单片机中,I2C通信采用开漏输出加上拉电阻的模式,这种模式会导致高电平驱动能力不强。
2023-06-16 21:02:26
587
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 I2C通信
第一个是MPU6050陀螺仪加速度传感器,实现的目标,软件或者硬件实现I2C读取MPU6050其实逻辑就是通过软件I2C通信,对MPU6050芯片内部的寄存器进行读写,写入到配置寄存器中,就可以对外挂的这个陀螺仪加速度传感器进行配置,读出数据寄存器呢,就会获得外挂模块的数据,最后把读出的数据显示在OLED上。分别是设备的ID号,一般用来测试设备的读取功能是不是正常。左边三个二是加速度传感器得出的数据,分别是X,Y,Z轴的加速度,右边三个,是陀螺仪传感器的数据,分别是X,Y,Z轴的角速度
2023-05-15 20:01:09
2050
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 USART通信
通信的目的那一点的解析:STM32虽然功能丰富,但是有一些功能是没有的,需要外挂芯片功能实现,比如蓝牙无线遥控、陀螺仪加速度计测量姿态功能,这时候就需要外接通信线连接外挂芯片,与外挂芯片交换数据,实现功能,所以又说扩展了硬件系统。TX与RX有的地方也叫TXD以及RXD,分别是数据发送脚以及数据接受脚。SCL(sclock)是时钟,SDA(series data)是数据。SCLK是时钟,MOSI是主机输出引脚, MISO主机输入数据脚,CS(chip select)片选,用于指定通信对象
2023-05-09 18:17:26
1988
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】DMA直接存储器存储
DMA(Direct Memory Access)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源(其实外设也是存储器,这么说只是特定了单片机能够转运外设存储器的功能罢了)12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)每个通道都支持软件触发(存储器到存储器之间,一股脑的把数据传输过去)和特定的硬件触发(外设到存储器之间,比如AD转换,每次AD转换之后,触发一次DMA转换数据,触发一次转运一次。之所以说特定的硬
2023-05-06 16:20:46
524
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 ADC模数转换器
12位逐次逼近型ADC,1us转换时间(12位与1微秒,分别表示ADC的两个重要参数,一个是分辨率:多少位就表示0~2的多少次方减1这个范围,也就是量化结果的范围,位数越高,量化越精细,分辨率就越高,第二个是时间,就是转换频率,AD转换需要一定时间,表示从AD转换开始一次道结束,需要1微秒的时间,对应频率就是1MHz,这个是STM32的最快转换频率了,若待转换信号频率比这个数更高,就要考虑自己的转换频率够不够咯。要想再一次进行转换,就要再次进行触发,如果想换通道,就在转换之前把通道换成需要的。
2023-05-05 01:02:33
794
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 输出比较
这个公式这样理解,每一次计数的时间乘以99,就是从0计数道99的时间,取倒数就是PWM的频率,每一次计数的时间就是输入频率,输入频率除以分频等于实际输入的频率,取倒数乘以ARR就等于每次更新的时间,再倒数就是PWM频率。时基单元的左边是时钟控制,CNT不断自增,与CCR作比较,然后根据所选模式输出相应电平,如右上角所示,黄色ARR,红色是CCR,蓝色是CNT,根据设定的模式确定在每个大小关系的是偶输出什么电平。PWM的输出波形相当于一个模拟量,当上部分的占空比大的时候,模拟量也就偏向于那一侧,如上图所示。
2023-04-29 17:09:56
1152
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 菜鸟入门教程之定时器中断
16位计数器(每来一个数,计数器加1)、预分频器(对计数器进行分频,让计数更加灵活)、自动重装寄存器(技术的目标值)的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时(都是16位,2的16次方是65536,如果预分频设置最大,自动重装也最大,那么定时器最大时间就是72MHz/65536/65536,得到的是中断频率) ,如果局的不够大,还可以采取级联的办法,一个定时器的输出作为另一个定时器的输入,要乘上两个65536。//单独配置ETR引脚的预分频器,极性,滤波器这些参数的。...
2022-08-08 09:41:27
3450
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【STM32】标准库 菜鸟入门 外部中断
stm32的中断非常多,若果全部连接到cpu上的话会比较困难,中断很多容易产生拥堵,所以设置NVIC(CPU小助手),/n的意思是有n条线,经过NVIC的优先级筛选,一个又一个的输送到CPU中进行处理。作用在没有中断的时候,系统要不断检测是否有中断产生,防止外部中断被忽略还是串口数据被覆盖,(串口通信接收到数据,定时器来说是定时时间到了,外部中断来说就是高低电平变化),有了中断可以执行其他事情,带到满族中断条件才进行。if它......,之后记得清楚中断标志位,不然会一直进行中断申请,卡死在中断函数中。..
2022-07-27 09:17:30
1611
原创 【数据结构】图
线性结构是一对一,树是一对多,图示多对多图不允许空,至少一个顶点。无向图:没有方向有向图:有方向,可以是双向单向混合也行如果除此之外还有权重,就是网络。
2023-08-02 18:26:17
129
原创 【数据结构】哈夫曼树
权值可以看做出现的频率。利用堆实现。思路就是:把所给的权值建立一个最小堆,然后创建一个新的结点,再从最小堆删除并获得最小的两个节点分别作为新结点的两个儿子结点,然后给新节点计算新的权重,再把新节点插入最小堆中,之后重新循环比较,循环结束之后,返回指向最小堆的指针。度为1就是只有一个儿子的结点。通过计算:总的节点等于n0+n1+n2,n1=0,总结点数等于2n0-1,然后n0=n。
2023-08-02 10:57:30
161
原创 【数据结构】堆
由于堆的这个特性,常用来实现优先队列,堆的存取是随意的,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。堆的存储不同于链表的存储,堆的存储是用一个一维数组来存储的。如果要插入的值比所有父节点都大,会一直比较,直到哨兵处,与哨兵比较,因为哨兵的值比元素中所有元素的值都大,所以这个循环就会止步在下标等于1的地方,也可以通过设定i>1才进行比较也可以,不过哨兵的话复杂度会简单一点。
2023-08-02 03:06:42
123
原创 【数据结构】队列
队列为空的时候,Front与Rear都指向-1,然后队列加一的时候,Rear加一,队列减1的时候,Front加1.就是如此,只能在队尾加,在队头减,先来先服务。
2023-08-02 00:38:45
73
原创 【数据结构】栈
栈是限定在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称后进先出的线性表,简称LIFO结构,
2023-08-01 23:05:24
74
原创 【数据结构】二叉树
每个子树也有他自己的根,比如B节点,C节点等,子树应该是互不相交的有限集,所以不能够相交。数组表示----顺序存储(完全二叉树比较方便,不会造成空间浪费)给每一个节点按照从上到下,从左到右的顺序编号,按照数组的索引排列好。【】是取整的意思,由于数组是顺序存储的,很难直接看出某节点的父节点,但是可以找到规律。如下:一般二叉树的话,需要 把空缺的节点补全成为一个完全二叉树,才能够用顺序存储的办法来表示二叉树,但是会造成大量的空间浪费。
2023-07-27 01:29:47
172
原创 【标准库】W25Q64与SPI硬件通信
缓存器其实就是DR寄存器,发送缓存器就是TDR,接收缓存就是RDR,两者共用一个地址,在移位寄存器空的时候,发送缓存器的数据就可以移动到移位寄存器中,一位一位的移动数据,这时候TXE置1,发送的同时接收数据,发送完毕接收也完毕,最后数据整体移动到接收缓存器,TXE置0,RXNE置1。在软件SPI通信中,SCK信号的变化有一定的延迟,这是因为SPI软件通信是通过CPU的软件实现的,CPU需要花费一定的时间来执行SPI通信的相关指令,从而导致时钟信号的变化有一定的延迟。在SPI使用手册中有具体的。
2023-06-18 18:44:42
534
原创 【标准库】w25q64与SPI软件通信
xx代表数值。24位地址最大的地址就是2的24次方,也就是 16,777,216,它除以1024,结果为16,384,再除以1024就是16MB,也就是说24位地址最大只能表示到16MB,所以最后一个型号有两种地址存储模式,一种是3字节的,一种是四字节的,在16MB之前是3字节,16之后是4字节。
2023-06-17 20:23:24
545
1
原创 【STM32】标准库 硬件I2C读取MPU6050
/占空比,只有快速模式下才有用,也就是100khz以上,小于则是低电平比高电平1比1,16:9就是低电平比高电平16:9,2就是2:1,按道理来说,同步时序无论高低电平持续多久都没问题,但是为了快速传输,所以设计了占空比,标准速度是1:1,SCL以及SDA下降沿是特别快的,但是上升沿确是略带缓慢的,如下图是100khz,原因是强下拉以及弱上拉,强下拉就会非常果决,弱上就会很慢,渐变的过程。要快速写入,就需要给更多的时间适应SDA电平变化,不然快速发送的时候数据变化来不及,高电平读取也没有啥用。
2023-06-06 20:08:05
1502
原创 【STM32】标准库 串口下载以及STLINK
有一个缓招,就是勾选编程后执行,取消勾选编程到flash时写选项字节,这样在开始编程之后就会自动执行程序,但是在执行之后按复位键,这里又没用了,是一次性的,这个就相当于把数据刷新之后,虽然跳线帽还是处于BootLoader中,也就是SRAM存储器中,但是相当于手动执行了一条跳转指令,执行了FLASH程序,但是复位一下,就相当于重新刷新了BOOT配置,程序没反应了。从左到右,打开文件,可选.bin格式的,就是用FlyMcu导出的那种文件,第二个就是存储,第三就是连接,第四就是断开连接,第五就是擦除。
2023-05-12 03:48:09
1832
原创 【STM32】标准库 TIM编码器接口
这里的ARR有用,利用补码的性质可以得到负数,比如一般把ARR设置成65535,CNT增加的时候,自然没问题,反转的时候,0就到65535了,这时候我们把这个数设置成有符号的数值,这个65535就对应-1,65534对应-2,以此类推!但是在编码器模式配置的时候还会出现,所以这里就不配置了,重复啦。第二步,配置GPIO,把PA6以及PA7配置成输入模式,配置GPIO的时候,选择输入模式要根据外部的装置的默认输出状态来选择,默认高电平就上拉,低电平就下拉,不确定就浮空,但是浮空容易受干扰。
2023-05-01 10:37:34
1318
原创 【STM32】标准库 TIM输入捕获
计算两个上升沿的时间,就是先读取CCR的值,也就是测周法的N,然后又知道fc(也就是时基单元分频频率后的),ARR最大是65535,CNT也是65535,注意触发源的选择,只有TI1FP1以及2,没有3.4,所以对于通道3.4,就只能手动在中断之中进行清零操作了,不能运用硬件自动清零,没办法,手动中断清零只能占用CPU软件资源。CNT的值是用前面部分内部已知时钟的频率驱动的,所以在每次输入信号触发捕获CNT的值存入CCR中就可以知道两个上升沿之剑的时间,这个时间间隔就是周期,倒数就是测周法的频率了。
2023-04-30 20:41:56
2260
原创 【STM32】标准库 菜鸟入门教程之DMA
DMA是一个数据转运小助手,协助CPU完成数据转运。DMA(Direct Memory Access)直接存储器存取DMA可以提供外设(外设数据寄存器)和存储器(运行内存存储器SRAM与程序存储器Flash,是存储变量数组和程序代码的地方)或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。...
2022-08-08 09:40:26
1262
2
原创 【STM32】标准库 菜鸟入门教程之USART
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 ,对于有一些功能,STM32芯片内部无法实现,所以就需要外挂芯片完成,但是外挂芯片的数据都在外挂芯片上,需要连接一根或者多根铜芯线完成数据传送,有了这个功能,就能连接多个设备,达到扩展硬件系统的功能。通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。名称引脚双工时钟电平设备USARTTX、RX(或者叫TXD,RXD)全双工(两根数据线能够同时互不干扰进行数据的发送接收)异步单端点对点I2CSCL、SDA。...
2022-08-08 09:39:32
1742
原创 【STM32】标准库 菜鸟入门 GPIO输入
inta=ABC;相当于a=12345;把ABC替换12345,其后不需要分号,宏定义把名字简化了,任何都能换运用宏定义把一个数映射到字符串上,便于理解防止出错,便于快速修改,可以修改一切名字。比如GPIO口的第十二个引脚,((uint16_t)0x1000)可以用GPIO_Pin_12代替。②typedef只能给变量换名字uint8_ta;等效于usignedchara;命名之后两者都可以使用,只不过多了多了一个新名字罢了。意思。...
2022-07-25 13:26:25
3169
原创 【STM32】标准库 菜鸟入门 OLED显示解析
点灯法,对照法,注释法,串口调试(把调试信息发送到电脑),显示屏调试(显示屏连接到单片机,打印到显示屏上)等。OLED(有机发光二极管)宽视角(各个视角都能看清楚),功耗低(每个像素都是一个自发光的二极管,LCD则需要背光),相应速度快(刷新率更高)通信协议I2C(一般四针脚)/SPI(一般七针脚)接口除了电源跟地,接任意GPIO口。...
2022-07-25 13:19:53
4418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人