- 博客(11)
- 收藏
- 关注
原创 stm32软件I2C控制MPU6050收发数据
4、MPU6050通过I2C接收数据:首先放置起始信号,后接收从机应答,接着发送从机地址和读写位并接受从机应答,后发送需要读取的寄存器地址并接收应答,后放置起始信号接收应答后,发送从机地址和读位,从机应答后接收一个数据,如果还需要接收数据,则发送应答,若不需要则直接发送非应答,后放置终止信号。模拟i2c接收一个字节:数据的接收也是从高位开始,定义一个变量用来存放接收到的数据,主机先将sda总线释放,拉高scl,判断此时sda上的电平高低来给变量数据依次赋值,最后将数据变量返回。
2024-12-26 00:52:59
495
原创 stm32串口接收固定格式hex数据包
2、串口接收一个hex固定长度数据包:数据的接收同样在中断函数中进行,我们使用状态机的工作原理对进入的数据进行判断,从而得到一组准确的数据。(0)在状态0中,需要判断首先获取到的数据是否为规定的其实数据,若是,则将状态数变换为1,在下次串口得到数据进入中断后就进入状态1。1、串口发送一个hex固定长度数据包:直接使用串口发送数组的函数,在数组中填充需要发送的数据,用过函数直接实现数据包的发送。(1)在状态1中,开始将接收到的数据填充至接收数组,同时判断个数是否达到规定个数,若是达到了则将状态数变换为2。
2024-12-22 16:35:16
439
原创 stm32串口发收一个字节
1、配置gpio:串口收和串口发我们需要配置两个不同的gpio,其中io口的选择需要与我们所选择的串口通道所对应的io口一致,一个配置输入模式一个配置输入模式。3、配置nvic中断控制器:由于信号的接收我们通过检测串口的标志位从而进入中断进行接受的方式,所以需要配置nvic的中断通道,打开串口中断,最后打开串口。2、配置串口:串口需要配置他的波特率、起始位、数据位、校验位和停止位,同时需要配置串口的模式为输入输出模式。4、配置串口发送字节函数:使用串口发送的库函数发送需要发送的字节数据。
2024-12-22 16:20:20
310
原创 stm32ADC扫描模式转化配合DMA硬件触发
4、adc和dma的配合使用:对于adc的单次转换,使用dma的普通模式也就是不循环转移数据,单次数据转移完成后,若还需要转移则需要重新填充转移次数,同时再次施加软件触发adc。5、模拟信号通过adc通道对应的io口进入adc,在进行模数转换后,用过dma将数据从adc的数据存储器转移到定义的数组中,从而实现了多个模拟数据使用adc扫描模式进行同时转化。DMA的硬件触发中有adc、tim等等的触发源,我使用adc的触发源作为dma的硬件触发源进行adc扫描模式的运行。
2024-12-21 00:08:04
447
原创 stm32DMA软件触发转运学习
3、DMA的模式:模式中有循环和非循环两种模式,如果配置非循环模式,我们需要定义一个函数,在每次dma转运完成后关闭cmd再配置dma的转运数目,再开启cmd,然后需要等待dma转运完成后清除标志位,如果使用循环模式,则不需要对转运数目重新填充,也不需要管理标志位。2、配置DMA的结构体:首先需要配置数据源的地址,数据的大小,以及地址是否自增,然后配置数据目的地址,数据的大小,以及目的地址是否自增,需要配置M2M为开启模式,也就是软件触发,也就是dma的触发是默认一直开启的。
2024-12-20 22:05:20
415
原创 stm32ADC模数转换模块学习
2、配置adc模块:开启adc的时钟,同时配置adc模块的分频系数,使进入adc的时钟信号不高于14MHZ,在adc配置中需要选择转换过程为单次转换还是连续转换,扫描转换还是非扫描转换。adc模数转换功能是单片机内部硬件具有的资源,可以把通过外部输入的模拟的0-3.3v的电压信号转换为0-4095之间的数字信号,通过gpio输入后将信号送至adc的通道中去,在得到开启触发信号后经过转换时间就把信号转换为数字信号存放在数据寄存器中,最后读取寄存器的值。4、进行adc的校准。
2024-12-20 01:13:09
473
原创 stm32定时器编码器接口模式
而定时器接收编码器信号需要通过输入捕获,所以需要通过定时器的两个通道进入,所以就配置两个通道对应的io口为输入模式。5、编写一个函数,用来获取计数器的值,同时返回并进行清零,在主函数中通过定时器中断每隔一秒调用一次该函数,并在主循环中用oled显示该cnt,用来表示在一秒内cnt最后的次数,可以由此间接表示出编码器的旋转速度。3、定时器输入捕获ic单元配置:由于信号需要通过输入捕获进入定时器内部,故需要配置两个输入口,也就是定时器的两个通道,这里ic的配置只有通道和滤波,其他配置用不上。
2024-12-19 01:07:53
816
原创 stm32定时器输入捕获功能的学习
通过定时器的输入捕获功能测算pwm信号的频率和占空比,高频pwm信号使用测频法即我们通过定时器定1s的时间,在这个过程中计数pwm信号上升沿的次数该次数即为信号频率。2、配置定时器的时基单元:打开定时器的时钟,同时选择定时器的时钟源,配置定时器时基单元的结构体,主要是对psc和arr的配置,将arr赋最大值65535,以便于更好的使用测周法。1、配置gpio并开启时钟:首先打开所需要使用定时器通道所对应的io口,例如我要使用TIM3的通道1,我就需要开启端口PA6,配置完成后打开apb2时钟。
2024-12-18 21:11:51
410
原创 stm32定时器pwm波的学习
3、定时器oc单元的配置:配置定时器输出比较器模块,其中需要配置oc的模式和有效电平和自动装载值,这些配置与arr直接决定了pwm的波形,其中占空比为ccr与arr+1的比值非常重要,后期可以通过对比较值的改变进而输出不同的pwm波形。2、定时器时基单元的配置:配置定时器的实际单元,从而为pwm波的生成做准备,arr的配置对后续波形的形成影响大。1、gpio的配置:pwm波生成后需要输出,所以需要配置对应输出比较通道的io口,并开启时钟。pwm波主要是使用了定时器的比较输出的功能。
2024-12-18 01:13:49
616
原创 stm32定时器中断学习总结
1、配置时基单元:首先打开时基单元时钟,并选择定时器的时钟通道,接着配置时基单元,其中最重要的就是psc(预分频值)arr(自动重装载值)cnt(计数值)对他们的配置就可以配置定时器的计数频率和周期,同时配置定时器的计数模式,通过psc分频后定时器读取信号,记下来信号边沿的次数为cnt,达到arr自动装载值后就触发定时器中断。记得定时器需要cmd开启。2、配置中断控制器nvic:首先开启定时器中断,接着配置定时器中断到达内核的中断通道。定时器中断主要是关于对定时器时基单元的配置。3、配置定时器中断函数。
2024-12-18 01:02:28
644
原创 stm32外部中断学习总结
4、配置中断控制器nvic:现在中断信号处在exti位置,想要进入内核还需要通过nvic这个节点,所以要首先打开外部中断,打通nvic与exti之间的通道,在nvic的配置中选取从nvic到达内核的通路,从而最后使可触发中断的外部信号进入内核今儿触发中断函数。同时记得中断优先级组的配置。2、配置afio:通过afio的选取了io口对应的外部中断源,打通了gpio与外部中断之间的通道,使用GPIO_EXTILineConfig函数构建外部中断通道,进而把通过gpio的信息可以传递到外部中断门口,
2024-12-18 00:45:23
353
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