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. Mybatis-plus多数据源 + 数据库连接明文加密

    核心依赖 <!--mybatis-plus 核心组件--> <dependency> <groupId>com.baomidou</groupId> & ...

  2. ES文件传输助手1.0.0

    软件下载地址 1.软件功能 与 ES文件浏览器 的快传功能 直接传输文件 支持接受文件点击预览 可以多台电脑使用该软件,从而实现电脑与电脑局域网互传文件 单个文件夹上传会递归上传该文件夹下所有文件夹与 ...

  3. 8.一个项目实战(下载CSDN博客文章)

    专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...

  4. Oracle 一对多将多行数据整理为一行

    在开发中一对多的关系经常用到,昨天遇到一个客户问题,要求将所有反馈任务的信息整理为一行展示并导出excel. 我数据库对应关系:通任务task对应feedback表多个反馈,也就是说每个任务都有很多条 ...

  5. Pandas_1_预备知识

    Chapter1_Python基础 1.1 Python基础 推导式: 两个对象之间的映射关系,类似于实数之间关系变换的函数,只不过对象变成了矩阵. # Ex1-1 vacabulary = ['co ...

  6. python软件开发目录规范

    软件开发目录规范 1.文件及目录的名字可以变换 但是思想是不变的 分类管理 2.目录规范主要规定开发程序的过程中针对不同的文件功能需要做不同的分类 myproject项目文件夹 1,bin文件夹 -- ...

  7. TIE: A Framework for Embedding-based Incremental Temporal Knowledge Graph Completion 增量时序知识图谱补全论文解读

    论文网址:https://dl.acm.org/doi/10.1145/3404835.3462961 论文提出一种用增量学习思想做时序知识图谱补全(Temporal Knowledge Graph ...

  8. Python中open()文件操作/OS目录操作

    File对象测试数据的读写与操作 #def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, ...

  9. 浅谈入行Qt桌面端开发程序员-从毕业到上岗(1):当我们说到桌面端开发时,我们在谈论什么?

    谈谈我自己 大家好,我是轩先生,是一个刚入行的Qt桌面端开发程序员.我的本科是双非一本的数学专业,22年毕业,只是部分课程与计算机之间有所交叉,其实在我毕业的时候并没有想过会成为一名程序员,也没有想过 ...

  10. Introduction & Directory

    一个日常划水的高中生而已啦,我不会承认这个博客的CSS是copy的 一个貌似并不准确的图-- <算法竞赛进阶指南>学习: 动态规划: DP经典例题--LIS&LCS 洛谷题解: 搜 ...