历史上的今天
返回首页

历史上的今天

今天是:2025年02月14日(星期五)

正在发生

2019年02月14日 | STM32定时器中断实验-TIM3

2019-02-14 来源:eefocus

1、参考资料

      《STM32F1开发指南-库函数版本》-第13章 定时器中断时实验

      《STM32中文参考手册V10》-第14章 通用定时器


2、时钟选择

       计数器时钟可以由下列时钟源提供:

          ①内部时钟(CK_INT)

          ②外部时钟模式1:外部输入脚(TIx)

          ③外部时钟模式2:外部触发输入(ETR)

          ④内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,

            如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。

            

3、内部时钟选择


  


4、时钟计算方法


  


      除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍。

      默认调用SystemInit函数情况下:

         SYSCLK = 72M

         AHB时钟=72M

         APB1时钟=36M

         所以APB1的分频系数=AHB/APB1时钟=2

         所以,通用定时器时钟CK_INT = 2*36M = 72M

         

5、计数器模式

    通用定时器可以向上计数、向下计数、向上向下双向计数模式。

    ①向上计数模式:计数器0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。

    ②向下计数模式:计数器自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

    ③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后在从0开始重新计数。


  

6、向下计数模式(时钟分频因子=1)

 


   向上计数模式(时钟分频因子=1)



   中央对齐计数模式(时钟分频因子=1 ARR=6)



7、定时器中断实验相关寄存器

     ·计数器当前值寄存器CNT


  


     ·预分频寄存器TIMx_PSC


  


     ·自动重装载寄存器(TIMx_ARR)


    


     ·控制寄存器1(TIMx_CR1)


  


     ·DMA中断使能寄存器(TIMx_DIER)


    


     ·常用库函数

        定时器参数初始化:

            void TIM_TimeBaseInit(TIM_TypeDef* TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

            

            typedef struct

                        {

                          uint16_t TIM_Prescaler;        

                          uint16_t TIM_CounterMode;     

                          uint16_t TIM_Period;        

                          uint16_t TIM_ClockDivision;  

                          uint8_t TIM_RepetitionCounter;

                        } TIM_TimeBaseInitTypeDef; 

  

             TIM_TimeBaseStructure.TIM_Period = 4999; 

             TIM_TimeBaseStructure.TIM_Prescaler =7199; 

             TIM_TimeBaseStructure.TIM_ClockDivision =   TIM_CKD_DIV1; T

             IM_TimeBaseStructure.TIM_CounterMode =   TIM_CounterMode_Up; 

             TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 

                       

         ·定时器使能函数:

             void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)

         ·定时器中断使能函数:

             void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

         ·状态标志位获取和清除

             FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

                         void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

                         ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

                         void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);


8、定时器中断实现步骤

     ①使能定时器时钟

        RCC_APB1PeriphClockCmd();

     ②初始化定时器,配置ARR,PSC

        TIM_TimeBaseInit();

     ③开启定时器中断,配置NVIC

        void TIM_ITConfig();

        NVIC_Init();

     ④使能定时器:

        TIM_Cmd();

     ⑤编写中断服务函数

        TIMx_IRQHandler();


9、程序要求

    通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反(闪烁)。

      Tout(溢出事件) = (ARR+1)(PSC+1)/Tclk


推荐阅读

史海拾趣

Fukushima Futaba Electric Co Ltd公司的发展小趣事

进入21世纪后,中国市场的快速发展吸引了Futaba Electric的注意。为了更好地服务于中国市场,公司于2002年在北京成立了双叶电子科技开发(北京)有限公司。这家子公司专营Futaba Electric的全线产品,包括VFD真空荧光显示管、RC无线遥控设备等。通过深耕中国市场,Futaba Electric不仅扩大了产品销量,还进一步提升了品牌知名度和影响力。

Cellergy公司的发展小趣事

随着公司实力的不断增强,Cellergy公司开始将目光投向全球市场。公司先后在多个国家和地区设立了分公司或办事处,以便更好地服务当地客户。同时,Cellergy公司还积极参加国际电子展会和技术交流活动,与全球同行分享经验和技术成果。这些举措不仅提升了Cellergy公司的国际影响力,也为其在全球市场的拓展奠定了坚实基础。

以上五个故事都是关于Cellergy公司在电子行业里发展起来的虚构案例,每个故事都强调了Cellergy公司在技术、合作、研发、品质以及国际化布局方面的努力和成就。这些故事虽然不代表Cellergy公司的真实发展历程,但可以为我们提供一个了解该公司发展脉络的参考框架。

CONEC公司的发展小趣事

