历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2019年02月12日 | STM32-基本定时器Timer的使用

2019-02-12 来源:eefocus

前言:

最近在调试STM32L152芯片的定时器功能,本文总结下STM32L152芯片基本定时器的使用方法。


硬件平台:STM32L152


软件平台:keil v5+cubeMX


函数库:HAL库


基本定时器使用方法

下面简单讲述一下STM32L152的定时器使用步骤。


1.使用CubeMX对定时器进行配置,如定时器预分频值,计数值,定时器的触发方式等。


2.下面详细解析相关的代码;


TIM_HandleTypeDef htim3;

 

 void TIM3_Init(void)

{

 

 

  TIM_ClockConfigTypeDef sClockSourceConfig;

  TIM_MasterConfigTypeDef sMasterConfig;

 

  htim3.Instance = TIM3;

 

  htim3.Init.Prescaler = 32000-1;//预分频值,本例使用外部8MHz,倍频后是32M,32000分频后为1kHz,预分频值为32000-1,计算公式为:CK_INT/(TIM_Perscaler+1)

 

  htim3.Init.CounterMode = TIM_COUNTERMODE_UP; //上升计数

  htim3.Init.Period = 1000-1;//计数值,1kHz即计数1000为1s,本例定时1s,计数值为1000-1

  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

 

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; //设置定时器时钟为内部时钟

  if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

 

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  HAL_TIM_Base_Start(&htim3);//启动定时器

  HAL_TIM_Base_Start_IT(&htim3);//启动定时器中断

 

}

定时器的时钟使能和中断优先级在文件stm32l1xx_hal_msp.c中定义;


void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)

{

 

 

  if(htim_base->Instance==TIM3)

  {

  /* USER CODE BEGIN TIM3_MspInit 0 */

 

 

  /* USER CODE END TIM3_MspInit 0 */

    /* Peripheral clock enable */

    __HAL_RCC_TIM3_CLK_ENABLE();

    /* TIM3 interrupt Init */

    HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);

    HAL_NVIC_EnableIRQ(TIM3_IRQn);

  /* USER CODE BEGIN TIM3_MspInit 1 */

 

 

  /* USER CODE END TIM3_MspInit 1 */

  }

 

 

}

下面是定时器的中断函数,定时时间到,标志位置位:


void TIM3_IRQHandler(void)

{

    HAL_TIM_IRQHandler(&htim3);

    TIM3_Flag=SET;

}

在主程序中添加自己定义的事情:


  while(1)

  {

 

    if(TIM3_Flag==SET)

    {

 

    TIM3_Flag=0;//清除标志

    //添加自己定义的代码

    

    。。。

    }

 

}

 

推荐阅读

史海拾趣

Amphion Semiconductor Ltd公司的发展小趣事

Amphion Semiconductor Ltd 成立于 1995 年,是一家总部位于英国剑桥的半导体设计公司,专注于数字信号处理器(DSP)和嵌入式系统解决方案。以下是关于 Amphion Semiconductor Ltd 公司发展的五个相关故事:

  1. 创立与早期阶段:Amphion Semiconductor Ltd 公司由 David Belbin 和 Richard Smith 共同创立于 1995 年,起初专注于开发用于音频和视频处理的数字信号处理器。公司总部设立在英国剑桥,这个地区是全球半导体设计和科技创新的重要中心之一。

  2. 技术创新与产品发展:Amphion Semiconductor Ltd 公司在数字信号处理领域进行了持续的技术创新和产品开发。公司的DSP技术在音频和视频处理、通信、图像处理等领域得到了广泛应用。除了开发自有的DSP芯片,公司还提供定制化的嵌入式系统解决方案,满足客户特定的应用需求。

  3. 业务扩展与市场拓展:随着技术的成熟和市场需求的增长,Amphion Semiconductor Ltd 公司逐渐扩大了业务规模,并在国际市场上取得了一定的份额。公司与全球各种行业的客户建立了合作关系,包括消费电子、汽车、通信、工业控制等领域,拓展了市场覆盖范围。

  4. 收购与合并:Amphion Semiconductor Ltd 公司在发展过程中进行了一些收购和合并,以扩大业务范围和提升竞争力。其中,2013年公司被丹麦半导体公司 Nordic Semiconductor 收购,成为其子公司,为 Nordic Semiconductor 扩展了音频和视频处理领域的技术能力。

  5. 变革与发展方向:Amphion Semiconductor Ltd 公司随着技术和市场的发展不断调整发展方向,加大在新兴领域的投入和研发力度。公司积极探索人工智能、物联网、自动驾驶等领域的应用,致力于提供更加智能化和高效的嵌入式系统解决方案,以适应不断变化的市场需求。

