STM32F103之Timer2PWM输出

发布者:Delightful789最新更新时间:2020-02-10 来源: eefocus关键字:STM32F103  Timer2  PWM输出 手机看文章 扫描二维码
随时随地手机看文章

一、简介


本文以STM32F103编程为例,介绍STM32F103Timer2 PWM输出。


二、实验平台


电脑平台:Windows7 64位旗舰


编译软件:IAR


硬件平台:STM32F103CB


三、版权声明


四、实验前提


1、在进行本文步骤前,请先安装IAR Embedded Workbench 5.4版本;准备好STM32F103CB硬件平台。


五、基础知识


暂无


六、源码地址


暂无


七、关联文章


暂无


八、实验内容


1.初始化Timer2,初始化时需先开起相关时钟


void Hal_Init_Pwm(uint16 period,uint16 Prescaler)

{  

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /*开定时器2时钟*/

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /*GPIO时钟开启*/

  

  /*引脚配置*/

  GPIO_InitTypeDef        GPIO_InitStructure;                   /*配置GPIO*/

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                /*复用输出*/

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);  

  /*配置TIMER2*/

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;                  /*配置TIMER2*/

  TIM_DeInit(TIM2);                                               /*初始化定时器2*/

  TIM_TimeBaseStructure.TIM_Period = period;                      /*重装值 计数到最大为3600-1 然后从0开始*/

  TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;                /*分频系数*/

  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        /*时钟分割*/

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;     /*向上计数*/

  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;  

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /*配置TIMER2PWM输出*/

  TIM_OCInitTypeDef       TIM_OCInitStructure;                    /*配置TIMER2PWM输出*/

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;               /*PWM2模式输出*/

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   /*比较输出使能*/

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;        /*输出极性高 输出高电平*/

  /*通道1*/

//  TIM_OCInitStructure.TIM_Pulse =40*36;

//  TIM_OC1Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);

  /*通道2*/

  TIM_OCInitStructure.TIM_Pulse =0;           /*设置占空比*/

  TIM_OC2Init(TIM2, &TIM_OCInitStructure);         /*初始化外设TIMx 通道*/

  TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);/*CH1预装载使能*/

  /*通道3*/

//  TIM_OCInitStructure.TIM_Pulse =90*36;       

//  TIM_OC3Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);

  /*通道4*/

//  TIM_OCInitStructure.TIM_Pulse =0*36;

//  TIM_OC4Init(TIM2, &TIM_OCInitStructure);

//  TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM2, ENABLE);   /*使能TIMx在ARR上的预装载寄存器*/

  TIM_Cmd(TIM2, ENABLE);                /*使能定时器2*/

}

 

2.编写主函数


void main(void)

{

  Init_Clock();                  /*初始化时钟*/

  Hal_Init_Pwm(64000-1,0);       /* F =  PLL / (64000-1) */

  TIM_SetCompare2(TIM2,50*640);  /*输出占空比为50%*/

  while(1);

}

关键字:STM32F103  Timer2  PWM输出 引用地址:STM32F103之Timer2PWM输出

上一篇:STM32F103之IAR调试配置
下一篇:STM32F103之IAR添加scanf

推荐阅读最新更新时间:2024-11-04 22:04

