STM32 CubeMX学习:5. 其他PWM设备

STM32——舵机控制 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占整个信号周期的百分比。通过向舵机的信号线发送PWM信号控制舵机的输出量,一般来说,PWM的周期及占空比,可通过程序控制的。当我们向舵机发送脉冲宽度为1.5ms时,舵机的输出轴将移至中间位置0°; 阅读详情

STM32 CubeMX学习:5. 其他PWM设备

系列文章目录
  1. 前期的准备
  2. 点亮 LED
  3. 闪烁 LED
  4. 定时器闪烁LED
  5. PWM控制LED亮度
  6. 常见的PWM设备
  7. 按键的外部中断
  8. ADC模数转换
  9. 串口收发
  10. 串口打印遥控器数据
  11. 未完待续…


0 前言

这次我们将了解更多使用PWM控制的设备-蜂鸣器,舵机,学习使用PWM功能对蜂鸣器和舵机进行控制。同时将学习有源蜂鸣器和无源蜂鸣器的大致结构与原理以及舵机的基本知识。

1 基础知识

1.1 蜂鸣器

蜂鸣器是一种能够通过电子信号控制的发声器件。在生活中,几乎所有能够发出哔哔响声的电子器件中都装有蜂鸣器。蜂鸣器能够为使用者提供直观的声音信息,是一种常见的人机交互模式。常见的蜂鸣器分为插针型和贴片型。

根据是否内置震荡电路可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器只需要提供直流电压就可以通过内部的震荡电路产生震荡电流进而发出声音,而无源蜂鸣器需要输入特定频率的方波才能发出声音。两者比较起来,有源蜂鸣器的控制更加简单,但是只能发出单一频率的声音,而无源蜂鸣器虽然控制起来比较麻烦,但是可以通过改变输入方波的频率发出不同音调的声音,甚至可以用来演奏乐曲。

有源蜂鸣器无源蜂鸣器
内置震荡源有无
激励方式直流电压特定频率方波
音调固定可变

探索者 STM32F4 开发板板载的蜂鸣器是电磁式有源

1.2 舵机的控制

舵机是机器人中的常见的执行部件,通常使用特定频率的PWM进行控制。

舵机的主要组成部位由一个小型的电机和传动机构(齿轮组)构成,多被用于操控飞行器上的舵面,故而得名舵机。由于控制简单,价格便宜,用于简单的动作控制,下图为市场上常见的舵机。
舵机
通常舵机的三根线按照颜色分别为:黑色-GND,红色-VCC,黄色-PWM信号。在使用舵机时,只需要使用杜邦线或者其他连接线接入单片机对应的引脚接口。

舵机使用的PWM信号一般为频率50Hz,高电平时间0.5ms-2.5ms的PWM信号,不同占空比的PWM信号对应舵机转动的角度,以180度舵机为例,对应角度图如下图所示。
舵机原理

2 程序学习

2.1 蜂鸣器的CubeMX配置

2.1.1 有源蜂鸣器

本章需要用到的硬件有:
1)指示灯 DS0(即LED0)
2)蜂鸣器
DS0在之前的博客已有介绍, 而蜂鸣器硬件也是直接连好了的不需要经过任何设置, 直接编写代码就可以了 。蜂鸣器的驱动信号连接在 STM32F4的 PF8上。如图所示:蜂鸣器使用的引脚为PF8。
蜂鸣器引脚
图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R61 主要用于防止蜂鸣器的误发声。当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声。相应的代码大家可以参考 点亮LED 的方法配置GPIO,这里就不给相应的代码展示,大家可以自行尝试一下,可以和我多多交流哟!

2.1.2 无源蜂鸣器

但是这不是我们今天主要想讲解的蜂鸣器,我这里给大家讲解一下另一种无源蜂鸣器,由于正点原子的开发板没有板载,这里只给大家参考一下。