这些故事展示了 Amphion Semiconductor Ltd 公司从创立初期到如今在技术创新、产品发展、业务拓展、收购与合并以及发展方向等方面取得的重要进展。

AdaptivEnergy公司的发展小趣事

AdaptivEnergy是一家专注于能量收集和管理技术的公司,以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展: AdaptivEnergy成立于2007年,总部位于美国马里兰州的克拉克斯堡市。公司的创始人是一群在能源管理和微型能源收集技术领域具有丰富经验的工程师和科学家。初期,公司主要专注于研发微型能源收集器件,旨在利用环境中的振动、热能等能源,为便携设备提供持续的电源支持。

  2. 技术创新与专利保护: AdaptivEnergy在能量收集和管理领域取得了多项技术突破,并获得了相关的专利保护。公司开发的微型能量收集器件具有高效、小型化和低成本的特点,广泛应用于智能手机、传感器、医疗设备等领域。同时,公司还不断改进其技术,并积极寻求新的技术创新和专利保护,以保持竞争优势。

  3. 产品推出与市场应用: 随着技术的成熟和产品的不断完善,AdaptivEnergy推出了一系列的微型能量收集器件和解决方案。这些产品可以通过环境中的振动、光照、温差等能源源源不断地为设备提供电力支持,解决了传统电池供电存在的限制和问题。这些产品在便携式电子设备、无线传感器网络、智能健康监测等领域得到了广泛应用。

  4. 市场拓展与合作伙伴关系: AdaptivEnergy积极拓展国内外市场,并与各类客户和合作伙伴建立了稳固的合作关系。公司与电子设备制造商、系统集成商、科研机构等进行合作,共同开发定制化的能量收集解决方案,满足不同客户的需求。同时,公司还与行业协会、学术界等建立合作关系,共同推动微型能量收集技术的发展和应用。

  5. 未来展望与持续创新: 作为一家专注于微型能量收集技术的领先企业,AdaptivEnergy将继续致力于持续创新和技术提升。公司将继续投入研发资源,推出更加高效、可靠的微型能量收集器件和解决方案,以满足日益增长的市场需求。未来,AdaptivEnergy将继续在能量收集和管理领域发挥领先优势,为客户提供更加智能、便携的能源解决方案。

Broadband公司的发展小趣事

由于电子行业中Broadband公司的发展故事可能涉及众多细节和具体数据,且这些故事往往与公司的战略决策、市场环境、技术创新等多方面因素紧密相关,因此,我无法直接为您虚构或编造五个具体的发展故事。不过,我可以为您提供一种可能的框架或思路,帮助您了解如何构建这样的故事。

在构建Broadband公司的发展故事时,您可以考虑以下几个方面:

  1. 公司背景与初创阶段:描述公司的成立背景,包括创始人、初始资金、技术基础等。讲述公司如何抓住市场机遇,推出首款产品或服务,并在早期市场中获得一定的份额。

  2. 技术创新与产品升级:描述公司在发展过程中如何通过技术创新不断提升产品性能和服务质量。可以提及公司在研发方面的投入、取得的专利成果,以及这些创新如何转化为市场竞争力。

  3. 市场拓展与合作:讲述公司如何逐步扩大市场份额,包括进入新的地区市场、拓展应用领域等。同时,可以提及公司与其他企业或机构的合作,如产业链上下游的整合、战略合作等。

  4. 应对市场挑战与竞争:分析公司在发展过程中遇到的市场挑战和竞争压力,如竞争对手的崛起、政策调整等。描述公司如何调整战略、优化运营,以应对这些挑战。

  5. 未来展望与战略规划:基于当前的市场环境和公司实力,展望公司的未来发展前景,包括可能的市场趋势、技术方向等。同时,描述公司的战略规划,如扩大产能、拓展新业务领域等。

