
STM32学习
文章平均质量分 87
入门嵌入式
白糖熊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【江科大】STM32:软件/硬件读写MPU6050(代码)
有SCL和SDA本来需要外挂上拉电阻,但是由于STM32内部内置了,就不需要了。由于模块内部内置了下拉电阻,所以引脚悬空就相当于是接地。SCL低电平:写入数据SCL高电平:保证数据稳定高位先行,所以变换数据的时候先放最高位起始位后,SCL和SDA均进入低电平发送一个字节,即SCL低电平,写入第一个字节写完一位,释放SCL,将SDA拉下来,原创 2024-01-24 10:17:25 · 4776 阅读 · 1 评论 -
【江科大】STM32:MPU6050介绍
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度(加速度计具有静态稳定),不具有动态稳定性。)如一个车在斜坡上,椅子和靠背都受到了力的作用,但是车是水平向前的,因此当物体运动,使用加速度计来测量,测出来的角度就会不准确。3 轴陀螺仪传感器具有动态稳定性,不具有静态稳定性。原创 2024-01-24 09:54:51 · 4125 阅读 · 0 评论 -
【江科大】STM32:I2C通信外设(硬件)
在将2C通信外设之前,我们先捋一捋,串口的相关特点来和2C进行一个对北比。首先:1,大部分单片机,设计的PCB板均带有串口通信的引脚(也就是通信基本都借助硬件收发器来实现)2.对于串口的异步时序,软件实现起来就异常麻烦。硬件实现非常简单。所以串口的实现基本就全倒向了硬件。右边的图片中的串口时序就可以看出来软件模拟的复杂性其次:2C是同步时序,软件实现简单灵活,(在前面讲过的2C时序,明显就简单的多)硬件实现,相比之下,去并不能让人完全省心。原创 2024-01-24 09:33:44 · 999 阅读 · 0 评论 -
【江科大】STM32:I2C时序/数据帧
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次即可发送一个字节.SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答原创 2024-01-24 09:06:03 · 1850 阅读 · 0 评论 -
【江科大】STM32:I2C通信(上)
如果要通过寄存器控制硬件电路,至少需要定义两个字节数据1.一个字节是我们要读写哪个寄存器,也就是指定寄存器地址。2.这个地址下,存储器存的内容(写入内容就是控制电路,读取内容就是获取电路的状态)单片机读取自己的寄存器,可以通过内部的数据总线来完成,直接用指针操作模块中的寄存器在单片机的外面,因此就需要通信协议,连接尽可能少的线,实现单片机读写外部模块寄存器的功能。原创 2024-01-23 10:44:41 · 773 阅读 · 0 评论 -
【江科大】STM32:串口HEX/文本数据接收和发送(代码部分)(下)
串口下载的过程:Bootloader接收usart1的数据,刷新程序存储器。这时主程序处于瘫痪状态,主程序更新完成再启动主程序,执行新程序。而Bootloader在更新系统存储器时需要切换到boot1,而更新完成运行更新后的主闪存存储器需要切换到Boot0。而由于sysclk的第四个上升沿,Boot引脚会被锁定,因此每次都需要复位。原理是实现程序的自我更新,即利用bootloader(程序代码),更新程序存储器。程序加载到bootloader完成后,再将跳线帽换到boot0,按复位键。原创 2024-01-23 10:29:25 · 3305 阅读 · 0 评论 -
【江科大】STM32:USART串口(理论部分)上
通用同步/异步收发器。USART:是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。自带波特率发生器,最高达4.5 bits/s(其实就是分频器,得到想要想要波特率)(9600)可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2):决定帧的间隔。可选校验位(无校验/奇校验/偶校验支持同步模式、硬件流控制:控制当V发送>V接收,导致数据覆盖。原创 2024-01-23 09:55:55 · 1531 阅读 · 0 评论 -
【江科大】STM32:DMA转运
直接存储器存取(协助CPU完成数据转运,可以直接访问32位内部存储器,内存SRAM,程序存储器Flash,寄存器等)DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道: DMA1(7个通道(C8T6只有这个)), DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发(如存储器-》存储器如SRAM-》Flash)硬件触发:外设-》存储器如ADC的数据,只有转换完成,触发DMA,DMA才完成一次转运。原创 2024-01-23 09:33:33 · 1016 阅读 · 0 评论 -
【江科大】STM32:ADC转换(单通道+多通道)
相比较晶振只可以产生稳定的频率,实时时钟是以输入频率做基础,再依此作除频、倍频、PLL等等,产生出处理器与主板各部分所需的频率。由于频繁进中断会影响主程序的进行,且中断有优先级,这也会影响ADC的转换,因此必须提供硬件支持,比如TIM1_CH1定时1ms由触发信号,就产生更新事件,连接到TIM3的TRGO口,,因此TIM3的更新事件就可以通过硬件自动触发ADC转换了。如,硬件出发,ADC需要过一个固定时间转换一次,如1ms,那么定时器每隔1ms申请一次中断来触发转发转换。转换完成,触发EOC。原创 2024-01-23 09:22:46 · 4743 阅读 · 1 评论 -
【江科大】STM32:旋转编码器接口
通过调整极性就可以改回来,调整引脚,给某一个极性反相都可以恢复到正确状态。此图展示了,向上计数,和向下计数,以及抗噪声的原理。TI1 反相后,需要对TI1取反,才是正确的。一般情况适用最下面的计数方式,精度最高。原创 2024-01-23 08:58:54 · 1689 阅读 · 0 评论 -
【江科大】STM32:(超级详细)定时器输出比较
必须是在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域频率 = 1 / TS占空比 = TON / TS分辨率 = 占空比变化步距(PWM的频率在几千到几十KHZ就已经很快了)(分辨率 表示占空比的精细程度)TON:高电平的时间TS:一个周期的时间(频率 = 1 / TS 可以看出周期越大,那么频率就越小,就越平稳。占空比 = TON / TS)TON/TS:高电平相对整个周期的比例。原创 2024-01-22 17:01:32 · 8579 阅读 · 0 评论 -
【江科大】STM32:TIM输入捕获(理论部分)
输入捕获模式下,当通道输入引脚出现指定电平跳变(上升沿或者下降沿)时,(控制)当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平,反之亦然,如果信号出现高频抖动,导致连续 采样N个值不全都一样。:两个上升沿内,以标准频率fc计次,得到N ,则频率 f = 1/t (通过计时器记录一个上升加一个下降沿的时间)(:在闸门时间T内,对上升沿计次,得到N,则频率 (分频器是对信号进行分频。原创 2024-01-22 16:11:16 · 1665 阅读 · 0 评论 -
【江科大】STM32:定时器中断
缓冲寄存器才是真正起作用的寄存器,比如再某个时刻把预分频器寄存器由0该1,如果此时立刻改变分频系数,就会导致前半段和后半段分频不一致,缓存计数器的作用就是,改变后不会立刻生效,等待本次计数结束,产生更新时间,预分频的值才会传进去,下一轮计数才生效。即便APB1选择的是,但是有分支判断它的分频系数,最终输出仍然是72MHZ,因此可以的出,不论是基本,通用还是高级定时器,内部基准时钟都是72MHZ。检测外部时钟的运行状态,如果外部出问题了,那就该时钟为内部,保证程序运行。程序的时钟慢了10倍。原创 2024-01-22 13:45:26 · 1555 阅读 · 1 评论 -
【江科大】STM32:外部中断(Extern Interrupt)
旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向类型:机械触点式/霍尔传感器式/光栅式。原创 2024-01-22 13:40:55 · 1516 阅读 · 1 评论 -
【江科大】STM32:中断系统(理论)
对于STM32来说,想要获取的信号是外部驱动的换开的突发信号,比如旋转编码器的输出信号,我可能很久不拧他,这时也不要STM32做什么,但是我一拧就会有很多脉冲波形需要STM32来接收,这个信号是突发的,外部驱动,stm32只能被动接受,且很快,只要晚一点读取就会错过很多波形。当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。比如红外遥控接收头的输出,接收到遥控输出,就会输出一段波形,转瞬即逝,所以需要外部中断读取,原创 2024-01-22 11:57:29 · 3292 阅读 · 2 评论 -
【STM32】LED,蜂鸣器,传感器,OLED
ARM既指ARM公司,也指ARM处理器内核ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片施密特触发器的作用:对输入电压进行整形,原理:当电压大于某个阈值,输出就会瞬间升为高电平,小于就是瞬间降为低电平因为这个引脚时外界输入的,虽然是数字信号,但也可能产生各种失真。一个夹杂了波动的高低变化的电平信号,如果没有施密特触发器很可能因为干扰而导致误判。原创 2022-12-10 15:46:42 · 1045 阅读 · 0 评论