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. Day17:稀疏数组的超细详解

    稀疏数组的超细详解 一个含有大量重复元素的二维数组,我们可以提取其有效元素,压缩空间,整合为一个稀疏数组. 例如一个五子棋棋盘,我们将棋盘看作为一个二维数组,没有棋子的位置为0:黑棋为1:白棋为2: ...

  2. PEP8语法规范解释说明

    PEP8规范解析 内容概要: 1.PEP8规范是什么? 2.PEP8相关内容 1.PEP8规范是什么 PEP是Python Enhancement Proposal的缩写,翻译为:"Pyth ...

  3. 4.10:Spark之wordcount

    〇.概述 1.拓扑结构 2.目标 使用spark完成计数实验 一.启动环境 二.新建数据文件 三.查看文件内容 四.启动spark服务 五.编写代码 复制以下代码到shell中(复制后在终端右键-&g ...

  4. python重要内置模块

    目录 包的概念 包的具体使用 编程思想的转变 常用内置模块之collections模块 (收集) 常用内置模块之time模块 (时间) 常用内置模块之random模块 (随机) os模块 sys模块 ...

  5. Vue GET xxxx/sockjs-node/info?t=1573626343344 net::ERR_CONNECTION

    看了很多资料,都说是关闭热更新要么注释掉代码完美解决.我寻思这不就没有热更新功能了吗. 不妨试试检查下项目端口是否一致,然后查看下请求地址是否是本地地址.有可能是因为被shadowsocket代理了 ...

  6. 使用 SSH 连接 Git 服务器

    关于 SSH SSH (Secure Shell) 是一种安全的远程登录协议,可以让你通过安全的加密连接进行远程登录.目前,Mac.Windows 10.Linux 系统均有内置 OpenSSH 客户 ...

  7. 回溯法求解n皇后问题(复习)

    回溯法 回溯法是最常用的解题方法,有"通用的解题法"之称.当要解决的问题有若干可行解时,则可以在包含问题所有解的空间树中,按深度优先的策略,从根节点出发搜索解空间树.算法搜索至解空 ...

  8. Linux NTP工具的基本使用

    NTP 时间同步 NTP(Network Time Protocol)协议,网络时间协议.利用ntp协议可以实现网络中的计算机时间同步. 实现NTP协议的工具: ntpdate:只能同步一次时间 nt ...

  9. java中的杨辉三角

    本文主要介绍如何打印杨辉三角(直角三角形),如下图所示: 规律如下: 第一行全为1,对角线元素全为1,设i表示行标,j表示列标. arr[i][0] = 1; arr[i][i] = 1; 当i &g ...

  10. SpringBoot基础学习笔记

    Springboot框架: springboot官网参考 Sringboot是整合spring技术栈的一站式框架,其简化配置,实现了自动化配置 Springboot基础结构: 1.pom.xml文件: ...