STM8S003F3 使用TIM1_CH1与TIM1_CH2配置PWM输出
最近一个项目,用的是STM8S003F3这款小型的MCU,使用TIM1_CH1 TIM_CH2作为PWM输出时,遇到了问题,代码下载后,PWM是没有任何输出的。用示波器看,应该是PWM没有任何输出。 首先在网上找了下资料,又看了官方的例程,感觉代码没有问题。后来仔细查看问题,终于找到解决的方案。 原来根据STM8S003F3的数据手册,需要配置一个选项字节才能使能TIM1_CH1与TIM1_CH2。 配置的方法有两种: (1)使用STVP(STM32与STM8)烧写的软件,在烧写固件时,配置一下,下载到芯片,其实这个保存在DataFlash中,理论上配置一次,再使用ST-LINK下载,就一直生效。 (2)方法二,
[单片机]
STM8S003F3 使用TIM1_CH1与TIM1_CH2配置<font color='red'>PWM</font><font color='red'>输出</font>
STM32F103 5个串口同时使用
硬件平台:STM32F103(自带5串口) 5个串口同时工作不丢包-_- 相关宏定义 typedef enum { UartPort1, UartPort2, UartPort3, UartPort4, UartPort5, UartPort_USB, }UARTPORT; #define RXTIMEOUT 10 // 接收超时时间,如10mSec内未接收任何数据,当作一个接收包 #define UART_TXBUFFERLEN 0x100 //发送缓冲区大小 #define UART_RXBUFFERLEN 0x400 //接接缓冲区大小 typede
[单片机]
STM32F107高级定时器TIM1使用互补PWM输出
学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考。Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定时器,2—5是通用定时器。从名字就可以看得出来主要功能上的差异。今天我主要是用定时器做pwm输出,所以总结也主要是针对pwm方面的。 先大致说下通用和高级定时器的区别。通用的可以输出四路pwm信号互不影响。高级定时器可以输出三对互补pwm信号外加ch4通道,也就是一共七路。 所以这样算下来stm32一共可以生成4*5+7*2=30路pwm信号。接下来还有功能上的区别:通用定时器的pwm信号比较简单,就是普通的调节占空比调节频率(别的不常用到的没去深究);高级定时器的还带有
[单片机]
STM8S TIM2 输出PWM初始化函数
参考网上例程总结出初始化函数 #define TIM2_CLK 16000000 void timer2_Init(char channal, ulong hz,int pwm) { TIM2_ARRH = (TIM2_CLK/hz)/256; TIM2_ARRL = (TIM2_CLK/hz)%256; switch (channal) { case 1:{ TIM2_CCMR1 |= 0x70; TIM2_CCER1 |= 0x03; //通道1使能,低电平有效,配置为输出 TIM2_CCR1H = (((TIM2_CLK/hz)*pwm)/1000)/256;
[单片机]
STM32F103跳过停止模式,不能进入停止模式
问题: STM32F103跳过停止模式,不能进入停止模式stopmode static void led_thread_entry(void* parameter) { unsigned int count = 0; rt_hw_led_init(); while(1) { rt_hw_led_on(0); rt_thread_delay(RT_TICK_PER_SECOND / 2); rt_hw_led_off(0); rt_thread_delay(RT_TICK_PER_SECOND / 2); { //失能 SysTic
[单片机]
<font color='red'>STM32F103</font>跳过停止模式,不能进入停止模式
MSP430F149单片机能输出多少路PWM波?
在使用430的PWM波的时候,我一直有一个困惑,那就是它到底能输出几路PWM波?我想别的朋友可能也有相同的困惑,在我查找了好多资料之后最终搞懂了,下面分享一下学习经验。 首先,MSP430F149有两个16位的定时器Timer_A和Timer_B,其中TA有3个捕获比较单元,TB有7个捕获比较单元,产生PWM波需要将定时器配置在比较模式下,刚开始我以为既然TA有三个捕获比较模块,那么就应该有三个PWM波,结果怎么配置都无法产生TA1,后来在我仔细查看User's Guide才弄懂了,下面先上图: 上图说道:每个捕获、比较模块的输出可以产生PWM信号,每个输出根据EQU0和EQUX可以配置为8种模式。 我们知道每
[单片机]
MSP430F149单片机能<font color='red'>输出</font>多少路<font color='red'>PWM</font>波?
一种 keil5 锁一种 keil5 锁死 STM32F103C8T6的
先前 画的一款 电机驱动板, 今天总算有时间调试了,,, 效果如上, 实验室里面的洗板水用没了。。。。 没有办法收拾的干净了, LED 没了。。。 接线端子 开关也没了。。。 条件很艰苦 进入 正题 , 上图主控是 STM32F103C8T6 就是网上卖的最便宜的那种。出现的问题时 keil 下载不进去程序。提示是这样玩的 我先用j-link 自带的工具j-flash 进行了测试 确定了 芯片是可以通讯 并且可以进行 hex文件的烧录的。 这样定位问题应该是keil 的配置出了问题。 keil 也不是一直出问题。 某一次 也是可以下载的。 经过多次尝试,我发现 当我用 j-flash 擦除芯片 并且解锁 unsec
[单片机]
一种 keil5 锁一种 keil5 锁死 <font color='red'>STM32F103</font>C8T6的
stm32f103zet6引脚图及引脚定义
  stm32f103zet6是一种嵌入式-微控制器的集成电路(IC),是由ST公司开发的STM32F1系列的其中一种,芯体尺寸是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K。   stm32f103zet6详细参数如下:      stm32f103zet6引脚图如下:   stm32f103zet6引脚定义如下:   1. I = 输入,O = 输出,S = 电源, HiZ = 高阻   2. FT:容忍5V   3. 有些功能仅在部分型号芯片中支持。   4. PC13,PC14和PC15引脚通过电源开关进行供电,而这个电源开关只能够吸
[单片机]
<font color='red'>stm32f103</font>zet6引脚图及引脚定义
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved