历史上的今天
返回首页

历史上的今天

今天是:2024年12月10日(星期二)

正在发生

2018年12月10日 | stm32 基本定时器最简单定时配置

2018-12-10 来源:eefocus

最近用到了定时器的定时功能,了解了下,stm32的定时器功能很强大,东西也挺多的,datasheet里也说了一大段,这个我就不详说了,这儿只说明下如何配置最简单的定时功能配置。


环境说明:MCU:stm32F4系列,用的是通用定时器TIM3


首先要知道的是TIM3 是挂载到APB1总线上的,这点详见STM32F417xx_datasheet-P.19,有个框图叫Device overview,算了,还是截个图 


这里写图片描述


而APB1 的时钟是多少呢?这个得看你自己配置的多少了,一般是在SetSysClock()函数里,我这儿是系统时钟的4分频,系统时钟这儿为168MHz,所以APB1上的时钟为42MHz,这儿不要以为TIM3的时钟就是42MHz了,因为APB1到TIM3还要经过一个倍频器,这个倍频器只有当前面系统时钟到APB1的分频系数不为1时才起作用,而我们前面说了APB1是系统时钟4分频得到的,故这儿倍频器生效,所以TIM3的时钟为APB1的倍频,即84MHz。


ok,得到了定时器的输入时钟,我们配置定时器的简单功能其实就只需要两个参数:预分频数和自动重载值


Tout = ((arr+1)*(psc+1))/Tclk;


其中arr就是自动重装值,psc为预分频值,Tclk就是定时器的时钟。 


比如我想要1s钟的定时器,就可以设定:arr =9999;psc=8399; 


这儿要注意下arr和psc的取值范围,前者是u32 的,后者是u16的。


  NVIC_InitTypeDef NVIC_InitStructure;


  // TIM3 clock enable 

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);


  // Enable the TIM3 gloabal Interrupt 

  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x3;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x3;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);


  TIM_TimeBaseStructure.TIM_Period          = arr;

  TIM_TimeBaseStructure.TIM_Prescaler       = psc;

  TIM_TimeBaseStructure.TIM_ClockDivision   = 0;

  TIM_TimeBaseStructure.TIM_CounterMode     = TIM_CounterMode_Up;

  //向上计数模式,就是从0计数到arr,计数到arr时,产生一个TIM_IT_Update中断,还有其他中断可选


  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


  /* TIM Interrupts enable */

  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);


  /* TIM3 enable counter */

  TIM_Cmd(TIM3, ENABLE);


这样定时器就开始工作了,然后再写上中断处理函数,


void TIM3_IRQHandler(void)

{

    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)

    {

        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

        //your code

    }

}


至此,TIM3的定时功能就完成了,由psc和arr值,我们可以设定想要的定时时间。 


当然,这只是定时的一个很简单的功能,还有很多酷炫的东西,如有错误,还请指正!


推荐阅读

史海拾趣

C&K公司的发展小趣事

为了进一步加强在全球市场的地位,C&K在2011年进行了一次重要的收购。这次收购不仅扩大了公司的业务范围,还提升了其设计和制造能力。通过这次收购,C&K得以在全球范围内提供更广泛的产品和服务,进一步巩固了其在电子行业中的领先地位。

淩志比高公司的发展小趣事

为了进一步提升公司的知名度和影响力,淩志比高开始注重品牌建设和市场推广。公司积极参与行业展会、举办产品发布会等活动,与客户和合作伙伴建立了紧密的联系。同时,淩志比高还通过广告宣传、社交媒体营销等方式,提升了品牌知名度和美誉度。

Allied Wire & Cable Inc公司的发展小趣事

Allied公司深知客户是公司发展的核心动力。因此,公司始终将客户服务放在首位,为客户提供全方位、个性化的服务支持。无论是产品咨询、技术支持还是售后服务,Allied公司都力求做到最好,赢得了客户的信任和好评。同时,公司还积极与合作伙伴建立长期稳定的合作关系,共同开拓市场,实现互利共赢。

岑科(CENKER)公司的发展小趣事

岑科公司成立于2001年,初期主要从事电子元器件的贸易业务。在创始人蔡旌章的带领下,岑科以优质的服务和灵活的运营策略,在国内外市场上赢得了良好的口碑。这一时期,岑科的服务对象主要是海内外的电子元器件需求商,通过精准把握市场需求和优质的产品供应,逐渐在电子元器件贸易领域站稳了脚跟。随着业务的不断拓展,岑科开始思考如何进一步提升自身的竞争力,以实现更长远的发展。

Cosel公司的发展小趣事

在市场竞争日益激烈的情况下,品牌形象的塑造对于企业的发展至关重要。1992年,公司名称变更为COSEL株式会社,这一变革不仅提升了公司的品牌形象,也展示了公司向更高目标迈进的决心。同时,公司还导入了V.I(视觉整合),通过统一的视觉形象传达公司的品牌理念和价值观。这些举措使得Cosel公司在客户心中留下了深刻的印象。

Advanced Components Industries Inc公司的发展小趣事

Advanced Components Industries Inc(以下简称ACI)在电子行业的崛起,始于一次关键的技术突破。公司研发团队成功开发出一种新型的高效能电子元件,这一创新不仅提高了电子设备的性能,还降低了能耗。这一成果迅速吸引了市场的关注,ACI的订单量激增,公司开始迅速扩张。

随着技术的不断完善和市场的认可,ACI逐渐在电子元件领域建立了自己的品牌地位。公司不断投入研发,推出了一系列具有竞争力的产品,逐渐在行业中崭露头角。

问答坊 | AI 解惑

OLED技术的现在和未来

在2008年北京奥运会开幕式上,大量使用的LED(发光二极管)技术将开幕式表演装点得美轮美奂。“鸟巢”会场中央地板的LED屏幕、表演者身上的LED装饰灯、空中升起的LED奥运五环、“鸟巢”会场看台上的大型LED屏幕等等,都成了举世关注的焦点。   科 ...…

查看全部问答>

ALTERA DE2开发板一個网路芯片DM9000A的应用范例

ALTERA DE2开发板一個网路芯片DM9000A的应用范例 [ 本帖最后由 unbj 于 2010-5-12 10:58 编辑 ]…

查看全部问答>

为什么8051的P0口可驱动8个LS型TTL负载,而P1口只可驱动4个?

    为什么8051的P0口可驱动8个LS型TTL负载,而P1口只可驱动4个?这个驱动数量是指低电平时P0口OD门能承受8个LS型TTL负载的电流还是指高电平时8个LS型TTL负载不会把电平拉低?…

查看全部问答>

中继转发

什么叫中继转发和中继深度?…

查看全部问答>

求助:程序运行时间与其所在的ROM地址有关!?

偶刚刚接触STM32,发现了两个令人费解的问题,请香主及各位帮忙(使用Keil uVision3 V3.55A):1、中断子程序的起始地址影响中断正常运行:   我将I2C2设成主机,并使用中断方式与I2C1通信,起初一切正常,这时I2C2中 ...…

查看全部问答>

STM8开发环境

STM8是ST推出的新一带8bit MCU,采用三级流水线,最大运行频率20MIPS@24MHz。具体资料请到STM8S的官方网页下载:http://www.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=113 这里就不罗嗦了。 工作的原因很早就有接触STM ...…

查看全部问答>