STM32f103ZET6 TIM8输出PWM波形

定时器8属于高级定时器,只存在于大容量产品的103系列中,定时器8输出PWM波形时与通用定时器2、3、4、5不同,必须同时开启主输出(TIM8->BDTR|=0x8000;)才能产生PWM波,其配置如下:

 1 /*********************************************
 2     函数名称:void TIM4_PWM_Init(u16 arr,u16 psc)
 3     功        能:通用TIM4 CH1(PB6) CH2(PB7)PWM输出初始化
 4     入        参:arr:自动重装值。
 5                         psc:时钟预分频数
 6     返        回:无
 7 【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 )
 8 *********************************************/
 9 void TIM4_PWM_Init(u16 arr,u16 psc)
10 {
11     RCC->APB1ENR|=1<<2;         //TIM4时钟使能
12     RCC->APB2ENR|=1<<3;        //使能PORTB时钟
13
14     GPIOB->CRL&=0X00FFFFFF;    //PB6 7 输出
15     GPIOB->CRL|=0XBB000000;    //复用功能输出
16
17     TIM4->ARR=arr;                //设定计数器自动重装值
18     TIM4->PSC=psc;                //预分频器分频设置
19
20     TIM4->CCMR1|=6<<4;      //CH1 PWM1模式
21                                                 //6: PWM1模式, 正脉冲
22                                                 //7: PWM2模式, 负脉冲
23     TIM4->CCMR1|=1<<3;         //CH1 预装载使能
24     TIM4->CCER|=1<<0;       //OC1 输出使能
25
26     TIM4->CCMR1|=6<<12;      //CH2 PWM1模式
27     TIM4->CCMR1|=1<<11;     //CH2 预装载使能
28     TIM4->CCER|=1<<4;       //OC2 输出使能
29
30     TIM4->CR1=0x0080;       //ARPE使能
31     TIM4->CR1|=0x01;        //使能定时器4
32 }
33 /*********************************************
34     函数名称:TIM8_PWM_Init
35     功        能:通用TIM8 CH1(PC6) CH2(PC7)PWM输出初始化
36     入        参:arr:自动重装值。
37                         psc:时钟预分频数
38     返        回:无
39 【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 )
40 *********************************************/
41 void TIM8_PWM_Init(u16 arr,u16 psc)
42 {
43     RCC->APB2ENR|=1<<13;         //TIM8时钟使能
44     RCC->APB2ENR|=1<<4;        //使能PORTC时钟
45
46     GPIOC->CRL&=0X00FFFFFF;    //PC6 7 输出
47     GPIOC->CRL|=0XBB000000;    //复用功能输出
48
49     TIM8->ARR=arr;                //设定计数器自动重装值
50     TIM8->PSC=psc;                //预分频器分频设置
51
52     TIM8->CCMR1|=6<<4;      //CH1 PWM1模式
53                                                 //6: PWM1模式, 正脉冲
54                                                 //7: PWM2模式, 负脉冲
55     TIM8->CCMR1|=1<<3;         //CH1 预装载使能
56     TIM8->CCER|=1<<0;       //OC1 输出使能
57
58     TIM8->CCMR1|=6<<12;      //CH2 PWM1模式
59     TIM8->CCMR1|=1<<11;     //CH2 预装载使能
60     TIM8->CCER|=1<<4;       //OC2 输出使能
61
62     TIM8->CR1=0x0080;       //ARPE使能
63     TIM8->BDTR|=0x8000;        //主输出使能
64     TIM8->CR1|=0x01;        //使能定时器8
65 }

原文地址:https://www.cnblogs.com/ivan0512/p/8146470.html

时间: 2024-11-07 14:15:30

STM32f103ZET6 TIM8输出PWM波形的相关文章

STM32F4_TIM输出PWM波形(可调频率、占空比)

Ⅰ.概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述. 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下实例中1KHz.20%占空比波形图 TIM2_CH2_PWM(1000, 20); 关于本文的更多详情请往下看. Ⅱ.实例工程下载 笔者针对于初学者提供的例程都是去

基于STM32F030F4P9和STM32 CUBEMX 输出PWM波形

STM32F030F4P9定时器功能比较丰富,在此记录项目中使用其自动输出PWM波形(频率:50HZ).CubeMX配置定时器如下图说明. 在此定时器基础时钟为48MHZ,配置中不做分频处理,预分频系数为48,定时器计数器寄存器为20000,可求得周期为: T = ( ( 1 / (48Mhz / 48) ) * 20000) = 20ms 在PWM输出配置选项中,改变Pulse可改变PWM的占空比.CH Polarity配置当计数器中的值小于Pulse时,输出高电平, CH Idle Stat

在Keil中做stm32的软件仿真,查看输出PWM波形时,在逻辑分析仪中规定IO口signal,出现&quot;unknow signal&quot;

文章源地址:http://blog.sina.com.cn/s/blog_dc9244010102vtn1.html 最近在学习STM32的PWM波输出,由于手中没有示波器,于是按照野火的教程使用软件仿真,使用MDK5自带的逻辑分析仪观察波形,前边一路顺利,在打开逻辑分析仪往里添加signal时,问题出现了——Unknown Signal!信号无法添加进去.在百度文库看到一篇关于MDK460相关问题的解决方案,于是我抱着试一试的态度,试了一试,结果挺好的,于是想到了和大家分享一下. 1.错误提示

STM32F0xx_TIM输出PWM配置详细过程

前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq, uint16_t Dutycycle)”传入频率和占空比就能输出指定的波形. 我提供的软件工程直接调用是比较简单就能实现想要的PWM波形.但是,如果你是学习者,建议还是进去函数把每一个细节了解清楚,里面的东西可能对你掌握TIM很有帮助. 本着免费分享的原则,如果你觉得分享的内容对你有用,认可我分

STM32定时器输出PWM频率和步进电机控制速度计算

1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线 从STM32F4的内部时钟树可知: 当APB1和APB

控制AVR单片机5路PWM波形

现开发了单片机控制5路PWM波形,也可以同时控制15路直流三色灯板,按触摸屏顺序点亮的电路和程序,供大家参考. 电路为 单片机ATMEGA128控制5路PWM方波,按照74HC08逻辑编码输出15路PWM信号,一次按照迪文触摸屏点亮3种颜色灯板的5路发光信号.ULN2003提供12V电压.每个灯板通过一个CMOS管IR3205输出功率.一个74HC08通过一路PWM,这路PWM通过74HC08控制的继电器控制IR3205的开关,进而控制24V,13V,36V灯板的开关,灯板的亮度通过PWM波形的

如何准确输出PWM脉冲个数的方法

输出PWM部分照常来,数个问题交给定时器,看你PWM的周期,想要多少个就多少个周期,时间到了就把占空比调到满值就行了

STM32输出PWM

最近要用STM32来输出PWM,花了一个晚上写完了,记录一下 (我用的是STM32F303CCT6) 1.打开定时器时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 2.打开输出引脚的GPIO时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); 3.配置相应引脚为 AF模式(具体AFx要看手册) GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, G

基于小脚丫DDS 调频 调幅 调相 切换波形 AD5601输出模拟波形

先讲讲里面的矩阵键盘,矩阵键盘列有下拉电阻,默认全为0000,默认行输入为1111,当有按键按下的时候,列输入会被拉高,这时控制行的输出做行扫描,电子琴用key_flag_r0电平作为使能,这里用key_flag消抖后与键值进行按位与,作为相应按键的判断条件. module juzhen(input clk,input rst_n,input [3:0] col_data,output reg [3:0] row_data,output key_flag, //the mark of key i