STM32—驱动HC-SR04超声波测距模块
超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精确的直线测距,其测距原理图如下: HC-SR04的一端发出超声波,接触到反射物后反射,被另一个端口接收到,所以只要知道发射和接收的时间差,就可以根据声波传播的速率算出HC-SR04和反射物直接的距离。 所以实现超声波测距就需要俩个条件: 发射和接收的时间差 超声波传输的速率 HC-SR04工作原理 HC-SR04模块的电气参数如示: HC-SR04模块的实物图如示: 有四个引脚: Vcc:+5V电源供电 Trig:输入触发信号(可以触发测距) Echo:传出信号回响(可以传回时间差) Gnd:接地 用Trig和Echo引脚实现测距的流程: 1.通过T
[单片机]
如何创建 USB-PD 接收设备(中)
2.7 [可选] 配置 Tracer 进行调试↑ 2.7.1配置LPUART ↑ 在STM32G0 Nucleo-64板子上,连接ST-LINK的Virtual COM口是LPUART1。 必须更改 LPUART1 使用的默认 STM32CubeMX 引脚以匹配 STM32G0 Nucleo-64 硬件: TX 的 PA2 用于接收的 PA3。 在Connectivity部分,在 Asynchronous 模式下启用LPUART1,波特率为921600 bauds。其余保持默认。 在引脚布局视图中,左键单击 PA2 和 PA3 以将它们重新映射到LPUART1_TX和LPUART1_RX。 在DMA 配置选项卡下,添加
[单片机]
关于IAR开发STM32配置
因为自己要学Msp430还有ZigBee发现IAR真的挺好用,,,所以以后想着就用IAR写单片机程序,, 这次配置我不会把程序的配置弄得有条理,分开文件夹存放,,,我要把那些文件全都放到一块,,弄得乱七八糟,,,因为自己一开始学习用Keil开发32的时候,,网上的视频建工程全都是建的 很有条理,,对于一开始学的自己当时就感觉特麻烦,,,对于初学者更是感觉麻烦,,反而让初学者觉得难,,,,,所以呢!嘿嘿,,,,,,,哪样简单哪样弄 不要以为我不是一个讲究的人哈,我自己建的工程都是很有条理的,,看我Keil的,,,第一次用IAR嘛,,先怎样简单怎样建,,,,,,,, 首先你要有下载的STM32的固件库 新建一个文件夹 把
[单片机]
STM32-ADC认识
一、ADC配置的基本步骤: 1、打开DMA和ADC1的时钟。 在RCC_Configuration()中添加: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); 2、配置模拟IO输入口 在GPIO_Configuration()中配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //ADC0 -light GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA,
[单片机]
STM32中 warning: #61-D: integer operation result is out of range
由于编译器默认signed int即32位有符号整数类型,而1 31实际为0x80000000, 这样就有可能改写了符号位(最高位) 依此类推,(2 30),(3 29)...等都会出现编译警告问题. 解决办法为: ((unsigned int)1 31),((unsigned int)2 30),...
[单片机]
STM32单片机/SPI通信
SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,这四根引脚分别是: SS(Slave Select)从设备片选信号,由主设备控制。 SCK(Serial Clock)时钟信号,由主设备产生。 MISO(Master Output,Slave Input) 主设备数据输入,从设备数据输出。 MOSI(Master Input,Slave Output) 主设备数据输出,从设备数据输入。 硬件连线如上图,从设备的SCK,MOSI,MISO线均并联到主机MCU上,但片选信号线要直接
[单片机]
STM32定时器进入中断后无法退出的解决方法
STM32在使用定时器的时候,遇到了进入中断后无法退出的问题,其实算不上是问题 ,应该是粗心。后来总结了这类问题的共性,即:程序进入中断服务函数之后必须清除中断标志位,中断标志位的清除方式各不相同,串口中断中,通过读取数据寄存器就可以清除标志位,定时器中断需要调用清除中断标志的函数来清除,如下所示: void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位 //add your code here //en
[单片机]
学习单片机和STM32的一道坎
刚开始学单片机的你,是不是会因用程序把LED点亮而感到高兴,会因用程序把数码管点亮而感到高兴。这是好事,这也是想继续学习下去的动力。 但是数据相关的实验是学习单片机和STM32的一道坎,此时就需要用好本文要说的串口这个调试工具。串口通信介绍关于串口通信的介绍,也可以点击阅读之前发的一篇文章:STM32串口通信基本原理。串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式......这种太过理论了,看似懂了,但又不懂。还是用我笔者自己的话来说吧。串口通信就是可以把程序在单片机或者STM32芯片中运行的结果发送到电脑的一种通信方式。 如何使用串口通讯,你需要知道的几个重要的知识点: 波特
[单片机]