下图为一个设计好的无源蜂鸣器的电路
无源蜂鸣器
我这里展示的蜂鸣器程序,使用的引脚为PD14,为定时器4的通道3。

1、打开CubeMX,使能定时器4,预分配设置为0,重载值设置为20999,设置通道3为PWM输出,其余设置保持默认即可,此时开发板的PD14引脚变为绿色。

蜂鸣器引脚设置
2、点击Generate Code,生成工程。

根据在之前博客学习的知识,可以通过查看数据手册的方式知道定时器4挂载在APB1总线上,对应的总线频率为84MHz,分频值为0,重载值为20999,并通过公式计算得到PWM波的输出频率为4000Hz。

3、程序讲解
在之前的原理介绍中,改变PWM的频率就可以改变无源蜂鸣器的音调。故而改变定时器的分频系数和重载值,改变PWM的频率,就能够控制无源蜂鸣器发出的响声频率。

在主程序中,我们声明了psc和pwm两个变量,分别控制定时器4的分频系数和重载值,每一次循环中这两个变量进行一次自加。

通过宏定义的方式,设置 pwm 的值在 MIN_BUZZER_PWM(10000)和 MAX_BUZZER_PWM(20000)之间变动,psc 的值在0和MAX_PSC(1000)之间变动。

主函数代码如下:

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
		pwm++;
		psc++;
		if(pwm > MAX_BUZZER_PWM)
		{
			pwm = MIN_BUZZER_PWM;
		}
		if(psc > MAX_PSC) 
		{ 
			psc = 0; 
		} 
		buzzer_on(psc, pwm); 
		HAL_Delay(1);
		
  }
    /* USER CODE END 3 */

在buzzer_on函数中,将psc和pwm两个值赋值给定时器4的预分频计数器和3号通道的比较寄存器,从而调整PWM信号的周期,进而控制蜂鸣器发出不同声调,不同响度的声音。

void buzzer_on(uint16_t psc, uint16_t pwm)

该函数的返回值为void,该函数的作用在于控制蜂鸣器定时器的分频和重载值,该函数有两个参数
(1)参数1:psc——设置定时器的分频系数
(2)参数2:pwm——设置定时器的重载值

这里我们需要自己定义这个函数,所以我选择新建一个Boards目录,
新建目录
并在该目录下新建buzzer.c文件,

#include "buzzer.h"
#include "main.h"

extern TIM_HandleTypeDef htim4;
void buzzer_on(uint16_t psc, uint16_t pwm)
{
    __HAL_TIM_PRESCALER(&htim4, psc);
    __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwm);

}
void buzzer_off(void)
{
    __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 0);
}

新建c文件
<注意>在上面的图片中我犯了个小错误,在步骤2和3之间,我们需要点击一下那个 “单个小磁盘” 保存文件,才可以弹出保存位置的窗口。

并且新建对应的buzzer.h文件放置于对应位置

#ifndef BUZZER_H
#define BUZZER_H

#include "struct_typedef.h"

extern void buzzer_on(uint16_t psc, uint16_t pwm);
extern void buzzer_off(void);

#endif

新建h文件
在这里,为了更方便的定义我们需要的变量类型,我们还需要自己定义一个声明文件struct_typedef.h,和上面定义buzzer.h文件的步骤类似,放置于同一个文件夹下。下面我只是把文件的内容给大家放出来。

#ifndef STRUCT_TYPEDEF_H
#define STRUCT_TYPEDEF_H


typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed long long int64_t;

/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
typedef unsigned char bool_t;
typedef float fp32;
typedef double fp64;


#endif




然后我们在我们的Boards目录中添加buzzer.c文件
添加c文件
最后一定不要忘记在main.c文件中对应位置引用buzzer.h头文件,否则找不到我们定义的buzzer_on(uint16_t psc, uint16_t pwm);函数

这样我们就得到了完整的可执行代码。

2.2 舵机在CubeMX的配置

这里我示范输出7路pwm波,为复杂功能做准备。
1、首先开启定时器1,预分频值设置为167,重载值设置为19999。打开1-4的PWM输出通道,在PWM通道的设置中,将Pulse值设置为2000,比较寄存器的初始值就会被设成2000。
TIM1设置1
TIM1设置2
2、接着开启定时器8,将预分频值设置为167,重载值设置为19999。打开1-3的PWM输出通道,在PWM通道的设置中,将Pulse值设置为2000。
TIM8设置1
TIM8设置2
可以通过查看源代码或者数据手册的方式我们知道定时器1和8挂载在APB2总线上,对应的总线频率为168MHz,定时器分频值为167,重载值19999,并通过公式计算得到PWM波的输出频率为50Hz,对应的周期为20ms。

通过PWM博客学习的知识,计算出PWM占空比最小为500/20000即2.5%,对应高电平时间为20ms乘以2.5%等于0.5ms,最大为2000/20000即10%,对应高电平时间为20ms乘以10%等于2ms。

3、点击Generate Code,生成工程。

4、程序的讲解
mai函数中,
在初始化时,通过HAL_TIM_Base_Start函数启动定时器1和定时器8,再通过HAL_TIM_PWM_Start函数将定时器1的1,2,3,4号通道的PWM输出和定时器8的1,2,3通道的PWM输出开启。

在主循环中,通过__HAL_TIM_SetCompare来设置PWM的占空比,需要注意的是__HAL_TIM_SetCompare并非是一个函数,查看定义后会发现这其实是一个宏,最后其功能的依然是依靠将数值赋值给定时器某一通道比较寄存器来实现的。

#define __HAL_TIM_SetCompare __HAL_TIM_SET_COMPARE 
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
  ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
    ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)))

使用__HAL_TIM_SetCompare进行占空比设置时,依次对应的输入为:

参数1*htim 定时器的句柄指针,如定时器1就输入&htim1,定时器2就输入&htim2
参数2Channel 定时器PWM输出的通道,比如通道1为TIM_CHANNEL_1
参数3需要赋值给比较寄存器的值,PWM占空比等于比较值除以重载值

随着主循环中各个PWM输出的占空比的变化,舵机的转动角度也随之变化。

代码我已经放到了我的GitHub仓库,如有需要可以下载使用:
CubeMX学习


总结

这篇博客学习的蜂鸣器是一种常见的人机交互模式,可以用于提醒,或者用于报警,提醒某个功能的情况。 舵机是一种简单易用的动力装置,可以用于简单的机械爪控制等。 在上一篇博客的基础之上,大家是不是很容易的就完成了这次的实践呢,大家给自己点个赞吧。
STM32CubeMX实战教程(五)——通用定时器(PWM输出) 前言 在上一章《STM32CubeMX实战教程(四)——基本定时器(还是点灯)》中,已经介绍过基本定时器的功能及用法,在这一章中,我讲主要介绍一下通用定时器的相关功能以及配置方法,废话不多,直接进入主题。 通用定时器 在STM32F4中,TIM2到TIM5为通用定时器,主要特性如下: 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5)递增、递减和递增/递减自动重载计数器 1... 阅读详情

相关推荐

STM32F1/F7使用HAL库DMA方式输出PWM详解(输出精确数量且可调周期与占空比)

文章目录一. STM32的DMA PWM原理1. DMA简介2. DMA方式输出PWM是怎么回事3. HAL库DMA配置PWM的几个函数二. STM32CubeMx配置 DMA PWM三. 波形调试过程分析 一. STM32的DMA PWM原理 最开始疑惑过STM32如何才能实现精确数量的脉冲输出从而控制步进电机,直到做WS2812B灯珠的驱动程序时才知道原来有DMA-PWM模式。使用DMA输出PWM可以精确控制脉冲数量,且可以精确控制脉冲周期与占空比,更重要的是使用DMA传输不消耗CPU资源。于是乎