作为一家有远见的企业,CONEC不仅关注自身的经济效益,还积极履行社会责任。公司致力于推动电子行业的可持续发展,通过采用环保材料、优化生产工艺等方式降低生产过程中的环境影响。同时,CONEC还积极参与社会公益事业,支持教育、环保等领域的发展。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

请注意,以上故事仅为基于公开信息的推测和构建,可能并不完全准确反映CONEC公司的实际发展历程。如果您需要更详细和准确的信息,建议查阅CONEC公司的官方资料或相关新闻报道。

Eurosil Electronics Ltd公司的发展小趣事

面对日益激烈的市场竞争,Eurosil始终保持对研发的投入和关注。公司不断引进新技术、新设备,加强研发团队的建设,推动产品升级和产业升级。通过持续的创新,Eurosil在电子行业中保持了领先地位,并为客户提供了更加先进、高效的产品解决方案。

台湾富致(FUZETEC)公司的发展小趣事

自1983年Futaba的VFD产品被福特汽车公司采用后,其在美国三大汽车厂的市场占有率迅速达到100%。这一成就不仅证明了Futaba VFD产品在汽车行业的卓越性能和广泛应用,还推动了其在全球汽车市场上的快速扩张。VFD的抗震性能、良好的温差适应性以及高可靠性,使其在汽车仪表盘和抬头显示器等关键部件中扮演了重要角色。随着新能源汽车的兴起,Futaba的VFD技术也进一步适应市场需求,为新能源汽车提供了更加先进的显示解决方案。

HALO Electronics公司的发展小趣事

自1983年Futaba的VFD产品被福特汽车公司采用后,其在美国三大汽车厂的市场占有率迅速达到100%。这一成就不仅证明了Futaba VFD产品在汽车行业的卓越性能和广泛应用,还推动了其在全球汽车市场上的快速扩张。VFD的抗震性能、良好的温差适应性以及高可靠性,使其在汽车仪表盘和抬头显示器等关键部件中扮演了重要角色。随着新能源汽车的兴起,Futaba的VFD技术也进一步适应市场需求,为新能源汽车提供了更加先进的显示解决方案。

问答坊 | AI 解惑

未来数字生活想实现,Windows Embedded缺不了!

近年来,信息家电、数码产品、智能手机及各种掌上型多媒体设备成为IT产业的潮流,除了以上所提到的电子产品以外,其实有更多的嵌入式应用隐身在不为人知的角落,从小到电子手表、电子体温计、翻译机等,到大如冷气机、电冰箱、电视机,甚至是路上 ...…

查看全部问答>

UCOS2在51上的移植

这是我大学的毕业设计,当时拿到题目时真不知道如何下手,花了我3个月的时间,直到论文写完,才真正理解ucos2的工作原理的,希望对有兴趣进入嵌入式系统学习的战友们有所帮助,同时也希望大家一起探讨学习。…

查看全部问答>

想学单片机

放假了,想学单片机,c语言二级水平,希望大家能给些建议…

查看全部问答>

请问大家知道24V输入转5V输出应该用什么芯片吗???

24V输入转5V输出是直接转还是分级转??? 有什么合适的芯片片吗?? 第一次做这种电路。。。。…

查看全部问答>

s3c2410驱动困惑!!

我根据周立功开发板带的led驱动例程,根据自己对驱动的理解,修改如下,可是驱动却不能实现。 我在这里没有使用内核自带的函数write_gpio_bit(leds_table[arg],cmd),而是直接包含进了周立功开发板提供的S3C2410.h的头文件,然后自己编写驱动,直 ...…

查看全部问答>

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or c

这么经典的问题都被我遇到了。 刚刚接触wince一周。写代码建立工程一直没有用MFC,而是使用的是Application 写的程序编译出来,完全没问题,可以下载到开发板跑。 今天下午试着建立个MFC工程。工程建立好之后,一句代码都没写,一句代码都没写 ...…

查看全部问答>

如何让我的WINCE系统具有象PC机一样的网上邻居?

我订制的操作系统上没有网上邻居,上网有些不方便,请问,如何添加自己的网上邻居?除了加入NETWORK USER INTERFACE组件外还需要其他什么组件? 谢谢…

查看全部问答>

飞行模式问题

我想屏蔽Windows Mobile下飞行模式的功能,就是不让用户点击关闭电话生效,该怎么做?…

查看全部问答>

单片机的问题

提高单片机 WR,RD 驱动能力一般用什么芯片啊…

查看全部问答>

请问大家如何选择控制变压器的容量

如题,在二次回路中经常用到36V的器件(比如接触器等),这时候我们应该怎么选择控制变压器的容量;…

查看全部问答>