stm32定时器输出六路pwm.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
定时器实验 一、 实验要求 编程序利用 STM32 的通用定时器TIM2 和 TIM3 产生六路 PWM 输出。 二、 实验原理 实验主要考察对 STM32F10X 系列单片机定时器的使用。 STM32F103 系列的单片机一共有 11 个定时器,其中:  2 个高级定时器  4 个普通定时器  2 个基本定时器  2 个看门狗定时器  1 个系统嘀嗒定时器 出去看门狗定时器和系统滴答定时器的八个定时器列表; 八个定时器分成 3 个组 TIM1 和 TIM8 是高级定时器 TIM2-TIM5 是通用定时器 TIM6 和 TIM7 是基本的定时器 这 8 个定时器都是 16位的,它们的计数器的类型除了基本定时器 TIM6 和 TIM7 都支持向上, 向下,向上/向下这3 种计数模式。 本次试验主要用到通用定时器 TIM2 和 TIM3。 通用定时器 (TIM2~TIM5)的主要功能: 除了基本的定时器的功能外,还具有测量输入信号的脉冲长度 ( 输入捕获) 或者产生输出波 形( 输出比较和 PWM)。 通用定时器的时钟来源; a:内部时钟(CK_INT) b:外部时钟模式 1:外部输入脚(TIx) c:外部时钟模式 2:外部触发输入(ETR) d:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器 通用定时期内部时钟的产生: 通用定时器(TIM2-5)的时钟不是直接来自APB1,而是通过APB1 的预分频器以后才到达定 时器模块。 当 APB1 的预分频器系数为 1 时,这个倍频器就不起作用了,定时器的时钟频率等于 APB1 的频率; 当 APB1 的预分频系数为其它数值(即预分频系数为 2、4、8 或 16)时,这个倍频器起作用, 定时器的时钟频率等于 APB1 时钟频率的两倍。 PWM 输出模式 ; STM32 的PWM 输出有两种模式: 模式 1 和模式 2,由 TIMx_CCMRx 寄存器中的 OCxM 位确定的(“110”为模式 1,“111”为模 式 2)。区别如下: 110:PWM 模式 1,在向上计数时,一旦 TIMx_CNT 在向下计数时,一旦 TIMx_CNT>TIMx_CCR1 时通道 1 为无效电平(OC1REF=0),否则为有效电 平 (OC1REF=1)。 111:PWM 模式 2-在向上计数时,一旦 TIMx_CNTTIMx_CCR1 时通道 1 为有效电平,否则为无 效电平。 由以上可知:模式 1 和模式 2 正好互补,互为相反,所以在运用起来差别也并不太大。而从 计数模式上来看,PWM 也和 TIMx 在作定时器时一样,也有向上计数模式、向下计数模式和 中心对齐模式 通用定时器 PWM 工作原理: 以PWM 模式 1 为例,定时器 2 向上计数,有效电平是高电平,定时器 2 的第 1 个 PWM 通道为 例:定时器 2 的第 1个 PWM 通道对应是 PA0 这引脚。 当定时器 2 的计数器(TIM2_CNT)刚开始计数的时候是小于捕获/比较寄存器(TIM2_CCR1) 的值,此时 PA0 输出高电平,随着计数器(TIM2_CNT)值慢慢的增加; 当计数器 (TIM2_CNT)大于捕获/比较寄存器 (TIM2_CCR1)的值时,这时 PA0 电平就会翻转, 输出低电平,计数器(TIM2_CNT)的值继续增加; 当 TIM2_CNT=TIM2_ARR 的值时,TIM2_CNT 重新回到 0 继续计数,PA0 电平翻转,输出高电平, 此时一个完整的PWM 信号就诞生了。 三、 程序分析 定时器配置函数为 TIM_PWM_Init() (详细见)。 配置函数首先使能 TIM2 和 TIM3 时钟: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE); 然后自动装载计数值,计数从 0 开始: = 999; 再对计时器进行预分频系数设置(这里不分频): = 0; 并将计数器设置为向上计数: = TIM_CounterMode_Up; 最后写入计时器配置寄存器,完成配置: TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 配置为 PWM 模式 1: = TIM_OCMode_PWM1; 设置跳变值: = CCRx_Val;

文档评论(0)

zhaoxiaomei1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

认证主体赵**

1亿VIP精品文档

相关文档

相关课程推荐