qq_30267617的博客 3万+

【套件】——蜂鸣器

/蜂鸣器开始时不响。实现功能:蜂鸣器开启0.1S,蜂鸣器关闭0.1S,不断循环。void Buzzer_OFF(void)//关闭蜂鸣器。void Buzzer_ON(void)//开启蜂鸣器。3、在Buzzer.c中编写蜂鸣器开关函数。4、在Buzzer.h中声明蜂鸣器开关函数。2、在Buzzer.h中声明初始化函数。1、在Buzzer.c中初始化函数。6、在主循环之前先初始化按键。5、在主程序main.c中。7、在主循环中编写程序主体。

weixin_53328450的博客 478

Keil5下STM32 PWM输出配置:通俗解释原理与步骤

深入讲解如何在Keil5环境下配置STM32的PWM输出,涵盖原理剖析与实操步骤,帮助开发者快速掌握Keil5与定时器PWM模式的协同应用。

weixin_42603332的博客 1002

STM32学习--3-5 光敏控制传感器控制蜂鸣器

光敏控制传感器控制蜂鸣器

weixin_62549128的博客 1003

【STM32基础 CubeMX】PWM输出

STM32微控制器是一系列功能强大的微控制器,广泛应用于嵌入式系统和电子设备中。其中一个常见的应用是生成PWM信号,用于控制各种设备,如电机、LED灯、声音发生器等。了解如何配置和使用PWM输出对于嵌入式系统开发非常重要。CubeMX是STMicroelectronics提供的一种工具,用于帮助开发人员轻松配置STM32微控制器并生成初始化代码。通过CubeMX,您可以在不深入复杂的寄存器级编程的情况下,设置PWM输出的参数,节省了大量的时间和精力。

m0_62599305的博客 1万+

STM32F103C8T6 JZC-1电子琴(开源版) 无源蜂鸣器

STM32F103C8T6 JZC-1电子琴(开源版) 无源蜂鸣器

Arduino 机械爪 (适合初学者-舵机-蓝牙-触点开关-小喇叭)

先来一张总括图 (寒假入坑Arduino一个月 想着做一个小东西练练手 便想出了这个小创意) 首先:介绍下本项目的实现内容: Arduino控制舵机转动角度 —> 舵机的角度控制机械爪的抓取角度 —> 实现物品的抓取 —> 抓取后喇叭发出声音,示意抓取完成 —(手机利用蓝牙控制转动角度) 机械爪的舵机驱动 首先了解舵机的三根线分别代表什么: 地线(GND)—>棕色或黑色 电源线(VCC)—>红色 信号线(IN)---->橙色或白色–>接9号

qq_19499703的博客 5438

HAL基础实验源码10 stm32cubemx-F429IGT6蜂鸣器例程.zip

本代码采用STMcubeMX5.30和MDK5版本的开发环境,包含cubeMX工程文件和MDK5工程文件,arm嵌入式 C语言源代码 附开发环境的版本说明,STM32F429igt6/f767igt6/h743iit6原理图及全部器件全套资料免费提供,教学视频免费提供

STM32cubeMx系列小白学习教程(一)——软件介绍

STM32CubeMX 是 ST 公司近年来大力推行的STM32 图形化配置工具,以HAL库和LL库为基础,根据开发人员自己的需求,快速并且方便的选择所需芯片,配置搭建编程环境。可以大大的减少了开发难度,以及开发人员的开发时间。STM32CubeMX 包含了所有STM32系列芯片。

weixin_49249873的博客 1902

基于STM32实现的简易电子琴

利用单片机设计一简易电子琴。 功能要求: (1) 按下不同按键,发出不同1 、2 、3、4 、5 、6 、7 七个音符; (2) 用LED 或LCD显示当前按键。

Cesium实战:从DEM数据到3D地形可视化的全流程解析

