【STM32CubeMX开发】-2.1-TIM_生成一个定时器中断

news2024/10/21 13:58:20

目录

1 Tim定时器的时钟源

2 Tim定时器的配置

2.1 中断配置

3 生成代码

4 测试结果

结尾


1 Tim定时器的时钟源

TIM1的时钟来源自APB1 Timer clocks,时钟树上所有总线频率均设置为了STM32F0能达到的最高频率,此时APB1 Timer clocks = 48MHz。

2 Tim定时器的配置

依次选择Pinout&Configuration -- > Timers -- > TIM1,参数配置如下:

Clock Source:选择Internal Clock内部时钟源。TIMInternal Clock来自APB1 Timer clock(MHz)

Prescaler(PSC – 16 bits value):时钟源分频系数(TIMx_PSCPSC),一个计数的时间长度为48/48MHz = 1微妙;

Counter Mode:(TIMx_CR1中的DIR)Up向上计数,Down向下计数,Center Aligned mode1/2/3;

Counter Period(AutoReload Register – 16 bits value):(TIMx_ARR中的ARR一个定时周期的时间,1000 * 1微妙 = 1毫秒;

Internal Clock Division:(TIMx_CR1中的CKD位)时钟分频因子。定义在定时器时钟频率与数字滤波器使用的采样频率之间的分频比例;

RepetitionCounter:配置重复计数器的值,这里设置为0,表示不使用重复计数功能;

auto-reload preload:(TIMx_CR1中的ARPE位)自动重装载预装载允许位。定义在TIMx_ARR和实际的自动重装载寄存器之间是否设置缓冲器;

Trigger Output (TRGO) Parameters :一般是用来设置用作其他外设的触发源的。比如将Trigger Event Selection选择为Update Event,然后在其他外设比如ADC中配置外部触发源时选择该定时器的触发事件(如果可以的话),这样在定时器产生Update Event时就可以启动外设,实现用定时器来控制外设启动的功能;

2.1 中断配置

NVIC Settings中,选择合适的中断优先级并勾选TIM1的中断使能。

3 生成代码

单击GENERATE CODE,生成代码:通过HAL_TIM_Base_Start(&htim1) 启动TIM1TIM1_BRK_UP_TRG_COM_IRQHandler中断函数间隔500ms被周期调用一次。

Main.c

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  /* USER CODE BEGIN 2 */
  demo_init();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

stm32f0xx_it.c

void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
{
  /* USER CODE BEGIN TIM1_BRK_UP_TRG_COM_IRQn 0 */
  /** 1ms timed interrupt **/
	demo_main();
	
  /* USER CODE END TIM1_BRK_UP_TRG_COM_IRQn 0 */
  HAL_TIM_IRQHandler(&htim1);
  /* USER CODE BEGIN TIM1_BRK_UP_TRG_COM_IRQn 1 */

  /* USER CODE END TIM1_BRK_UP_TRG_COM_IRQn 1 */
}

demo.c

#include "main.h"
#include "demo.h"
#include "tim.h"

#define LED_SWITCH_TIMER       500    // Unit:ms
#define FUNCTION_CALL_CYCLE    1      // Unit:ms

void demo_init(void)
{
    /********************************Start timer TIM1**********************************/
	HAL_TIM_Base_Start_IT(&htim1);       
}

void demo_main(void)
{
    static uint16_t led_timer = 0;
    static uint8_t led_flg = 0;		
	
	  if(led_timer < (LED_SWITCH_TIMER / FUNCTION_CALL_CYCLE))
		{
				led_timer += FUNCTION_CALL_CYCLE; 
		}
	  else
	  {
	      led_timer = 0;
			
				if(led_flg == 0)
				{
					   led_flg = 1;
					
						 HAL_GPIO_WritePin(GPIOB,LED_DO_Pin,GPIO_PIN_RESET);   // ON LED
				}
				else
				{
					   led_flg = 0;
					
					   HAL_GPIO_WritePin(GPIOB,LED_DO_Pin,GPIO_PIN_SET);     // OFF LED
				}	
	  }

}

4 测试结果

LED间隔500ms周期拉高拉低。

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pdf加密怎么弄?8款热门pdf加密工具大盘点,速来收藏!(2024)

在如今&#xff0c;分享pdf文件时确保敏感信息的安全显得尤为重要。如果没有适当的保护措施&#xff0c;这些文件可能会被不法人士访问&#xff0c;从而对您的数据和声誉造成风险。为了避免这种潜在的问题&#xff0c;在Windows操作系统上加密pdf文件就显得非常有必要。如果您不…

vue3 使用 Vue Router实现前端路由控制

vue3 使用 Vue Router实现前端路由控制 **在现代Web应用中&#xff0c;前端路由控制是非常重要的一部分。它可以帮助我们将不同的页面内容展示给用户&#xff0c;同时保持用户在浏览不同页面时的连贯性。本文将介绍如何使用Vue Router来实现前端路由控制。 首先&#xff0c;我…

在Oxygen编辑器中支持数学公式

在编写文档时&#xff0c;经常需要插入公式。虽然将公式作为图片插入到文档中是可以的&#xff0c;但这会使后续的修改变得非常不便。目前&#xff0c;MathML (Mathematical Markup Language) 和 LaTeX 是两种常用的数学公式描述语言&#xff0c;它们各自具有不同的特点和适用场…

Protobuf:消息更新

Protobuf&#xff1a;消息更新 更新字段保留字段未知字段option选项 在开发中&#xff0c;需要对产品进行版本迭代。迭代前后&#xff0c;类的成员可能就会有所改动&#xff0c;一旦类成员改动&#xff0c;那么老版本的对象&#xff0c;新版本可能就无法解析&#xff0c;此时就…

ubuntu中多cuda版本兼容问题

当ubuntu中已经有老版本的cuda时&#xff0c;按正常步骤直接下载新的cuda和cudnn&#xff0c;只需要注意在下载新的cuda版本时&#xff0c;出现“A symlink already exists at /usr/local/cuda. Update to this installation?”&#xff0c;选择“no”&#xff0c;之后按如下的…

【华为HCIP实战课程十二】OSPF网络中1类2类LSA SPF详解,网络工程师

一、OSPF 1类LSA详解 1、通告者(产生LSA的设备):任何一台设备都会产生1类LSA 2、通告的范围:区域内部 3、功能和内容:产生拓扑信息和路由信息 LSA是OSPF链路状态信息的载体 4、每台OSPF路由器使用一条Router-LSA描述本区域内的链路状态信息 Type :LSA类型,Router-L…

Java学习Day45:兰喜村(Redis)

1.redis概念 1.是什么 redis&#xff08;c语言开发的高并发键值对数据库&#xff09;是nosql的一种&#xff0c;是键值存储数据库&#xff1b; 其核心概念是三高&#xff1a;高并发&#xff0c;高可用性和高扩展性&#xff1b; 优点&#xff1a;快速存取高并发 缺点&#…

Echart自定义饼图

const chartOption computed(() > {return {//与容器边距// grid: {// left: 3%,// right: 4%,// bottom: 3%,// containLabel: true// },// 自定义鼠标悬浮显示内容tooltip: {trigger: item,formatter: function (params: any) {return ${params.value} 个},textS…

新手铲屎官提问,如何在双十一选到性价比高的宠物空气净化器

不知不觉就已经迎来了双十一&#xff0c;这一年即将到头了&#xff0c;意味着我养猫已经是第五个年头了。 当初养猫的时候&#xff0c;就看中了长毛类型的猫&#xff0c;因为感觉摸起来会更舒服&#xff0c;美型到舒服确实是舒服了&#xff0c;但是面临的挑战也不少。其中浮毛…

电脑显示d3dcompiler_47.dll缺失如何修复,马上教你6个修复方法

在用电脑的时候&#xff0c;很多人就遇到过一个叫“计算机缺失d3dcompiler47.dll”的错误提示。在详细解读计算机缺失d3dcompiler_47.dll问题时&#xff0c;我们首先需要了解这个文件的作用&#xff0c;以及缺失d3dcompiler_47.dll对系统的影响和解决方法。 一&#xff0c;d3dc…

『网络游戏』数据库增加主角属性【27】

打开数据库设计表 添加字段 修改服务器脚本&#xff1a;GameMsg.cs 修改服务器脚本&#xff1a;DBMgr.cs 运行服务端 运行客户端 - 点击创建角色进入游戏后左上角的主角UI被打开暂未设计 刷新查看数据库信息 本章结束

VHDL基本结构和逻辑示例

VHDL基本结构和逻辑示例 1.VHDL的基本结构 VHDL的基本结构包含了三段&#xff1a; -- library and package -- entity -- architecturelibrary and package&#xff1a;相关库和软件包&#xff08;相当与c语言的头文件&#xff09; entity&#xff1a;实体&#xff08;描述输…

三、Anaconda 的使用

Anaconda 的使用 前言一、Anaconda 环境使用1.1 虚拟环境操作1.2 使用镜像源 二、PyCharm配置Anaconda环境2.1 第一步2.2 第二步2.3 第三步2.4 第四步2.5 第五步2.6 第六步2.7 第七步2.8 第八步 总结 前言 如果在一个环境中&#xff0c;我们做了多个项目的话&#xff0c;那么后…

SHAP 依赖图

SHAP 依赖图 SHAP 依赖图用于可视化单个特征对机器学习模型预测结果的影响&#xff0c;具体来说&#xff0c;x 轴是特征值&#xff0c;y 轴是 SHAP 值&#xff08;度量特征对预测结果的重要性&#xff09;&#xff0c;这些图可以直观地显示出某个特征是对模型预测起正向还是负…

web前端-----html5----用户注册

以改图为例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>用户注册</title> </hea…

计算机网络:数据链路层 —— 扩展共享式以太网

文章目录 共享式以太网共享式以太网存在的问题在物理层扩展以太网扩展站点与集线器之间的距离扩展共享式以太网的覆盖范围和站点数量 在链路层扩展以太网网桥的主要结构网桥的基本工作原理透明网桥自学习和转发帧生成树协议STP 共享式以太网 共享式以太网是当今局域网中广泛采…

uni-app基础语法(一)

我们今天的学习目标 基础语法1. 创建新页面2.pages配置页面3.tabbar配置4.condition 启动模式配置 基础语法 1. 创建新页面 2.pages配置页面 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现&#xff0c;配置项参考pageStyle 我们来通过style修改页面的…

CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践技术

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力&#xff08;Net Primary Productivity, NPP&#xff09;是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

C语言:在Visual Studio中使用C语言scanf输入%s出现的栈溢出问题

学了C之后就很少使用C语言了&#xff0c;今天帮同学解答C语言问题&#xff0c;遇到了一个我以前没有遇到过的问题。 一、问题描述 先看以下代码&#xff1a; #include<stdio.h> int main() {char str[100] { 0 };scanf_s("%s", str);printf("%s",…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…