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 结构体的偏移量发送到汇编代码 例如 在我的 C 代码中 typedef struct unsigned int a unsigned int b CMyStruct 我向 ASM 函数发送一个 CMyStruct 结构的指针 假
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 使用 ARM NEON 内在函数添加 alpha 和排列

    我正在开发一个 iOS 应用程序 需要相当快地将图像从 RGB gt BGRA 转换 如果可能的话 我想使用 NEON 内在函数 有没有比简单分配组件更快的方法 void neonPermuteRGBtoBGRA unsigned char
  • ARM Cortex A8 PMNC 读取在启用后也给出 0.. 有什么想法/建议吗?

    MODULE LICENSE GPL MODULE DESCRIPTION user mode access to performance registers int init arm init void unsigned int valu
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

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

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统映像

    我的 M1 Macbook Pro 上的 Android Studio 可以很好地模拟 ABI arm64 v8a 的所有系统映像 API 24 29 30 31 但是 它无法使用 ABI armeabi v7a 运行所有映像 例如 API
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 设备树不匹配:.probe 从未被调用

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

    我有一个在基于 ARM Cortex M 的 MCU 上运行并用 C 和 C 编写的应用程序 我用gcc and g 编译它并希望完全禁用任何堆使用 在 MCU 启动文件中 堆大小已设置为 0 除此之外 我还想禁止代码中意外使用堆 换句话说
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • 直接写入 ARM Cortex A8 分支预测器中的全局历史缓冲区 (GHB) 或 BTB?

    我有兴趣直接修改 Cortex A8 上的 BTB 分支目标缓冲区 和 GHB 的内容 ARM 手册上有这样的内容 要在指令端 GHB 数组中写入一项 例如 LDR R0 0x3333AAAA MCR p15 0 R0 c15 c1 0 M

随机推荐

  • 毕业两年月薪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