本文详细解析了从DEM数据到3D地形可视化的全流程,重点介绍了Cesium和Cesiumlab在数字高程模型(DEM)处理与地形数据转换中的应用。通过实战案例和工具对比,帮助开发者高效实现地形可视化,并分享性能优化与高级功能开发经验。

weixin_29079743的博客 336

STM32CubeMX学习系列教程目录

1. STM32CubeMX学习教程之一:GPIO输出之跑马灯 - SimonLiu的博客 - 优快云博客 2. STM32CubeMX学习教程之二:GPIO输入之外部中断 3. STM32CubeMX学习教程之三:GPIO输入之利用SysTick中断给按键去抖 4. STM32CubeMX学习教程之四:定时器中断 5. STM32CubeMX学习教程之五:PWM实现呼吸灯效果 6. ST...

SimonLiu的博客 2万+

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1963

STM32 CubeMX学习:4. PWM控制LED亮度

STM32 CubeMX学习:4. PWM控制LED亮度 系列文章目录 前期的准备 点亮 LED 闪烁 LED 定时器闪烁LED PWM控制LED亮度 常见的PWM设备 未完待续… 文章目录STM32 CubeMX学习:4. PWM控制LED亮度1.基础知识1.1 PWM基本知识1.2 1.基础知识 1.1 PWM基本知识 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

快乐撸代码 1万+

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2586

S32K144后门密钥实战:如何用JLINK脚本绕过复位陷阱更新加密固件

本文详细介绍了在S32K144微控制器上,如何利用JLINK脚本绕过调试器默认复位陷阱,实现通过后门密钥安全更新加密固件的实战方案。针对汽车电子现场维护中常见的“解锁-复位-锁定”循环问题,文章提供了完整的JLinkScript定制方法、批处理工具及故障排除指南,帮助工程师高效完成固件升级。

weixin_29175469的博客 142

STM32CubeMX学习笔记(13)——PWM输出(呼吸灯)使用

一、PWM简介 **脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调试。**是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。 例如上图中,图b)是微处理输出的数字信号,实际上他接到电机等功率设备上时,效果相当于图a)。这就是PWM调制。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输

Leung的博客 1万+

手把手教你学Simulink--基于Simulink的高增益DC-DC变换器仿真建模

特点高电压增益:可以在不使用变压器的情况下实现较大的电压升压比。适用于低电压源:如太阳能电池板、燃料电池等提供的低压直流电源。效率问题:设计时需特别注意提高效率,减少能量损失。挑战电路复杂性:通常涉及多个电感和电容,以及复杂的开关模式。元件选择:合适的元件参数对于达到理想性能至关重要。控制策略:确保高效稳定运行的同时,适应负载变化。首先明确要模拟的任务内容。实现特定的电压增益比(例如从24V升至380V)。根据预期的输入输出电压确定合适的电路拓扑和元件值。

MHD0815的博客 173

STM32入门(cubeMX)

单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。项目介绍内核Cortex-M3Flash64K x 8bitSRAM20K x 8bitGPIO。

qq_73379310的博客 9114

使用ArcGIS Pro进行土地利用分类的机器学习与深度学习

传统的土地利用分类方法通常依赖于手动解译和规则定义,但随着机器学习和深度学习的发展,我们现在可以利用这些技术来自动化和提高分类的精度。ArcGIS Pro是一种功能强大的GIS软件,它提供了丰富的工具和功能,可以支持土地利用分类的机器学习和深度学习。我们将首先讨论数据准备和预处理的步骤,然后介绍常用的机器学习和深度学习方法,并提供相应的源代码示例。这可以通过人工标注或半自动的方式完成。数据裁剪:根据研究区域的范围,裁剪遥感影像数据,以减少计算和存储的负担,并确保只包含感兴趣的土地利用区域。

code_program481的博客 2039

记录一次Spring Framework 漏洞修复的过程

