基于HAL库的stm32f103c8t6的快速开发笔记(简易版)—— 5、STM32的PWM输出(附舵机控制)

2023-10-26

1、概念了解
首先了解到,PWM生成是在通用定时器的基础上配置的。每个通用定时器都有多路通道输出PWM信号,这里以TIM4(定时器4)为例。

在这里插入图片描述
//在图形配置面板找到TIM4的通道一作为PWM输出管脚,
其管脚为PB6。

在这里插入图片描述
//打开左侧定时器配置面板,可以看到Channel1配置为
PWM Generation CH1.

2、舵机控制基础
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。例如:1.5毫秒的脉冲,电机将转向90度的位置(通常称为中立位置,对于180°舵机来说,就是90°位置)。如果脉冲宽度小于1.5毫秒,那么电机轴向朝向0度方向。如果脉冲宽度大于1.5毫秒,轴向就朝向180度方向。以180度舵机为例,对应的控制关系是这样的:

3、具体参数配置
通过了解STM32资源可以知道,除高级定时器是挂在APB2总线上,其它定时器(基本、通用定时器)都是挂在APB1总线(较APB2总线速度低一半上。

在这里插入图片描述

打开左侧定时器的PWM参数配置面板,为了产生一个20ms的脉冲周期,我们需要配置 Prescaler(预分频系数)和 Counter Period(重装载值)。已知我们配置TIM4的时钟频率为36MHz,
故需配置 Prescaler为360-1(理论上配置36所产生的更高频率的信号对PWM的效果更好),Counter Period 为2000-1,计算公式为 360 X 2000 / 36M=0.02s=20ms(50Hz)

在这里插入图片描述
//默认为PWM模式1,Pulse(脉冲宽度)为0,Pulse / Counter Period =占空比。

4、函数代码分析

在这里插入图片描述

5、实例分析
要求:让舵机在0度到180度来回摆动。

在这里插入图片描述

未经允许,严禁转载!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于HAL库的stm32f103c8t6的快速开发笔记(简易版)—— 5、STM32的PWM输出(附舵机控制) 的相关文章

  • 从 C、GCC(裸机)调用 ARM 汇编

    我正在尝试使用 GCC 在 ARM 中进行一些裸机编程并在 QEMU 上进行测试 每当我从 C 调用 ARM 标签时 我的程序就会挂起 我有一个简单的代码示例 显示了问题https gist github com 1654392 https
  • Android是否阉割了ARM的Jazelle技术?

    我认为 Android 中的 Java 字节码 混蛋 的理由是性能 我怀疑还有另一个原因 但是 通过更改字节码 他们难道没有让 Jazelle 等硬件加速技术变得毫无意义 从而实际上降低了 Mobile Java 平台的可用性能吗 目标平台
  • 如果我尝试打开 PWM 引脚,Windows 10 Iot Core 应用程序会崩溃

    我想为我的蜂鸣器打开一个 PWM 引脚 但如果我尝试打电话给pwmController OpenPin 6 方法 应用程序崩溃并显示System Runtime InteropServices SEHException 我已经仔细检查过示例
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • 使用可加载内核模块修改帧缓冲区(/dev/graphics/fb0)参数

    Problem 我必须配置 Android 平台使用的各种 LCD 显示器 几乎在所有情况下 都没有针对感兴趣的 LCD 显示器免费提供的电气规格 但通过经验和逆向工程 可以很好地猜测参数 我正在尝试使用可加载内核模块来微调显示参数 也欢迎
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 多核ARM cpu上的中断如何工作

    这个问题已经针对 x86 得到了解答 但是 我找不到太多关于 ARM MP cpu 如 Cortex A9 Cortex A15 等 的信息 更重要的是我想知道是否可以在非主CPU上引发中断而无需任何配置等 我正在开发一款仅处理主 cpu
  • 理解这部分手臂的汇编代码

    syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func
  • ARM 汇编 SOS 中的 64 位除法

    我正在计算 16 个 64 位数字相加的平均值 我认为我已经正确完成了所有加法 但现在我需要弄清楚如何将 64 位数字除以 16 但我被困住了 任何帮助都会非常感谢你 到目前为止 这是我的代码 tableSize EQU 16 sum EQ
  • ARM 9处理器的opencv交叉编译

    我需要为 ARM 9 处理器交叉编译 opencv 我有处理器的工具链 但不知道如何交叉编译 请告诉我为arm板交叉编译的过程 谢谢大家 看这个参考 http www airs com ian configure configure 5 h
  • 适用于arm(cortex-m3)的位置独立可执行文件(-pie)

    我正在使用codesourcery g lite 基于gcc4 7 2版本 为stm32 Cortex m3 编程 我希望动态加载可执行文件 我知道我有两个选择 1 可重定位的elf 需要一个elf解析器 2 具有全局偏移寄存器的位置无关代
  • 使用 gnueabihf 为 ARMv6 构建

    我尝试为 ARMv6 构建应用程序 但失败了 我猜问题是工具链支持硬浮点 但 ARMv6 不支持 好吧 首先我设置 march armv6 编译失败 opt gcc linaro arm linux gnueabihf 4 8 2014 0
  • ARM Neon:如何从 uint8x16_t 转换为 uint8x8x2_t?

    我最近发现了关于vreinterpret q dsttype src类型转换运算符 https stackoverflow com a 43519190 2436175 但是 这似乎不支持所描述的数据类型的转换这个链接 http infoc
  • 使用 ARM NEON 内在函数添加 alpha 和排列

    我正在开发一个 iOS 应用程序 需要相当快地将图像从 RGB gt BGRA 转换 如果可能的话 我想使用 NEON 内在函数 有没有比简单分配组件更快的方法 void neonPermuteRGBtoBGRA unsigned char
  • RAM 存储二进制数和汇编语言的冒泡排序

    我必须使用 ARM v7 执行一个例程 在 RAM 内存中存储 10 个二进制数 然后使用冒泡排序对这些数字从高到低进行排序 我应该如何开始 func bubbleSortAscendingU32 ldr r3 r0 4 mov r1 9
  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • 如何在 Android 设备上运行 VS Code [重复]

    这个问题在这里已经有答案了 我有 Galaxy Tab S6 它具有替代笔记本电脑的很酷的功能 例如连接鼠标和键盘 但不幸的是它运行 Android 操作系统 并且没有很多开发应用程序可用于 Android 所以我想是否有一个选项可以在至少
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • 了解 ctags 文件格式

    我使用 Exhuberant ctags 来索引我的 c 项目中的所有标签 c project 是 Cortex M7 微控制器的嵌入式软件 结果是一个标签文件 我正在尝试阅读该文件并理解所写的内容 根据我找到的 ctags 和 Exhub

随机推荐

  • epoll与select区别

    select和epoll的区别 面试常考 首先select是posix支持的 而epoll是linux特定的系统调用 因此 epoll的可移植性就没有select好 但是考虑到epoll和select一般用作服务器的比较多 而服务器中大多又
  • BP神经网络参数总结

    BP神经网络参数总结 BP神经网络是一种常用的人工神经网络模型 广泛应用于分类 回归和模式识别等任务中 在进行BP神经网络训练之前 需要对网络的参数进行设置和调整 以获得更好的性能和准确度 下面将对BP神经网络的参数进行总结 并给出相应的源
  • 【线程】详解线程状态(到底是五种还是六种)

    首先我们要知道 在传统 操作系统 的线程模型中线程被分为五种状态 在java线程中 线程被分为六种状态 传统线程模型 操作系统 中线程状态 线程的五种状态 1 新建 new 创建了一个新的线程对象 2 就绪 runnable 调用线程的st
  • python 置信区间_关于置信区间的完整指南和Python示例

    python 置信区间 Confidence Interval CI is essential in statistics and very important for data scientists In this article I w
  • Python Flask 搭建微信小程序后台详解

    前言 近期需要开发一个打分的微信小程序 涉及到与后台服务器的数据交互 因为业务逻辑相对简单 故选择Python的轻量化web框架Flask来搭建后台程序 因为是初次接触小程序 经过一番摸索和尝试 个人觉得的微信小程序与后台的交互有点像aja
  • 矩阵乘法测试

    对于时间的函数 gettimeofday 函数使用方法 http blog csdn net hurmishine article details 60326345 矩阵乘法测试 代码 1 为了试验简单 两个测试矩阵均为n n 当然结果也为
  • C++中的各种进制转换函数汇总

    1 在C中 按指定进制格式输出如下 include
  • shell脚本——shell函数详解

    shell脚本 shell函数详解 一 shell函数 1 shell函数的概念 2 shell函数的格式 1 函数的定义 2 调用函数的方法 3 函数返回值 4 函数传参 5 函数变量的作用范围 6 递归 函数调用自己本身的函数 1 阶乘
  • 【MFC】列表视图控件——List Control

    01 文章目录 文章目录 01 文章目录 02 List Control介绍 03 List Control的通知消息 04 List Control的相关结构体 05 List Control的创建 06 CListCtrl类的主要成员函
  • 0-1背包问题

    题目描述 有n件物品和一个容量为v的背包 第i件物品的重量是w i 价值是p i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值和最大 算法分析 动态规划的题目一直是比较有难度 这种题目炸看往往连个思路都没有 往往需要数
  • expect 使用实例

    自动登录一台 服务器 代码 root localhost D151SP160 cat test1 exp bin expect set timeout 2 set user name lindex argv 0 set mypassword
  • Delphi转Java开发的辛酸

    工作已经快两年了 回想起以前的选择 真是让人不是滋味啊 通过近段时间的仔细思考和对自己以后职业规划 现在越来越想往JAVAWEB方向发展 想了许久 我还是决定辞职 放弃现在这份安逸的工作 易然的选择做JAVA这边道路 今天刚刚出来面试 就让
  • 数据结构-哈希-哈希表实现

    哈希表实现 一 哈希概念 哈希概念 常见哈希函数 哈希冲突 哈希冲突的解决 二 闭散列实现 闭散列的结构 插入 查找 删除 闭散列总结 三 哈希桶实现 哈希桶的结构 插入 查找 删除 析构 拷贝构造 赋值运算符重载 四 哈希表总结 开散列与
  • 安装windows版caffe

    MATLAB操作caffe框架 安装之前先谈谈我的电脑硬件配置 Qudra K600 的GPU 计算能力是3 0 你在安装之前也要搞清楚自己的GPU显卡是什么 看看到底支持不支持CUDA 如果支持 要查查计算能力是多少 后面配置参数要用到
  • windows环境下查看Python的安装路径

    1 windows r 进入cmd命令 2 查看python安装路径 where python
  • 常见的几种Sort排序算法

    几种常见的Sort排序算法 1 排序的基本概念 有n个记录的序列 其相应关键字的序列是 相应的下表序列是 通过排序 要求找出当前下标序列的一种排列 使得相应的关键字满足如下的非递减 或非递增 关系 这样就得到一个按关键字有序的记录序列 该文
  • ant design pro 跳转新页面 修改功能

    ant design pro 修改功能跳转新页面 背景 例子 页面跳转 背景 在官方提供的例子中 是以弹窗的形式做的修改和新增 在项目中如果遇到 采集项数较多 会在修改页面添加别的功能的情况下 弹窗满足不了此需求了 例子 页面跳转 先说修改
  • 计算机网络校园网网络设计报告,计算机网络课程设计报告-校园网的组建和应用...

    计算机网络课程设计报告 校园网的组建和应用 北 京 邮 电 大 学校园网的组建和应用 计算机网络课程设计指导老师 吴建伟老师刘亦桐老师小组成员 姓名 班级 学号王 超 06121 060648曹 振 06121 060643郭 嵩 0612
  • 我的创作纪念日

    机缘 咱记性不好 技术也差 实验过程中总是遇到奇奇怪怪的问题 有些问题找了好久也没找到完全适合自己情况的解决方案 很多情况下需要结合多篇文章进行总结 为了下次遇到类似问题能够快速解决 同时也为遇到同样问题的小伙伴们能够快速找到详细的问题解决
  • 基于HAL库的stm32f103c8t6的快速开发笔记(简易版)—— 5、STM32的PWM输出(附舵机控制)

    1 概念了解 首先了解到 PWM生成是在通用定时器的基础上配置的 每个通用定时器都有多路通道输出PWM信号 这里以TIM4 定时器4 为例 在图形配置面板找到TIM4的通道一作为PWM输出管脚 其管脚为PB6 打开左侧定时器配置面板 可以看