STM32F103ZET6【标准库函数开发】------05.通用定时器TIM5四个通道输出PWM信号

2023-11-01

123
STM32有四个通用定时器,现在介绍TIM5输出4路PWM的方法

下面展示主要的time.cmain.c函数的代码

#include "timer.h"
void TIM5_PWM_Init(u16 arr,u16 psc)
{  
	GPIO_InitTypeDef GPIO_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);//使能定时器4时钟
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟	
//GPIO配置	
	GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化TIM2
	TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
	TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 
	TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
	TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
	
//配置TIM2的PWM
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
 	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
//CH1	
	TIM_OC1Init(TIM5, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2
	TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器
//CH12
	TIM_OC2Init(TIM5, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2
	TIM_OC2PreloadConfig(TIM5, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器
//CH13
	TIM_OC3Init(TIM5, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2
	TIM_OC3PreloadConfig(TIM5, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器
//CH14
	TIM_OC4Init(TIM5, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2
	TIM_OC4PreloadConfig(TIM5, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器
	
	TIM_Cmd(TIM5, ENABLE);  //使能TIM4
}
#include "timer.h"
 
 int main(void)
 {		
	delay_init();	    	 //延时函数初始化	  
	TIM5_PWM_Init(999,71);	 //不分频。PWM频率=72000000/1000/72=1Khz   周期为1ms
	 while(1)
	{					
		TIM_SetCompare1(TIM5,200);	  //占空比20%
		TIM_SetCompare2(TIM5,300);	  //占空比30%
		TIM_SetCompare3(TIM5,400);	  //占空比40%
		TIM_SetCompare4(TIM5,500);	  //占空比50%		
	}
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103ZET6【标准库函数开发】------05.通用定时器TIM5四个通道输出PWM信号 的相关文章

  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

    这个网站上有很多关于内存分配的问题 但是我 找不到专门解决我的问题的人 这 问题 https stackoverflow com questions 19148296 linux memory overcommit details似乎最接近
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 如何获取结构体中任意成员的位位置

    如何获取结构体中任意成员的位位置 在示例中 gt typedef struct BitExamStruct unsigned int v1 3 unsigned int v2 4 unsigned int v3 5 unsigned int
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • aarch64 Linux 硬浮点或软浮点

    linux系统有arm64 有arm架构armv8 a 如何知道 Debian 运行的是硬浮动还是软浮动 符合 AAPCS64 GNU GCC for armv8仅提供硬浮动aarch64工具链 这与 armv7 a 的 GCC 不同 后者
  • A64 Neon SIMD - 256 位比较

    我想将两个小端 256 位值与 A64 Neon 指令 asm 进行有效比较 平等 为了平等 我已经有了解决方案 bool eq256 const UInt256 lhs const UInt256 rhs bool result 首先 将
  • 将 C 函数与 ARM 汇编结合使用

    我见过人们在代码中使用 C 库中的 printf 的示例 如下所示 data balign 4 hello asciz Hello n text global main func main main ldr r0 hello msg bl
  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • 2022年Android CPU架构分布(armeabi-v7a vs arm64-v8a)

    有没有关于 2022 年 Android 设备上的架构使用情况的官方信息 我有一个支持armeabi v7a 和arm64 v8a 的应用程序 我想要放弃对armeabi v7a的支持并且仅支持 64 位设备 arm64 v8a 但我找不到
  • 更新 MMU 转换表的正确方法是什么

    我在我的 s3c2440 板上启用了 MMU 3G 4G 内存 故障属性 当我没有读 写 3G 4G 内存时一切都很好 所以为了测试页面错误向量 我写入了 0xFF 3G地址 正如我所料 我从FSR中得到了正确的值 所以我在 do page

随机推荐

  • 毕业两年月薪36k,有时候人与人的差距比人和狗还大

    想起两年前交流过的一个应届生 当时他刚毕业技术水平不高 进了一个小公司做Java后端实习工作 最近联系上了 不问不知道 一问吓一跳 他现在已经进了某一线大厂 月薪36K 这位朋友其实也没比别人强多少 关键在于面试前做足了准备 许多人迫切需要
  • 有序表的合并

    目录 前言 一 有序表合并的两种方式 二 两种实现方式的具体操作 1 顺序表 2 链式 三 两种实现方式的比较 四 总结 前言 通过对线性表的学习 我们对其相关概念已经一定的认识 下面我们通过一些简单的实例应用来增进对线性表相关知识的认识并
  • Synthtext 数据集

    Synth text 数据集官网下载的主要包含图像文件夹和gt mat标注文件 共85万 858750 多张图片数据 该数据集中包含了词级别标注 字符级别标注和文本识别内容 可用于文本检测和文本识别模型 1 mat格式标注文件读取 采用sc
  • pythonscipy教程_Python学习教程(Python学习路线):Python—SciPy精讲

    SciPy 是 Python 里处理科学计算 scientific computing 的包 使用它遇到问题可访问它的官网 https www scipy org 去找答案 在使用 scipy 之前 需要引进它 语法如下 import sc
  • transformer 全总结

    这篇大概写于好几个月之前 最近又很多东西要重新开始 于是重新写起笔记 这是写给我自己看的笔记 所以读者看不明白是很正常的 但我并不觉得完全没有参考价值 毕竟之前看的trans介绍 要么只有encoder 要么没有训练过程 transform
  • 项目:串口接收—ram存储—TFT显示(完整设计)

    目的 1 使用uart串口接收模块接收待显示的串行数据 像素RGB值 2 把待显示的数据写入ram中 3 从ram中读取像素值到TFT显示屏中显示 并对应输出该像素的坐标值 注意 1 遵循uart协议的一个数据位宽为8 一个RGB565像素
  • html标签的checked属性详解

    注意 当元素中有checked属性时 其值无论是什么 都是被选中状态 那怎么才能让其不被选中呢 就是用jquery或js代码实现 1 html中的checked属性 仔细研究下会发现一个很怪异的现象 你知道上面这四个复选框到底那些被选中了
  • VS Code远程连接虚拟机

    太久没有使用VS Code看虚拟机的项目了 今天想看一下操作系统的代码 连接时遇到了一些比较低级的错误 便重新梳理一下整个连接流程 主要分为三步 第一VS Code下载插件 第二 虚拟机上 Ubuntu 下载ssh 第三 建立连接 Vs C
  • Layui的本地存储方法-Layui.data的基本使用 操作localstorage和sessionstorage

    http www manongjc com detail 11 jrxosqvtzledyab html
  • Git查看远程提交状态的方法

    git使用过程中 经常遇到这样的问题 已经git push 了 但是 由于冲突或者push的分支不对 导致远程的和本地的不一致 这就需要提交后查看一下远程的是否ok 查了一下资料 找到了一些方法 就做个记录吧 当程序员 要记得东西太多了 哈
  • yolo3训练自己的模型 基于TensorFlow-keras( python)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 所用到的版本 二 训练自己的模型 1 打开下载的yolo文件夹 2 建立如下目录 3 标记目标 4 修改配置 4 运行test py文件 5 运行trai
  • C++ 实现字符串逆序Hello World,输出olleH dlrow

    定义一个命名空间Myspace 包含以下函数 将一个字符串中的所有单词进行反转 并输出反转后的结果 例如 输入字符串为 Hello World 输出结果为 olleH dlrow 并在主函数内测试该函数 include
  • vue-cli3.0+tinymce实现富文本效果

    前言 之前vue用的富文本插件 tinymce 感觉还是停实用的 正好最近又用到了 在这里分享下 最下面提供中文文档 需要更多功能 或者感觉有不详细的可以看下 也可以留言问我 我看到肯定会回复的 效果 步骤 第一 安装两个插件 前者是 ti
  • JavaFX技巧6:使用透明颜色

    为用户界面元素选择正确的颜色始终是一个很大的挑战 但是当您开发可重用的框架控件时 开发人员就无法控制使用它们的应用程序的外观和感觉 这甚至更具挑战性 尽管您可能总是将元素添加到默认的灰色背景之上 但是嵌入控件的开发人员可能更倾向于哥特式风格
  • Qt交叉编译到arm平台

    从网上下载对应版本的Qt源码 https download qt io archive qt 5 9 5 9 3 single 我下载的是5 9 3的版本 解压到ubuntu上 下载使用gcc 4 9 4编译器 并配置环境变量 尽量选择高版
  • 物联网技术在智慧城市建设应用中的难点与疑点

    物联网技术在智慧城市建设应用中的难点与疑点 本文由本人发表 中国安防 第141期 2017年7月刊智慧城市栏目 徐建明 佳都科技 18971024137 Xujianming pcitech com 一 引言 物联网 概念首先由美国麻省理工
  • 这些嵌入式系统安全性的知识你需要了解

    这可能是 工程师在面对嵌入式系统应用程序的安全性时可能提出的第一个问题 不幸的是 有大量的 安全软件包 可用 并且对安全性不熟悉的嵌入式工程师可能只将安全性称为加密或病毒防护 尽管加密是安全性的一种工具 而病毒扫描程序从技术上讲可以提供安全
  • 物联网毕业设计选题推荐100例

    文章目录 1 前言 2 选题分享 2 1 嵌入式方向 2 2 算法方向 2 3 移动通信方向 2 4 学长作品展示 2 选题技巧 2 1 如何避坑 重中之重 2 2 难度把控 2 3 题目名称 3 最后 1 前言 这是学长亲手整理的物联网相
  • 无线华为能连苹果不能连接到服务器,华为手机连苹果Mac,连不上?手把手教你...

    一直都用数据线 将华为手机里的内容保存到Mac中 作为备份 比如很多大的照片 用微信等一张张传 再一张张下载又容易失真 又耽误时间 所以还是直接读取手机的内容比较方便 最近才知道有华为分享这个方法 可是按照华为官方方法 长按手机 华为分享
  • STM32F103ZET6【标准库函数开发】------05.通用定时器TIM5四个通道输出PWM信号

    STM32有四个通用定时器 现在介绍TIM5输出4路PWM的方法 下面展示主要的time c main c函数的代码 include timer h void TIM5 PWM Init u16 arr u16 psc GPIO InitT