stm32定时器笔记.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32定时器笔记

无疑STM32的定时器是复杂的,主要有定时,捕获,PWM产生功能。我花了点时间看通用定时器2,3,4的框图,tim1则在通用定时器的基础上多加了些功能,称为高级定时器。 //////////////////////////////////////////////////////////////////////////////// 根据程序来分析: /////////////定时器2配置500ms/////////////////////////////////////////////////////// ?? TIM_DeInit TIM2 ;//TIM2,3,4:SystemClk APB1 Max36Mhz RCC- APB1ENR | RCC_APB1ENR_TIM2EN; //使能TIM2的时钟 ?? //////////定时器2配置/////////////////////////////// ?? //计划:PSC 349 则 CK_CNT 36Mhz/ 349+1 10us ?? // ARR 50 000 1us * 50 000 50ms m_TIM_TimeBaseInitTypeDef.TIM_Prescaler 349; //预分频??? PSC 0-65535 m_TIM_TimeBaseInitTypeDef.TIM_CounterMode TIM_CounterMode_Up; //计数模式 ?? m_TIM_TimeBaseInitTypeDef.TIM_Period 50000; //自动重载 ARR 0-65535 m_TIM_TimeBaseInitTypeDef.TIM_ClockDivision TIM_CKD_DIV1; //时钟分频因子1,2,4 ?? m_TIM_TimeBaseInitTypeDef.TIM_RepetitionCounter 0;//循环计数次数 只是TIM1,8有 TIM_TimeBaseInit TIM2,m_TIM_TimeBaseInitTypeDef ; ?? //////////////////////////////////////////////////// ?? //使能配置中断 :使能更新事件中断 ?? TIM_ITConfig TIM2,TIM_IT_Update,ENABLE ;//Enables or disables the specified TIM interrupts. ?? //注意TIM_UpdateDisableConfig 用DISABLE函数处才将对应为清零而达到使能 UDIS 0:使能更新事件 TIM_UpdateDisableConfig TIM2,DISABLE ;//Enables or Disables the TIMx Update event. NVIC- ISER[0] | 1 TIM2_IRQChannel 0x1F ; // enable interrupt ?? //开始计数 ?? TIM_Cmd TIM2,ENABLE ;//Enables or disables the specified TIM peripheral. ?? 首先在在定时功能上和传统的51,avr比,多了些功能,其他的一样。其输入时钟源为APB1/2,等同51,avr的系统时钟。忘了51,至少avr有时钟分频功能,stm32也有在函数配置中TIM_ClockDivision TIM_CKD_DIV1; // 时钟分频因子1,2,4 在时钟输入上,时钟多了个选择TIM_Prescaler(预分频),这个的加入灵活性加大,它可以是0-65535的任意值,则预传统的只能几个选择则体现了配置的灵活和实用。 //?m_TIM_TimeBaseInitTypeDef.TIM_Prescaler 349; //?m_TIM_TimeBaseInitTypeDef.TIM_ClockDivision TIM_CKD_DIV1; 再说:51,avr的计数器初值,也是决定定时大小的一个因素。具体实现:就是计数器计数自减或者增加到某个值,发生溢出中断,在自加的时候是从初值加到满值 溢出。自减时,是从初值减到0溢出,发生中断,在每次定时完毕的定时器溢出后,其初值需要在中断函数中重新赋值给计数器。 在stm32中也是有个同样的功能,但是这儿是不同的。在自加的时候,从0开始,直到寄存器TIMx_ARR值大小产生溢出中断,自减是从TIMx_ARR值大小开始自动减直到0溢出,不通点1。在进入中断后,中断函数一个更新事件,这个更新事件将自动重载TIMx_ARR到计数器,这一点与51中的自动重载类似. //m_TIM_Ti

文档评论(0)

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

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

1亿VIP精品文档

相关文档