STM32F4库函数初始化系列:PWM输出
1 void _TIM4_Configuration(void)
2 {
3 /* TIM4 Configuration ---------------------------------------------------
4 Generates 7 PWM signals with 4 different duty cycles:
5 TIM4CLK = 72 MHz, Prescaler = 0, TIM4 counter clock = 72 MHz
6 TIM4 frequency = TIM4CLK/(TIM4_Period + 1) = 17.57 KHz
7 - TIM4 Channel1 & Channel1N duty cycle = TIM4->CCR1 / (TIM4_Period + 1) = 50%
8 - TIM4 Channel2 & Channel2N duty cycle = TIM4->CCR2 / (TIM4_Period + 1) = 37.5%
9 - TIM4 Channel3 & Channel3N duty cycle = TIM4->CCR3 / (TIM4_Period + 1) = 25%
10 - TIM4 Channel4 duty cycle = TIM4->CCR4 / (TIM4_Period + 1) = 12.5%
11 ----------------------------------------------------------------------- */
12 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
13 TIM_OCInitTypeDef TIM_OCInitStructure;
14
15 /* Time Base configuration */
16 TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock/880000/2)-1; //2000000
17 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
18 TIM_TimeBaseStructure.TIM_Period = 1023;
19 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV4;
20 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
21
22 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
23
24 TIM_ARRPreloadConfig(TIM4, ENABLE);
25
26 TIM_OCStructInit(&TIM_OCInitStructure);
27
28 /* Channel 1, 2,3 and 4 Configuration in PWM mode */
29 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
30 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
31 TIM_OCInitStructure.TIM_Pulse = 0;
32 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
33 TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
34
35 TIM_OC1Init(TIM4, &TIM_OCInitStructure);
36 TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
37
38 TIM_OCInitStructure.TIM_Pulse = 0;
39 TIM_OC2Init(TIM4, &TIM_OCInitStructure);
40 TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
41
42 TIM_OCInitStructure.TIM_Pulse = 0;
43 TIM_OC3Init(TIM4, &TIM_OCInitStructure);
44 TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
45
46 TIM_OCInitStructure.TIM_Pulse = 0;
47 TIM_OC4Init(TIM4, &TIM_OCInitStructure);
48 TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
49
50 /* TIM4 counter enable */
51 TIM_Cmd(TIM4, ENABLE);
52
53 /* TIM4 Main Output Enable */
54 TIM_CtrlPWMOutputs(TIM4, ENABLE);
55 }
56
57 void _TIM8_Configuration(void)
58 {
59 /* TIM8 Configuration ---------------------------------------------------
60 Generates 7 PWM signals with 4 different duty cycles:
61 TIM8CLK = 72 MHz, Prescaler = 0, TIM8 counter clock = 72 MHz
62 TIM8 frequency = TIM8CLK/(TIM8_Period + 1) = 17.57 KHz
63 - TIM8 Channel1 & Channel1N duty cycle = TIM8->CCR1 / (TIM8_Period + 1) = 50%
64 - TIM8 Channel2 & Channel2N duty cycle = TIM8->CCR2 / (TIM8_Period + 1) = 37.5%
65 - TIM8 Channel3 & Channel3N duty cycle = TIM8->CCR3 / (TIM8_Period + 1) = 25%
66 - TIM8 Channel4 duty cycle = TIM8->CCR4 / (TIM8_Period + 1) = 12.5%
67 ----------------------------------------------------------------------- */
68 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
69 TIM_OCInitTypeDef TIM_OCInitStructure;
70
71 /* Time Base configuration */
72 TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock/880000)-1; //2000000
73 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
74 TIM_TimeBaseStructure.TIM_Period = 1023;
75 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV4;
76 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
77
78 TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
79
80 TIM_ARRPreloadConfig(TIM8, ENABLE);
81
82 TIM_OCStructInit(&TIM_OCInitStructure);
83
84 /* Channel 1, 2,3 and 4 Configuration in PWM mode */
85 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
86 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
87 TIM_OCInitStructure.TIM_Pulse = 0;
88 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
89 TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
90
91 TIM_OC1Init(TIM8, &TIM_OCInitStructure);
92 TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);
93
94 TIM_OCInitStructure.TIM_Pulse = 0;
95 TIM_OC2Init(TIM8, &TIM_OCInitStructure);
96 TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);
97
98 TIM_OCInitStructure.TIM_Pulse = 0;
99 TIM_OC3Init(TIM8, &TIM_OCInitStructure);
100 TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
101
102 TIM_OCInitStructure.TIM_Pulse = 0;
103 TIM_OC4Init(TIM8, &TIM_OCInitStructure);
104 TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);
105
106 /* TIM8 counter enable */
107 TIM_Cmd(TIM8, ENABLE);
108
109 /* TIM8 Main Output Enable */
110 TIM_CtrlPWMOutputs(TIM8, ENABLE);
111 }
112
113 TIM_SetCompare1( TIM4,500 );
STM32F4库函数初始化系列:PWM输出的更多相关文章
- Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(七) STM32F4基于HAL的PWM和定时器
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- 关于普通定时器与高级定时器的 PWM输出的初始化的区别
不管是普通定时器还是高级定时器,你用哪个通道,就在程序里用OC多少.比如CH3对应OC3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_ ...
- STM32 HAL库学习系列第4篇 定时器TIM----- 开始定时器与PWM输出配置
基本流程: 1.配置定时器 2.开启定时器 3.动态改变pwm输出,改变值 HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); 函数总结: __HAL_TIM ...
- 关于STM32CubeMX使用LL库设置PWM输出
HAL和LL库 HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于fla ...
- STM32 PWM输出(映射)
STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4 ...
- STM8 关闭PWM输出后的电平输出问题解决
STM系列的单片机PWM输出如果被关断比如用TIM1_CtrlPWMOutputs进行停止输出后,电平的高低处于不确定的状态. 他取决于: 1.GPIO初始化的特性 2.关断那一刻时的电平 3.CCM ...
- 合宙AIR105(三): 定时器, 定时器中断和PWM输出
目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 Ai ...
- 16路PWM输出的pca9685模块
今天要介绍的就是该模块,该模块是16路pwm模块,使用I2C总线可以控制16路舵机(led). 接线OE空着就可以,其他VCC是芯片供电+5,SCL时钟线,SDA信号线,GND地线. 芯片介绍可以看: ...
- TIMER门控模式控制PWM输出长度
TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TI ...
随机推荐
- warning: ‘setAxisX‘ is deprecated
解决 将 chart->setAxisX(valueAxisX,lineSeries); 改为: chart->addSeries(lineSeries); chart->creat ...
- CheckBox 单选实现及取值
<input name="ck" type="checkbox" value="1"/><span>按计划进行< ...
- KVC原理与数据筛选
作者:宋宏帅 1 前言 在技术论坛中看到一则很有意思的KVC案例: @interface Person : NSObject @property (nonatomic, copy) NSString ...
- Day30:ArrayList详解
ArrayList 1.1 集合概述 当我们要存储多个数据时,固定长度的数组存储格式已经满足不了我们的需要了,且不能满足变化的需求: Java中集合类则可以解决我们的需求 特点:提供一种存储空间可变的 ...
- 学生管理系统Python
student1=[ {1:'lucy','age':17,'sex':'n','Pnum':1111111}, {2:'tom','age':17,'sex':'m','Pnum':2222222} ...
- .NET 6 中外部引用项目NU1105异常问题解决
.NET 6 Project中,添加了其他解决方案的工程后,本地能编译通过,代码签入后,其他同事下载代码,编译报错: 错误 NU1105 找不到"E:\Teld\01Code\TTP_CTP ...
- Linux命令第三部分
一.命令 1.mv命令 ·不更改文件路径 改名 ·更改文件路径 剪切 mv [选项] 源文件或目录 目标文件或目录 2.which 查找命令.文件存放目录 搜索范围由环境变量PATH决定 3. ...
- 运行typhoon程序的三种方式
cmd直接编写运行:用于较短 临时执行的代码 解释器命令运行:可以编写较长的代码 并且可以长久保存 利用IDE工具编写:IDE开发者工具自动提示 携带各种功能插件 编写代码效率更高更快
- Burp Suite进阶
1.Scanner Burp Scanner主要用于自动检测Web系统的各种漏洞. 首先,确认Burp Suite正常启动并完成浏览器代理的配置.然后进入Burp Proxy,关闭拦截代理功能,快速浏 ...
- vue项目封装 axios 和 api
一,utils文件夹下新建一个request.js文件 import axios from 'axios'; import QS from 'qs'; import { Toast } from 'v ...