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. KafkaOffsetMonitor:监控消费者和延迟的队列

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 目录 消费者组列表 消费组的topic列表 图中参数含义解释如下: topic的历史位置 O ...

  2. 【Java并发007】原理层面:ReentrantLock中lock()、unlock()全解析

    一.前言 Java线程同步两种方式,synchronized关键字和Lock锁机制,其中,AQS队列就是Lock锁实现公平加锁的底层支持. 二.AQS源码对于lock.lock()的实现 2.1 AQ ...

  3. vscode配置remote ssh

    前言 简单用vscode配置 remote ssh可以实现,通过ssh 在线使用vscode编辑文件,很方便,也遇到一些坑. 安装插件 设置界面 右键最左边tab栏: 勾选 远程资源管理器 添加远程服 ...

  4. Oracle 两字符串相似度比较

    select SYS.UTL_MATCH.edit_distance_similarity('为中华之举起而读书','为中华') from dual;

  5. orcl rollup 分组小计、合计

    表数据: select * from group_test; 分组小计.合计: select group_id, decode(concat(job, group_id), null, '合计', g ...

  6. Day29 Linux相关命令的使用

    今日内容 基本概念 安装 基本命令 在linux上安装软件 jdk mysql jdk Nginx的安装 一.概述 1.Unix linux基于Unix,Unix由贝尔实验室在1969年开发 一开始由 ...

  7. Java面试多线程/JUC等知识

    2021年6月30日完成此部分内容整理

  8. mysql基础问题三问(底层逻辑;正在执行;日志观察)

    背景:经常面试会遇到且实际工作中也会应用到的三个场景: 目录: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - ...

  9. centos7安装MySql8.0.29教程

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying @ 目录 1 安装之前检测系统是否有自带的MySQ ...

  10. 【转载】【WinAPI】LockWindowUpdate的函数的用法

    DelPhi LockWindowUpdate的函数的用法 Application.ProcessMessages; LockWindowUpdate(Self.Handle); //锁住当前窗口 L ...