摘要:针对Spring Boot 2.6.13项目在阿里云漏洞扫描中发现的Spring Framework目录遍历漏洞(CVE-2024-38819),首先分析了漏洞成因,确认5.3.23版本存在风险。解决方案包括升级Spring Boot至2.7.18(对应Spring Framework 5.3.41)或6.0+版本,但后者需JDK17支持。临时方案通过配置HttpFirewall限制特殊字符,最终借助阿里云防护服务暂时解决问题。建议长期解决方案仍需升级至安全版本(Spring Boot 6.1.14或

极客栈 1484

新手STM32:基于HAL库的定时器和PWM输出

在 STM32 微控制器的丰富功能模块中,定时器起着不可或缺的关键作用。以 STM32F103C8T6 这款广泛应用的芯片为例,它配备了总计 8 个定时器,依据功能特性和复杂程度可细分为高级定时器(TIM1 和 TIM8)、通用定时器(TIM2 - 5)以及基本定时器(TIM6 和 TIM7)。通用定时器凭借其全面且灵活的功能特性,在众多应用场景中脱颖而出,成为开发者频繁选用的得力工具。高级定时器:TIM1和TIM8通用定时器:TIM2-5基本定时器:TIM6和TIM7。

qq_74267512的博客 1万+

Sentaurus TCAD建模:宽温区n型FinFET模型校准与低温仿真分析

本文基于Sentaurus TCAD平台,建立了n型FinFET的宽温区(233K-393K)仿真模型,解决了低温(73K-193K)仿真失效问题。研究对比了Sprocess工艺仿真与SDE几何建模两种方法,分析了载流子冻析效应、不完全电离和迁移率退化等低温物理机制。通过优化模型参数,实现了在233K、313K和393K条件下仿真误差小于10%,并建立了符合物理趋势的低温外推模型。研究提供了完整的Sentaurus TCAD代码实现,包括器件结构定义、物理模型配置和温度相关参数校准,为宽温区FinFET仿真

huanghm88的专栏 264

ws2812 程序设计与应用(1)DMA 控制 PWM 占空比原理及实现(STM32)

本文开发环境: MCU型号:STM32F10389T6 IDE环境: MDK 5.27 代码生成工具:STM32CubeMx 5.6.1 HAL库版本:STM32Cube_FW_F1_V1.8.0 本文内容: STM32 使用 DMA+PWM 方式驱动 ws2812(x4) 附件: MDK5 示例工程 WS2812 中英文数据手册 文章目录一、WS2812 简介时序传输二、ws2812 驱动的几种方式三、DMA+PWM+TIM 驱动 ws2812四、STM32CubeMx 配置基础.

白杨木屋 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32基础教程(CubeMX)—— 定时器

定时器 定时器原理 原理   本质上就是一个记录脉冲数量的计数器,当记的数达到上限时会发生“溢出”,计时器清零同时产生一个信号,这个信号可以代表很多事件,定时器中断就是其一。   定时器的功能有输出比+和输入捕获两种,输出比较就是定时和PWM功能等,输入捕获用于测量。 分频器(PSC)的原理   如果只是使用时钟信号作为基本的脉冲进行计数,虽然精度相当高,但是计数的最大时间受到了很大的限制,因此引入了分频的概念。分频,本质上就是在时钟和定时器中间再加上一个定时器,这个定时器就叫做分频器,定时器实际上记录的脉

weixin_43718316的博客 8915

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基于STM32CubeMX的电机PWM与GPIO控制实战

本文详细介绍了基于STM32CubeMX的电机控制实战,涵盖硬件连接、PWM配置与GPIO设置。通过STM32CubeMX工具配置定时器生成PWM信号控制电机转速,并利用GPIO引脚实现正反转控制,提供了完整的代码实现和调试技巧,适合嵌入式开发者和电机控制初学者。

q6r7s8t9的博客 838

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: STM32 CubeMX学习:4. PWM控制LED亮度
下一篇: STM32 CubeMX学习:6. 按键的外部中断
北冥航
博客等级 码龄7年 232粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值