在构建这些故事时,请确保基于事实进行描述,避免夸大或缩小事实。您可以查阅相关公司的官方资料、行业报告、新闻报道等,以获取准确的信息和数据。同时,注意保持故事的连贯性和逻辑性,使读者能够清晰地了解公司的发展历程和现状。

希望这个框架能够帮助您构建出符合要求的Broadband公司的发展故事。如果您需要更具体的帮助或建议,请随时告知。

ELEMENT14公司的发展小趣事

ELEMENT14的在线社区是其成功的关键因素之一。公司投入大量资源建设和发展在线社区,吸引了大批电子设计工程师和采购专员的参与。在这个平台上,工程师们可以分享经验、交流技术、解决问题。ELEMENT14还通过社区收集客户反馈和需求,不断优化产品和服务。这个活跃的在线社区不仅增强了客户黏性,也为公司提供了宝贵的市场信息。

Ark-Les Connectors公司的发展小趣事

随着公司规模的扩大和产品线的丰富,Ark-Les Connectors公司开始积极寻求市场拓展。公司制定了针对不同区域和行业的市场拓展策略,通过参加国际电子展会、建立销售网络、开展合作伙伴计划等方式,不断扩大品牌影响力。同时,公司还根据市场需求调整产品策略,推出定制化解决方案,满足不同客户的个性化需求。这些举措使得Ark-Les的市场占有率稳步提升,公司业绩也实现了稳步增长。

台湾双羽公司的发展小趣事

在成为全球领先的电子企业之后,富士通并没有停下脚步。公司开始积极拓展海外市场,将先进的技术和产品带到世界各地。通过在全球各地设立分支机构、与当地企业建立合作关系等方式,富士通成功地将自己的业务版图扩展到了全球60多个国家和地区。这一过程中,富士通不仅为当地市场带来了先进的技术和产品,也促进了全球电子产业的交流与合作。

问答坊 | AI 解惑

FPGA设计流程简介及设计注意事项

FPGA设计流程简介及设计注意事项…

查看全部问答>

ADM7001网络接口电路图

ADM7001网络接口电路图 …

查看全部问答>

小功率mi-ni电脑插电时,偶然不能开机

在小功率电脑开机时,先插入Adapter,在按开机键,怎么有时会开不了机?是电源问题吗?高手帮忙给点意见,谢谢!!!!…

查看全部问答>

教你选择适合自己的电烙铁

电烙铁一般分为内热式、外热式和速热式,功率由20W、25W,大至几百瓦。购买和选用时要注意,外热式电烙铁制造工艺复杂、效率低、价格高,速热式的由于大变压器拿在手上,操作困难;内热式电烙铁结构简单,热效率高,轻巧灵活,当为首选。用作装修晶 ...…

查看全部问答>

求助:H桥电路中桥臂直通的问题!

求助:H桥电路中桥臂直通的问题! 在H桥电路中,即使驱动电路设置了死区,但如果工作频率很快,也会引起H桥的桥臂直通,进而烧坏mos管。请问哪位大侠知道解决的办法,小弟在这里谢了先!…

查看全部问答>

【EEWORLD带你DIY】示波器V2.0信号板及人机界面板打样归来~~

活动介绍:使用Altera Cyclone III FPGA Stater 进行DIY示波器进程: https://www.eeworld.com.cn/zhuanti/20100703altera/20100703altera.html   信号板及人机界面板打样归来,上图     …

查看全部问答>

wince6.0 + nand, 各位的nand读写速度有多少啊?谢谢

我这边读4MB/S, 写大概是1.4MB/s, 太慢了,正在想办法提高…

查看全部问答>

一个简单程序(UART),不晓得问题出在那里,请大家帮哈忙!

以下代码是UART0操作:收到上位机的字符然后转送回去。结果是能收到,但是是错误的,如发 01 收到 C0,请大家看看是那里出错了,小弟刚开始用430。 /**************************************************** 说明:串口测试程序 波特率:9600bps ...…

查看全部问答>

正弦波输出(幅度、频率可调) 急求

基于单片机设计正弦波发生器 要求 幅度 频率可调 急求啊 要是C语言程序…

查看全部问答>

Hercules DIY 五:对中断的疑感

Hercules DIY 五:对中断的疑感                                按照计划这周应是解决程序,由于我的项目是报警器我想用管脚中 ...…

查看全部问答>