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输出的更多相关文章

  1. Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  2. Keil MDK STM32系列(七) STM32F4基于HAL的PWM和定时器

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  3. 关于普通定时器与高级定时器的 PWM输出的初始化的区别

    不管是普通定时器还是高级定时器,你用哪个通道,就在程序里用OC多少.比如CH3对应OC3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  TIM_ ...

  4. STM32 HAL库学习系列第4篇 定时器TIM----- 开始定时器与PWM输出配置

    基本流程: 1.配置定时器 2.开启定时器 3.动态改变pwm输出,改变值  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); 函数总结: __HAL_TIM ...

  5. 关于STM32CubeMX使用LL库设置PWM输出

    HAL和LL库 HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于fla ...

  6. STM32 PWM输出(映射)

    STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4 ...

  7. STM8 关闭PWM输出后的电平输出问题解决

    STM系列的单片机PWM输出如果被关断比如用TIM1_CtrlPWMOutputs进行停止输出后,电平的高低处于不确定的状态. 他取决于: 1.GPIO初始化的特性 2.关断那一刻时的电平 3.CCM ...

  8. 合宙AIR105(三): 定时器, 定时器中断和PWM输出

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 Ai ...

  9. 16路PWM输出的pca9685模块

    今天要介绍的就是该模块,该模块是16路pwm模块,使用I2C总线可以控制16路舵机(led). 接线OE空着就可以,其他VCC是芯片供电+5,SCL时钟线,SDA信号线,GND地线. 芯片介绍可以看: ...

  10. TIMER门控模式控制PWM输出长度

    TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TI ...

随机推荐

  1. 华为云平台部署教程之CNA\VRM的安装

    本教程仅含华为云平台搭建部署中CNA和VRM的安装,请按需求选择查看本文. 一.前期准备 1.硬件 服务器*4 交换机*3 网线 个人PC机 2.软件 PC机系统(win7/win10) KVM软件 ...

  2. PDF、视频格式缩略图获取(pdf2img)

    PDF.视频格式缩略图获取(pdf2img) 获取pdf缩略图 导入依赖: <dependency> <groupId>org.apache.pdfbox</groupI ...

  3. AI赋能音乐创作,人人都是音视频创作者

    华为HMS Core音频编辑服务(Audio Editor Kit)依托自身AI技术的研发优势,上线全新的歌声合成音色及伴奏,给音视频创作者提供更多的创作可能.在短视频场景中,用户自定义歌词的歌声结合 ...

  4. c++详细学习——引用

    1 引用(reference) 引用是一个变量的别名,故引用在申明的时候必须给初始值,从此他们就建立了"不能离婚的婚姻关系",改变引用就会改变被引用的原变量 1 int main( ...

  5. Kubernetes(K8S) 配置管理-ConfigMap 介绍

    作用:存储不加密数据到 etcd,让 Pod 以变量或者 Volume 挂载到容器中 场景:配置文件 创建配置文件 redis.properties redis.host=127.0.0.1 redi ...

  6. js-day01-商品订单信息

    学会表格表单(html+css) 表格的默认CSS属性 *{             margin: 0;             padding: 0;         }         tabl ...

  7. 【每日一题】【双指针、位运算】2022年2月3日-NC103 反转字符串

    描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1000) 答案:双指针 import java.util.*; public class Solution { ...

  8. 【每日一题】【字符串与数字互转】【去除空格】【大数处理】2021年12月12日-8. 字符串转换整数 (atoi)

    请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) 的算法如下: ...

  9. 单节锂电池充电管理芯片,IC电路图

    PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器.PW4054 适合给 USB 电源以及适配器电源供电.基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测 ...

  10. 洛谷P1434例题分析

    [SHOI2002] 滑雪 题目描述 Michael 喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mic ...