VSM Studio 直流电机H桥驱动PWM 单向控制
VSM Studio 直流电机H桥驱动PWM 单向控制VSM Studio 直流电机H桥驱动PWM 单向控制
Proteus仿真
VSM Studio 代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/* Main.c file generated by New Project wizard * * Created: 周二 6月 7 2022 * Processor: AT89C52 * Compiler: Keil for 8051 */#include <REGX52.H>#include <intrins.H>// Define P3 pinssbit Inc =P3^4; sbit Dec = P3^5;sbit Dir = P3^6 ;sbit PWM = P3^7;// Define new typestypedef unsigned char uchar;typedef uns ...
使用WSL2时控制台输出“wsl 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理“
WSL2版本:2.0.9.0
Windows版本:10.0.22621.2715
打开或创建WSL配置文件(位于C:/User/%你的用户名/.wslconfig),并添加以下内容:
123456[experimental]autoMemoryReclaim=gradualnetworkingMode=mirroreddnsTunneling=truefirewall=trueautoProxy=true
打开命令提示符并执行 wsl --shutdown命令。
重新启动wsl就可以了
注意:wsl2版本2.0以前的不支持这个方法
使用镜像模式后,wsl2会自动共享主机的代理,比以前方便了不少。
STM32 实现 44 矩阵键盘扫描(HAL库、标准库 都适用) - 白菜没我白 - 博客园
本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可。
1、键盘原理图:
原理举例:先把 F0-F7 内部拉高,这样这个8个引脚都是高电平,然后就进行列扫描。例如:假如按下3按钮,Y3 列扫描,把F4先拉低,然后读取F0-F3的状态,就会读出为1110,这就可 以知道是F3行拉低了,同时这时候是程序控制F4拉低的,这样就可以知道是F4列导致它转态变化了的,这样就可以定位出是F4列F3行的按键按下了;其他的列也是这样子扫描,就可以实现了。
2、STM32 cubemx 引脚配置图:
这里用外部晶振内部晶振都可以,时钟对这个没什么影响,不用开中断,所以其他的配置就不细说了,下面再说一下这8个GPIO的配置。
4个引脚配推挽输出,这4个配输出的引脚内部上下拉不用配置;另外4个配成输入,内部上拉。
3、生成代码后,开始编写逻辑:
编写之前我们先做一下头文件的定义,把一些要用到的宏定义好:
#ifndef __HW_key_H__
#define __HW_key_H__
#include &quo ...
STM32CubeMX HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度
STM32CubeMX | HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度目录
STM32CubeMX | HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度
1、ADC简介
1.1 采样定理
1.2 模式介绍
1.3 采样时间和采样频率的计算
2、轮训方式的多通道采集
2.1 方式一:间断模式+扫描模式
2.2 方式二:完全轮训
3、DMA实现多通道采集
4、TIM+DMA实现多通道采集
5、补充:内部温度传感器ADC通道
注:本片文章以STM32F103系列为例,其他系列可能稍有不同。
1、ADC简介1.1 采样定理1.2 模式介绍
扫描模式: 使用STM32CUBEMX配置了多通道后,这一项默认开启且无法设置成关闭。这个模式就是自动扫描你开启的所有通道进行转换,直至转换完。例如你开启了CH0、CH1、CH2、CH3这四个通道,启动转换后ADC会自动将这4个通道全部转换完,但是这种连续性是可以被打断的,所以就引出了间断模式。
连续模式: 在CUBE中选中ENABLE就是连续模式,DI ...
【HAL库】STM32+ESP8266+Onenet+MQTT,极简工程,hal库移植。
ESP8266+Onenet+MQTT
1 导入.c.h文件(不再赘述,详细见LED部分)
2 Cubemx配置
3 修改 .c.h 文件
4 测试
ESP8266通过MQTT协议连接Onenet。从标准库移到了HAL库,过程有点麻烦,整了一天。做完后整理了一下,这个极简的工程,方便以后开发,也希望能帮助到大家,节约时间。
代码工程:https://github.com/wyfroom/ESP8266-Onenet-MQTT
该份代码硬件配置:板子:STM32F103C8T6最小系统板。外设:串口1用作调试,串口3用作esp8266。esp8266:淘宝,esp-01s
1 导入.c.h文件(不再赘述,详细见LED部分)在keil工程中导入之前写好的.c.h文件。这个是我从标准库移倒hal库的,直接从我工程里复制就行,很纯净,没有加多余的东西。下面介绍如何根据个人实际使用情况更改一些参数。
cubemx详细使用教程及所有模块整合见这篇:【HAL库】HAL库STM32cubemx快速使用
; 2 Cubemx配置串口1用于调试,串口3用于ESP8266通信,打开中断 ...
基于STM32F103C8T6(HAL库)的HC-SR501红外人体传感及HC-SR04超声波测距
系列文章目录一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方四、基于STM32F103C8T6最小系统板HAL库CubeMX驱动HC-SR501红外人体传感模块五、基于STM32F103C8T6(HAL库)的HC-SR501红外人体传感及HC-SR04超声波测距
文章目录
系列文章目录
前言
一、模块简介
二、配置CubeMX
三、硬件连线部分
四、逻辑代码部分
HC_SR04.c
HC_SR04.h
main.c
前言我在上一篇文章中驱动了HC-SR501红外人体传感模块,但在测试过程中发现,这个模块的热释电探头过于灵敏了,甚至有的时候往上哈气,会因为检测到类似于人体的温度而误判为感应到人体,所以为了减少误判概率,我打算再添加一个测距模块,在红外感应到人体时,再次判断人体与传感器的距离,在满足预设的距离范围时,才确定有人体接近,进行后续操作。
...
基于STM32的HC-SR501红外感应模块驱动与应用
一、 简介HC-SR501红外感应模块是一种常用的人体红外感应模块,常用于安防监控、智能家居等领域。本文将介绍如何在STM32单片机上驱动和应用HC-SR501红外感应模块,实现基本的人体检测功能。
二、 模块原理HC-SR501红外感应模块基于红外热释电传感器(PIR sensor)原理,当检测到人体或其他热源时,输出高电平信号。该模块有延迟时间和重复触发时间两个可调节的螺旋调节器,可根据需求调节模块的灵敏度和触发后的输出信号时长。
三、 连接与驱动1. 连接连接HC-SR501模块至STM32单片机,将模块的OUT引脚连接至STM32的GPIO引脚,以接收感应模块的输出信号。同时,通过电源模块连接模块至单片机的供电引脚。
2. 驱动在STM32的开发环境中,编写对HC-SR501模块的驱动程序。以下是一个简单的示例代码:
1234567891011121314151617181920212223242526272829303132333435```c#include "stm32f4xx.h"#define HC_SR501_PIN GPIO_PIN_0 ...
手把手教你,通过HAL库实现STM32的超声波测距--以SR-04为例
目录
0、SR-04基本原理
1、准备工作
2、连线
3、STM32CUBEMX设置
3.1新建工程
3.2芯片通用设置
3.3定时器捕获设置
3.4其他设置
3.5生成工程
4、程序完善
4.1完善打印输出函数
4.2完善tim.c
4.3完善gpio.c
4.4完善main函数
5、总结
0、SR-04基本原理声波遇到障碍物会反射,而声波的速度已知,所以只需要知道发射到接收的时间差,就能轻松计算出测量距离,再结合发射器和接收器的距离,就能算出障碍物的实际距离。
以HC-SR04硬件为例,端口为VCC、Trig、Echo、GND。
VCC–接STM32板子+5V;GND–接STM32板子GND;Trig–为触发控制信号输入,触发测距,给至少10us的高电平信号,模块自动发射8个40KHz的方波,自动检测是否有信号返回;Echo–回响信号输出,有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。那用STM32怎么给端口信号呢?又是怎么获取信号呢?Trig端口为超声波模块的输入信号,也就是通过STM23一个端口推挽输出一个至少10us的高 ...
STM32F407使用Helix库软解MP3并通过DAC输出,最精简的STM32+SD卡实现MP3播放器
只用STM32单片机+SD卡+耳机插座,实现播放MP3播放器!
看过很多STM32软解MP3的方案,即不通过类似VS1053之类的解码器芯片,直接用STM32和软件库解码MP3文件,通常使用了labmad或者Helix解码库实现,Helix相对labmad占用的RAM更少。但是大多数参考的方案还是用了外接IIS接口WM98xx之类的音频DAC芯片播放音频,稍显复杂繁琐。STM32F407Vx本身就自带了2路12位DAC输出,最高刷新速度333kHz,除了分辨率差点意思,速度上对于MP3通常44.1kHz采样率来说,用来播放音频绰绰有余了。本文给的方案和源码,直接用STM32软解码MP3并使用自带的2个DAC输出引脚输出音频左右声道。
原理:STM32从SD读取MP3文件原始数据,发送给Helix库解码,Helix解码后输出PCM数据流,将此数据进一步处理转换后,按照左右声道分别存入DAC输出1和2缓存,通过定时器以MP3文件的采样率的频率提供DAC触发节拍,通过DMA取缓存中高12位数据给DAC,在DAC1和2引脚产生音频波形,通过电容耦合到耳机的左右声道上。
MP3源文件是一种 ...
【STM32】HAL库 STM32CubeMX教程十三---RTC时钟
前言:
本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
所用工具:
1、芯片: STM32F407ZET6/ STM32F103ZET6
2、STM32CubeMx软件
3、IDE: MDK-Keil软件
4、STM32F1xx/STM32F4xxHAL库
知识概括:
通过本篇博客您将学到:
RTC时钟原理
STM32CubeMX创建RTC例程
HAL库定时器RTC函数库
PS: 这里的RTC讲解,我们只将原理,不讲寄存器,如果要看RTC的寄存器,请看这篇文章【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC
什么是RTC**RTC (Real Time Clock)**:实时时钟
RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。
在断电情况下 RTC仍可以独立运行 只要芯片的备用电源一直供电,RTC上的时间会一直走。
RTC实质是一个掉电后还继 ...
